diff --git a/.gitignore b/.gitignore index c6627262ff37847d0153709845346e12f81e6a2b..5c48cf62f21bca0f46210f68a359504ee38a4334 100644 --- a/.gitignore +++ b/.gitignore @@ -222,3 +222,4 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/**/*.vsum /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/output /Vecto3GUI2020Test/TestData/output +/VectoCommon/VectoCommon/InputData/BusInputData.cd diff --git a/Documentation/MultiStepTool/1-introduction/0_start.md b/Documentation/MultiStepTool/1-introduction/0_start.md new file mode 100644 index 0000000000000000000000000000000000000000..a09a3c02b3a2dd56f9fb6e4d0622fcf9f4dff93c --- /dev/null +++ b/Documentation/MultiStepTool/1-introduction/0_start.md @@ -0,0 +1,22 @@ +User Manual - MultiStepTool +==================================== +\ +\ + +23. November 2021 + + + +This User Manual consists of 3 Parts: + +- [User Interface Overview](#user-interface-overview): + : Gives a short overview of the UI. +- [Create a new Job](#create-a-new-job): + : Describes how to create new job for the + - General Case + - Special Case I + - Special Case II +- [Create a Step Input File](#create-a-step-input-file): + : Describes how to create a new step input file. +- [Airdrag](#airdrag): + : Describes how to load an airdrag component. diff --git a/Documentation/MultiStepTool/1-introduction/A_ui_intro.md b/Documentation/MultiStepTool/1-introduction/A_ui_intro.md new file mode 100644 index 0000000000000000000000000000000000000000..16d298dd34d865b43418c9ab844ab7dfe004081e --- /dev/null +++ b/Documentation/MultiStepTool/1-introduction/A_ui_intro.md @@ -0,0 +1,141 @@ + +# User Interface Overview +{width=70%}\ +\ + + + +The main UI consists of three tabs, which are descriped in the following chapters + +- **[Jobs](#jobs)**\ + Add, simulate and edit jobs and input files. + +- **[Settings](#settings)**\ + Simulation and GUI Settings. + +- **About**\ + About VECTO. + + + + + +## Jobs +The Jobs tab shows an overview of currently loaded jobs and allows the loading, editing and simulation of jobs. +Note: Also jobs that cannot be edited with the GUI (i.e Primary Input Files), can be loaded and simulated. + + + +{width=100%}\ +\ + + + +### Simulation and Job Commands + +#### Simulation: +Starts the simulation of all jobs that are marked for simulation. To mark a job for simulation, tick the checkbox in the left column of the job list. (see [Start Simulation](#start-simulation)) + + +#### Stop: +Stops the current simulation, this operation can take some time and lead to error messages in the message view. + +#### Up: +Moves the currently selected job up + +#### Down: +Moves the currently selected job down + + + +### Joblist +The joblist shows the name, type and file location of all currently loaded jobs and input files. + +#### Adding Jobs +New jobs from existing files can be added to this list with the buttons in the [File Section](#file-section), Drag & Drop or using **File -> Load File**. New Jobs can be created using **File -> New File** (explained in more detail in the [Create a new Job](#create-a-new-job) section). + +#### Edit Jobs +A job can be edited by double clicking or using the **Edit Job** button in the [File Section](#file-section). +It is also possible to show the source file of the currently selected job in the explorer or in the default editor using **Edit -> Source File -> Show in Explorer** or **Edit -> Source File -> Open in Editor**. + +#### Start Simulation +By ticking the checkbox in the first column, a job is marked for simulation. +When a job is simulated the jobfile is loaded again from the disk, therefore only saved changes are considered in the simulation. + +If no simulation is possible, a small icon is displayed instead of the checkbox (as shown in the picture below). +There are many reasons why a job cannot be simulated, clicking the icon shows additional information. + +{width=70%}\ +\ + + + +### File Section +- **Load File**: + Load a new job from a .xml or .vecto file. +- **Edit**: + Edit the selected job. +- **Remove**: + Remove the selected job from the list. + + + + + +### Messages + + +{width=100%}\ +\ + + +The message section display status messages from the simulation. Warnings are displayed in yellow, and errors in red. When a simulation is completed the result files can be displayed in an editor or in explorer. + +{width=100%}\ +\ + + + + +The progress bar on top shows the total simulation progress. +The status bar shows the progress and duration of the total simulation and the progress of the individual simulation runs. + +When running a chained simulation (Special Case I, Special Case II), it's possible that another simulation is started automatically after the first step has completed, therefore the progress is not one hundred percent accurate. + +## Settings + + +{width=100%}\ +\ + + +### 1 Default directories +#### Default input path +Specifies the initial directory for loading and saving files. Note: After loading or saving a file, the filedialog uses the last used directory as initial directory. + +#### Default output path +Specifies the output directory for simulation results. + +### 2 Simulation settings +Various simulation settings can be found here. + +#### Serialize Vecto Run Data + +??? + +#### ModalResults1Hz +If selected, the modal results (.vmod file) will be converted into 1Hz after the simulation. This may add certain artefacts in the resulting modal results file. + + +#### Validate +Enables or disables internal checks if the model parameters are within a reasonable range. When simulating a new vehicle model it is good to have this option enabled. If the model parameters are from certified components or the model data has been modified slightly this check may be disabled. The VECTO simulation will abort anyways if there is an error in the model parameters. Enabling this option increases the simulation time by a few seconds. + + +#### Actual Modal Data + +???? + +#### Write Modal Results +Toggle output of modal results (.vmod files) in declaration mode. A Summary file (.vsum) is always created. + + diff --git a/Documentation/MultiStepTool/1-introduction/B_new_job.md b/Documentation/MultiStepTool/1-introduction/B_new_job.md new file mode 100644 index 0000000000000000000000000000000000000000..b380ae951a7ea7deab49a32745fce3360b5e2059 --- /dev/null +++ b/Documentation/MultiStepTool/1-introduction/B_new_job.md @@ -0,0 +1,117 @@ +# Create a new Job + +New jobs can be created via the file menu. + +{width=70%}\ +\ + +Three different types of jobs can be created with the multistep tool: + +- **[Interim/Completed Job](#new-interimcompleted-job---general-case)** +- **[Primary Job with Interim Input](#new-primary-job-with-interim-input---special-case-i)** +- **[Complete Job](#new-complete-job---special-case-ii)** + +They are described in more detail in the following chapters. + + +## New Interim/Completed Job - General Case +The general case is applicable to interim manufacturing steps and completed manufacturing steps. Required inputs in these steps are the VIF from the previous step and the input parameters of the current step. The latter can be entered via the graphical user interface. + +{width=70%}\ +\ + + +{width=100%}\ +\ + + +### 1 Load VIF from previous step +To create a VIF for the current step, the VIF from the previous step has to be loaded. +After the VIF is loaded, the consolidated data from the previous steps is displayed and the input data for the current step can be added. + +Note: It is also possible to directly add the VIF from the previous step to the job list. + +### 2 Load input for current step (optional) +Instead of editing the input data for the current step manually, it is also possible to import previously saved input parameters. The input parameters can be saved during the creation of a VIF (see [Save and Close](#save-and-close)) or can be created using **File -> New File -> Create Interim/Completed Input** (see [Create a step input file](#create-a-step-input-file)). + +### 3 The input data is split into three components. +- **Vehicle** + Contains the main vehicle parameters (manufacturer, model, masses, seats, dimensions, ADAS etc.) + +- **Airdrag** + Allows the loading of an airdrag component file, and displays the consolidated airdrag data from the previous steps. For more information see [Airdrag](#airdrag) + +- **Auxiliaries** + Contains the paremeters concering auxiliaries (HVAC, LED-Lights etc.). + +### 4 Mandatory input fields for every simulation step. +At the interim and completed step most input parameters can be provided individually. Four input parameters are mandatory (Manufacturer, Manufacturer Address, and VIN). + +### 5 Consolidated Data +The third column is readonly and shows the consolidated data from the previous steps. These are currently applicable values for the simulation. +In case of the first interim step of course no previous values are available and therefore nothing is shown. + +### 6 Enable editing +To edit a parameter in the current step, the editing has to be enabled by checking the corresponding checkbox. +A special case is editing the input parameters that have to be provided as a group (i.e., dimensions, passenger count, ADAS). If the editing for one parameter of this group is enabled, all parameters from the group need to be provided. + + +### 7 Current step input Data +In this column the input data of the current step is displayed, and can be edited. The entries are checked with regard to the data type. The entered data is available and can be edited as long as VECTO wasn't closed and the job wasn't removed from the job list. +In case a mandatory input field is empty, or the value provided by the user is invalid the input element is highlighted with a red border. To remove an entry from the current step uncheck the corresponding checkbox. + +### 8 Save and Close +- **Save Input As ...**:\ + Saves the input of the current step to a new file. +- **Save Input**: \ + Saves the input of the current step to the loaded input file. +- **Save as new VIF**: \ + creates a new VIF and adds it to the job list. If 'Vehicle Declaration Type' is set to 'Final' and all required parameters are present, the file can directly be simulated. +- **Close**:\ + Closes the window. Note: As long as VECTO is open and the job is not removed from the job list, unsaved changes remain in the job for further editing. + + +## New Primary Job with Interim Input - Special Case I +If the manufacturer of the primary vehicle also adds certain components of the completed step (e.g., HVAC compressor), it is required that the VIF created at the primary step already contains the provided input parameters of the completed step. Therefore, at the primary step the input consists on the one hand of the input XML for the primary vehicle and on the other hand the XML with parts of the completed vehicle. + +{width=70%}\ +\ + + + +To create primary job with interim input create new job with **File -> New File -> New Primary Job with Interim Input** +The job is automatically added to the job list for further editing, but simulation is only possible when the job is saved. + +{width=70%}\ +\ + + + +### 1 Load primary input file +In the first simulation step the primary input is simulated and an intermediate VIF and a MRF are created. The step input is then added and the resulting VIF is written to disk. + + + +### 2 Select step input file +Select the step input that should be applied in the first manufacturing step. + +Note: If an exempted primary input is loaded, the step input has also be for an exempted vehicle. + +### 3 Save and Close +After saving the file the job can be simulated. + +Note: If the applied step input is completed and marked as "final", VECTO automatically starts the simulation (as in Special Case II). + + +## New Complete Job - Special Case II +If a bus is produced and homologated in a single step (“completeâ€) it is required that the simulation of the whole vehicle is done in one VECTO invocation, applying the factor method. VECTO in this case creates the MRF of the primary step, the MRF of the completed step, the VIF of the first manufacturing step with the complete vehicle information, and the CIF. Thus, the input consists of both, the input XML for the primary vehicle and the XML with all parameters of the completed vehicle. + +{width=35%}\ +\ + + +To create a job for Special Case II, select **File -> New File -> New Complete Job**, the further steps are identical to [Special Case I](#new-primary-job-with-interim-input---special-case-i). + +Note: If the VIF resulting from the primary input and the step input, cannot be simulated, add the resulting VIF to the job list and click the info icon to get additional information. + + diff --git a/Documentation/MultiStepTool/1-introduction/C_new_step_input.md b/Documentation/MultiStepTool/1-introduction/C_new_step_input.md new file mode 100644 index 0000000000000000000000000000000000000000..98babd8cf529070f1d1f76a13b7d3496243e5840 --- /dev/null +++ b/Documentation/MultiStepTool/1-introduction/C_new_step_input.md @@ -0,0 +1,71 @@ +# Create a step input file +As mentioned before it is possible to load step input files when creating new jobs. +Apart from saving the step input while creating a VIF, there is also the possibility to create the step input without a VIF. + +To create a new step input file select **File -> New File -> Create Interim/Completed Input**. + + +{width=70%}\ + + +It is possible to create input files for + +- [Non exempted vehicles](#non-exempted-step-input) + +- [Exempted vehicles](#exempted-step-input) + +## Non exempted step input + +When creating a new step input, it is automatically added to the job list for further editing. + +{width=70%}\ + + +The editing of a step input is very similar to the editing of the current step when creating a new VIF, the only difference is that there is no consolidated input data available. +### 1 Mandatory fields +These field are mandatory for every manufacturing step. +Mandatory fields don't have a checkbox and are marked red while empty. + +### 2 Enable editing +To edit an optional parameter, this checkbox has to be ticked. + +### 3 Parameters for step input +In this column the input data of the current step is displayed, and can be edited. The entries are checked with regard to the data type. The entered data is available and can be edited as long as VECTO wasn't closed and the job wasn't removed from the job list. +In case a mandatory input field is empty, or the value provided by the user is invalid the input element is highlighted with a red border. To remove an entry from the current step uncheck the corresponding checkbox. + +### 4 Save and Close + +Save the input data to .xml, the data will still be editable via the job list as long as Vecto was not closed and the file was not removed from the joblist. + +## Exempted step input +The process for creating an exempted step input are the same as for [non exempted input files](#non-exempted-step-input). + + +# Airdrag +In the **Airdrag** section the consolidated airdrag data is shown and an airdrag component file can be loaded as input for the current step. + +{width=70%}\ +\ + +**1 Load Airdrag Component File** +To set the airdrag component for the current step, it has to be loaded from an existing airdrag component file. To remove the data from the current step, click the trash icon. + +**2 Consolidated Airdrag Data** +In this section the consolidated airdrag data from the previous manufacturing steps is displayed. + +**3 Current Step Airdrag Data** +In this section the airdrag data from the current step is displayed, the values cannot be edited directly in the GUI. + + +Contrary to all other components, for air drag it is defined that in case standard values shall be used for a particular vehicle, no component input data shall be provided. In this case VECTO automatically allocates the standard values applicable for the particular vehicle group in the simulations. Assuming an interim manufacturer mounts the body of the complete bus and provides measured air-drag data, this is written to the VIF. In case the body is modified in a later manufacturing step in such a way that the measured air-drag data is no longer applicable but no updated measurement data is available the standard value has to be applied. (learn more in [Airdrag Modified Multistep](#airdrag-modified-multistep)). + + +## Airdrag Modified Multistep +When airdrag data has been provided in any previous simulation step the **Airdrag Modified Multistage** parameter can be set in the *Vehicle* section, if no airdrag data has been provided in previous steps this parameter is hidden. + +All manufacturing steps after the one where the air-drag component was added need to state whether modifications have been made that affect the air-drag. + +- In case no modifications were made, “AirdragModifiedMultistep†has to be set to false and the previous air-drag component is used. +- In case modifications were made, “AirdragModifiedMultistep†has to be set to true. The interim manufacturer can provide a new measured air-drag component to be used for the simulation. In case no updated measurement is provided VECTO applies the standard values. In the VIF this is indicated by using a special XML type for the air-drag component. + + diff --git a/Documentation/MultiStepTool/Dockerfile b/Documentation/MultiStepTool/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..c1516c45291fb9e1557a3bc72f549eaf4da270cd --- /dev/null +++ b/Documentation/MultiStepTool/Dockerfile @@ -0,0 +1,7 @@ +FROM ubuntu:18.04 +RUN apt-get update +RUN apt-get -y install texlive +RUN DEBIAN_FRONTEND=noninteractive apt-get -y install texlive-latex-extra +RUN apt-get -y install wget +RUN wget https://github.com/jgm/pandoc/releases/download/1.19.1/pandoc-1.19.1-1-amd64.deb +RUN dpkg -i ./pandoc-1.19.1-1-amd64.deb \ No newline at end of file diff --git a/Documentation/MultiStepTool/MultiStepToolHelp.html b/Documentation/MultiStepTool/MultiStepToolHelp.html new file mode 100644 index 0000000000000000000000000000000000000000..a723cdaaacdc25f55acc93a70115a999c79679ca --- /dev/null +++ b/Documentation/MultiStepTool/MultiStepToolHelp.html @@ -0,0 +1,453 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta name="generator" content="pandoc" /> + <title></title> + <style type="text/css">code{white-space: pre;}</style> + <link href="data:text/css;charset=utf-8,body%20%7B%0Aheight%3A%20100%25%3B%0Amin%2Dheight%3A%20100%25%3B%0Afont%2Dfamily%3A%20Calibri%2C%20sans%2Dserif%3B%0A%7D%0A%2Esection%2Elevel1%20%7Bpadding%2Dleft%3A336px%7D%0Anav%2C%20%23TOC%20%7B%0Aposition%3A%20fixed%3B%0Awidth%3A%2021em%3B%0Aleft%3A%200px%3B%0Atop%3A%203%2E5em%3B%0Abottom%3A%202em%3B%0Abackground%2Dcolor%3A%20%23eee%3B%0Aoverflow%3A%20scroll%3B%0A%7D%0A%23HEADER%7B%0Atop%3A%200px%3B%0Aleft%3A%201px%3B%0Aborder%2Dbottom%2Dstyle%3A%20solid%3B%0Aborder%2Dbottom%2Dwidth%3A%20thin%3B%0Aborder%2Dbottom%2Dcolor%3A%20%23aaa%3B%0Aheight%3A%202%2E5em%3B%0A%7D%0A%23FOOTER%20%7B%0Aborder%2Dtop%2Dstyle%3A%20solid%3B%0Aborder%2Dtop%2Dwidth%3A%20thin%3B%0Aborder%2Dtop%2Dcolor%3A%20%23aaa%3B%0Abottom%3A%200px%3B%0Aleft%3A%201px%3B%0A%7D%0A%23HEADER%2C%20%23FOOTER%20%7B%0Awidth%3A%20auto%3B%0Aposition%3A%20fixed%3B%0Awidth%3A%2099%25%3B%0Abackground%3A%20white%3B%0Apadding%3A%205px%3B%0A%7D%0Abody%20%3E%20div%3Anot%28%23TOC%29%3Anot%28%23HEADER%29%3Anot%28%23FOOTER%29%20%7B%0Adisplay%3A%20none%3B%0Apadding%2Dleft%3A%2021em%3B%0Apadding%2Dtop%3A%202em%3B%0Apadding%2Dbottom%3A%202em%3B%0Amargin%2Dleft%3A%201em%3B%0Awidth%3A%2050em%3B%0A%7D%0Atable%20%7B%0Aborder%2Dcollapse%3A%20collapse%3B%0Aborder%2Dspacing%3A%200%3B%0A%7D%0Anav%20ul%20%7B%0Aline%2Dheight%3A%201%2E7em%3B%0Alist%2Dstyle%2Dtype%3A%20none%3B%0Alist%2Dstyle%2Dposition%3A%20inside%3B%0A%7D%0Ath%20%7B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0Ath%2C%20td%20%7B%0Apadding%3A%206px%3B%0Aborder%2Dwidth%3A%201px%3B%0Aborder%2Dstyle%3A%20solid%3B%0Aborder%2Dcolor%3A%20%23aaa%3B%0A%7D%0Ah1%2C%20h2%2C%20h3%20%7B%0Apadding%2Dbottom%3A%203px%3B%0Aborder%2Dbottom%2Dwidth%3A%201px%3B%0Aborder%2Dbottom%2Dstyle%3A%20solid%3B%0Aborder%2Dbottom%2Dcolor%3A%20%23aaa%3B%0A%7D%0Adt%20%7B%0Afont%2Dstyle%3A%20italic%3B%0Afont%2Dweight%3A%20bold%3B%0A%7D%0A%2Eui%2Dresizable%2Dhandle%20%7B%0Aposition%3A%20absolute%3B%0Awidth%3A%2020px%3B%0Acursor%3A%20ew%2Dresize%3B%0Aright%3A%200px%3B%0Aheight%3A%20100%25%3B%0Atop%3A%200px%3B%0A%7D%0Adiv%2Evecto2%20%7B%0Aborder%2Dleft%3A%203px%20solid%20gray%3B%0Apadding%2Dleft%3A%205px%3B%0Amargin%2Dtop%3A%202em%3B%0Abackground%3A%20rgba%28128%2C128%2C128%2C0%2E05%29%3B%0A%7D%0Adiv%2Evecto2%3Abefore%20%7B%0Acontent%3A%20%27Note%3A%20Vecto%202%2E2%21%27%3B%0Abackground%3A%20gray%3B%0Acolor%3A%20white%3B%0Apadding%3A%205px%205px%205px%205px%3B%0Amargin%2Dleft%3A%20%2D8px%3B%0Afont%2Dweight%3A%20bold%3B%0Adisplay%3A%20inline%2Dblock%3B%0Afont%2Dsize%3A%20smaller%3B%0A%7D%0Adiv%2Evecto3%20%7B%0Aborder%2Dleft%3A%203px%20solid%20green%3B%0Apadding%2Dleft%3A%205px%3B%0Amargin%2Dtop%3A%202em%3B%0Abackground%3A%20rgba%280%2C128%2C0%2C0%2E05%29%3B%0A%7D%0Adiv%2Evecto3%3Abefore%20%7B%0Acontent%3A%20%27Note%3A%20Vecto%203%2Ex%21%27%3B%0Abackground%3A%20green%3B%0Acolor%3A%20white%3B%0Apadding%3A%205px%205px%205px%205px%3B%0Amargin%2Dleft%3A%20%2D8px%3B%0Afont%2Dweight%3A%20bold%3B%0Adisplay%3A%20inline%2Dblock%3B%0Afont%2Dsize%3A%20smaller%3B%0A%7D%0Adiv%2Eengineering%7B%0Aborder%2Dright%3A%205px%20solid%20%23d51000%3B%0Amargin%2Dright%3A%20%2D50px%3B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8%2BDQo8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4NCg0KPHN2Zw0KICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIg0KICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyINCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyINCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiDQogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSINCiAgIHdpZHRoPSI0NS4xNTU1NTZtbSINCiAgIGhlaWdodD0iNDQuMDI2NjY5bW0iDQogICB2aWV3Qm94PSIwIDAgMTYwIDE1Ni4wMDAwMSINCiAgIGlkPSJzdmc0MTY3Ig0KICAgdmVyc2lvbj0iMS4xIg0KICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MSByMTM3MjUiDQogICBzb2RpcG9kaTpkb2NuYW1lPSJpY29uX2VuZ2luZWVyaW5nLW1vZGUuc3ZnIj4NCiAgPGRlZnMNCiAgICAgaWQ9ImRlZnM0MTY5IiAvPg0KICA8c29kaXBvZGk6bmFtZWR2aWV3DQogICAgIGlkPSJiYXNlIg0KICAgICBwYWdlY29sb3I9IiNmZmZmZmYiDQogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2Ig0KICAgICBib3JkZXJvcGFjaXR5PSIxLjAiDQogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiDQogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiDQogICAgIGlua3NjYXBlOnpvb209IjIuOCINCiAgICAgaW5rc2NhcGU6Y3g9IjE4LjI1ODUwNCINCiAgICAgaW5rc2NhcGU6Y3k9Ijk3LjIzNzM3NCINCiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4Ig0KICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiDQogICAgIHNob3dncmlkPSJmYWxzZSINCiAgICAgZml0LW1hcmdpbi10b3A9IjAiDQogICAgIGZpdC1tYXJnaW4tbGVmdD0iMCINCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMCINCiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAiDQogICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCINCiAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iMTEzOCINCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii04Ig0KICAgICBpbmtzY2FwZTp3aW5kb3cteT0iLTgiDQogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiIC8%2BDQogIDxtZXRhZGF0YQ0KICAgICBpZD0ibWV0YWRhdGE0MTcyIj4NCiAgICA8cmRmOlJERj4NCiAgICAgIDxjYzpXb3JrDQogICAgICAgICByZGY6YWJvdXQ9IiI%2BDQogICAgICAgIDxkYzpmb3JtYXQ%2BaW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0Pg0KICAgICAgICA8ZGM6dHlwZQ0KICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPg0KICAgICAgICA8ZGM6dGl0bGU%2BPC9kYzp0aXRsZT4NCiAgICAgIDwvY2M6V29yaz4NCiAgICA8L3JkZjpSREY%2BDQogIDwvbWV0YWRhdGE%2BDQogIDxnDQogICAgIGlua3NjYXBlOmxhYmVsPSJMYXllciAxIg0KICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIg0KICAgICBpZD0ibGF5ZXIxIg0KICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMjM0LjI4NTcxLC0zNDUuNzkwNzgpIj4NCiAgICA8cGF0aA0KICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiDQogICAgICAgZD0ibSAyNTQuMjg1NzEsMzQ1Ljc5MDc4IC0yLDQgMjEsMTIgYyAwLDEwIC00LDE4IC0xMywyMyBsIC0yMSwtMTIgLTEsMiBjIDUsMTUgMTUsMjUgMzUsMjUgNSwwIDIwLDE1IDI4LDIzIGwgMTYsLTE2IGMgLTgsLTggLTI2LC0yNiAtMjYsLTMxIDAsLTE4IC01LC0zMCAtMzcsLTMwIHogbSAxMjUsNSAtMjAsMTQgLTIsOCAtNTgsNTggLTgsLTUgLTQsNCBjIDAsMTIgLTE0LDE4IC0yMCwxOCBsIC0zMywzMyBjIDAsMTAgMTEsMjEgMjEsMjEgbCAzMywtMzMgYyAwLC02IDYsLTIwIDE4LC0yMCBsIDQsLTQgLTUsLTggNTgsLTU4IDgsLTIgMTQsLTIwIC02LC02IHogbSAtNTAsNjggLTE2LDE2IGMgMTIsMTIgMjgsMjggMjgsMzMgMCwxOCA1LDMwIDM3LDMwIGwgMiwtNCAtMjEsLTEyIGMgMCwtMTAgNCwtMTggMTMsLTIzIGwgMjEsMTIgMSwtMiBjIC01LC0xNSAtMTUsLTI1IC0zNSwtMjUgLTUsMCAtMTgsLTEzIC0zMCwtMjUgeiINCiAgICAgICBpZD0iaW1hZ2Vib3RfMy0wIg0KICAgICAgIHN0eWxlPSJmaWxsOiNkNTEwMDA7ZmlsbC1vcGFjaXR5OjEiIC8%2BDQogIDwvZz4NCjwvc3ZnPg0K%29%3B%0Abackground%2Dcolor%3A%20rgba%28255%2C0%2C0%2C0%2E2%29%3B%0Apadding%3A%202px%2050px%202px%205px%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0Abackground%2Dsize%3A%2038px%3B%0Abackground%2Dposition%3A%20top%20right%3B%0A%7D%0Adiv%2Edeclaration%20%7B%0Aborder%2Dright%3A%205px%20solid%20%2308c300%3B%0Amargin%2Dright%3A%20%2D50px%3B%0Abackground%2Dimage%3A%20url%28data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8%2BDQo8IS0tIENyZWF0ZWQgd2l0aCBJbmtzY2FwZSAoaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvKSAtLT4NCg0KPHN2Zw0KICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIg0KICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyINCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyINCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciDQogICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiDQogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSINCiAgIHdpZHRoPSI0OS43OTY4MjJtbSINCiAgIGhlaWdodD0iNDkuNzk2ODIybW0iDQogICB2aWV3Qm94PSIwIDAgMTc2LjQ0NTQzIDE3Ni40NDU0MyINCiAgIGlkPSJzdmcyIg0KICAgdmVyc2lvbj0iMS4xIg0KICAgaW5rc2NhcGU6dmVyc2lvbj0iMC45MSByMTM3MjUiDQogICBzb2RpcG9kaTpkb2NuYW1lPSJpY29uX2RlY2xhcmF0aW9uLW1vZGUuc3ZnIj4NCiAgPGRlZnMNCiAgICAgaWQ9ImRlZnM0IiAvPg0KICA8c29kaXBvZGk6bmFtZWR2aWV3DQogICAgIGlkPSJiYXNlIg0KICAgICBwYWdlY29sb3I9IiNmZmZmZmYiDQogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2Ig0KICAgICBib3JkZXJvcGFjaXR5PSIxLjAiDQogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiDQogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiDQogICAgIGlua3NjYXBlOnpvb209IjEuOTc5ODk5Ig0KICAgICBpbmtzY2FwZTpjeD0iMTcuMjkyOTMzIg0KICAgICBpbmtzY2FwZTpjeT0iNDYuODI4NzU0Ig0KICAgICBpbmtzY2FwZTpkb2N1bWVudC11bml0cz0icHgiDQogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImxheWVyMSINCiAgICAgc2hvd2dyaWQ9ImZhbHNlIg0KICAgICBmaXQtbWFyZ2luLXRvcD0iMCINCiAgICAgZml0LW1hcmdpbi1sZWZ0PSIwIg0KICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIg0KICAgICBmaXQtbWFyZ2luLWJvdHRvbT0iMCINCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIg0KICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMTM4Ig0KICAgICBpbmtzY2FwZTp3aW5kb3cteD0iLTgiDQogICAgIGlua3NjYXBlOndpbmRvdy15PSItOCINCiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgLz4NCiAgPG1ldGFkYXRhDQogICAgIGlkPSJtZXRhZGF0YTciPg0KICAgIDxyZGY6UkRGPg0KICAgICAgPGNjOldvcmsNCiAgICAgICAgIHJkZjphYm91dD0iIj4NCiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ%2BDQogICAgICAgIDxkYzp0eXBlDQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8%2BDQogICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPg0KICAgICAgPC9jYzpXb3JrPg0KICAgIDwvcmRmOlJERj4NCiAgPC9tZXRhZGF0YT4NCiAgPGcNCiAgICAgaW5rc2NhcGU6bGFiZWw9IkxheWVyIDEiDQogICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiDQogICAgIGlkPSJsYXllcjEiDQogICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yNjYuMzQwODMsLTUzLjQ4Njk3NCkiPg0KICAgIDxwYXRoDQogICAgICAgc29kaXBvZGk6dHlwZT0ic3RhciINCiAgICAgICBzdHlsZT0iZmlsbDojMDhjMzAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgICAgaWQ9InBhdGg0MTQzIg0KICAgICAgIHNvZGlwb2RpOnNpZGVzPSIxMiINCiAgICAgICBzb2RpcG9kaTpjeD0iMzU0LjU2MzU0Ig0KICAgICAgIHNvZGlwb2RpOmN5PSIxNDEuNzA5NjkiDQogICAgICAgc29kaXBvZGk6cjE9Ijc3LjY4MDA4NCINCiAgICAgICBzb2RpcG9kaTpyMj0iODguMjcyODI3Ig0KICAgICAgIHNvZGlwb2RpOmFyZzE9IjAuNzQ4OTc3MDMiDQogICAgICAgc29kaXBvZGk6YXJnMj0iMS4wMTA3NzY0Ig0KICAgICAgIGlua3NjYXBlOmZsYXRzaWRlZD0iZmFsc2UiDQogICAgICAgaW5rc2NhcGU6cm91bmRlZD0iMC40Ig0KICAgICAgIGlua3NjYXBlOnJhbmRvbWl6ZWQ9IjAiDQogICAgICAgZD0ibSA0MTEuNDU1MzMsMTk0LjYwMTI3IGMgLTYuNTU2MzksNy4wNTIyNSAtMS44NDI3NiwxNi43ODIwNiAtMTAuMDAwOTksMjEuODk3MDkgLTguMTU4MjQsNS4xMTUwMyAtMTQuODYyNzQsLTMuMzY2NTUgLTI0LjA2Njg2LC0wLjUzNzMyIC05LjIwNDEyLDIuODI5MjMgLTkuOTg2OSwxMy42MTIzMSAtMTkuNjA5NjYsMTMuOTYyOTMgLTkuNjIyNzUsMC4zNTA2MyAtMTEuMTg4MjMsLTEwLjM0Njg4IC0yMC41NzM4NCwtMTIuNDk4NzYgLTkuMzg1NjIsLTIuMTUxODcgLTE1LjQ1NTA3LDYuNzk1MTYgLTIzLjk2MzkzLDIuMjg3NDMgLTguNTA4ODcsLTQuNTA3NzIgLTQuNTE1ODUsLTE0LjU1NDc4IC0xMS41NjgxLC0yMS4xMTExNiAtNy4wNTIyNCwtNi41NTYzOSAtMTYuNzgyMDUsLTEuODQyNzYgLTIxLjg5NzA4LC0xMC4wMDEgLTUuMTE1MDMsLTguMTU4MjMgMy4zNjY1NSwtMTQuODYyNzMgMC41MzczMiwtMjQuMDY2ODUgLTIuODI5MjQsLTkuMjA0MTIgLTEzLjYxMjMxLC05Ljk4NjkgLTEzLjk2Mjk0LC0xOS42MDk2NiAtMC4zNTA2MywtOS42MjI3NSAxMC4zNDY4OSwtMTEuMTg4MjMgMTIuNDk4NzYsLTIwLjU3Mzg1IDIuMTUxODcsLTkuMzg1NjEgLTYuNzk1MTUsLTE1LjQ1NTA2IC0yLjI4NzQzLC0yMy45NjM5MiA0LjUwNzczLC04LjUwODg2NyAxNC41NTQ3OCwtNC41MTU4NTMgMjEuMTExMTcsLTExLjU2ODA5OSA2LjU1NjM4LC03LjA1MjI0NiAxLjg0Mjc1LC0xNi43ODIwNTYgMTAuMDAwOTksLTIxLjg5NzA4NCA4LjE1ODI0LC01LjExNTAzIDE0Ljg2Mjc0LDMuMzY2NTUgMjQuMDY2ODYsMC41MzczMTggOS4yMDQxMSwtMi44MjkyMzIgOS45ODY5LC0xMy42MTIzMDkgMTkuNjA5NjUsLTEzLjk2MjkzNSA5LjYyMjc2LC0wLjM1MDYyNyAxMS4xODgyMywxMC4zNDY4ODYgMjAuNTczODUsMTIuNDk4NzU5IDkuMzg1NjIsMi4xNTE4NzIgMTUuNDU1MDYsLTYuNzk1MTU1IDIzLjk2MzkzLC0yLjI4NzQzIDguNTA4ODYsNC41MDc3MjcgNC41MTU4NSwxNC41NTQ3ODMgMTEuNTY4MDksMjEuMTExMTY4IDcuMDUyMjUsNi41NTYzODQgMTYuNzgyMDYsMS44NDI3NTUgMjEuODk3MDksMTAuMDAwOTkyIDUuMTE1MDMsOC4xNTgyNDEgLTMuMzY2NTUsMTQuODYyNzQxIC0wLjUzNzMyLDI0LjA2Njg1MSAyLjgyOTIzLDkuMjA0MTIgMTMuNjEyMzEsOS45ODY5IDEzLjk2MjkzLDE5LjYwOTY2IDAuMzUwNjMsOS42MjI3NSAtMTAuMzQ2ODgsMTEuMTg4MjMgLTEyLjQ5ODc1LDIwLjU3Mzg1IC0yLjE1MTg4LDkuMzg1NjEgNi43OTUxNSwxNS40NTUwNiAyLjI4NzQyLDIzLjk2MzkzIC00LjUwNzcyLDguNTA4ODYgLTE0LjU1NDc4LDQuNTE1ODUgLTIxLjExMTE2LDExLjU2ODA5IHoiDQogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci14PSI1LjI0NTM5ODgiDQogICAgICAgaW5rc2NhcGU6dHJhbnNmb3JtLWNlbnRlci15PSItMy4yODMzMTg2IiAvPg0KICAgIDxjaXJjbGUNCiAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDoyO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiDQogICAgICAgaWQ9InBhdGg0MTQ1Ig0KICAgICAgIGN4PSIzNTQuNTYzNTQiDQogICAgICAgY3k9IjE0MS43MDk2OSINCiAgICAgICByPSI1MC41MDc2MjkiIC8%2BDQogICAgPGNpcmNsZQ0KICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiNmZmZmZmY7c3Ryb2tlLXdpZHRoOjcuMDE2MDIxNzM7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgICBpZD0icGF0aDQxNTAiDQogICAgICAgY3g9IjM1NC41NjM1NCINCiAgICAgICBjeT0iMTQxLjcwOTY5Ig0KICAgICAgIHI9IjYyLjg5OTM2OCIgLz4NCiAgICA8Zw0KICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjQwcHg7bGluZS1oZWlnaHQ6MTI1JTtmb250LWZhbWlseTpTYW5zO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6IzA4YzMwMDtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzA4YzMwMDtzdHJva2Utd2lkdGg6MS4wNTc1NDUxOTtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIg0KICAgICAgIGlkPSJ0ZXh0NDEzNiINCiAgICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLjg5MTE3MjEsMCwwLDEuODkxMTcyMSw2LjExNzM1MzQsLTQ4LjY5NDQ2MikiPg0KICAgICAgPHBhdGgNCiAgICAgICAgIGQ9Im0gMjAwLjM5NzA1LDg1LjI0NTY4OSAwLjczMjQyLDEuMjY5NTMyIHEgLTcuMTUzMzIsNS4wNTM3MTEgLTEzLjI1Njg0LDEyLjc5Mjk2OCAtNi4xMDM1MSw3LjczOTI2MSAtOC44MTM0NywxNS4xNjExMzEgbCAtMS4wNzQyMiwwLjcwODAxIHEgLTEuMzkxNiwwLjkwMzMyIC0yLjM5MjU4LDEuODA2NjQgLTAuMTcwOSwtMC44Nzg5MSAtMC45NTIxNSwtMi44MzIwMyBsIC0wLjU2MTUyLC0xLjM5MTYgcSAtMS44MzEwNiwtNC41MTY2IC0zLjEwMDU5LC02LjI5ODgzIC0xLjI0NTExLC0xLjgwNjY0IC0yLjcwOTk2LC0xLjk1MzEzIDEuOTc3NTQsLTEuODA2NjQgMy40NDIzOSwtMS44MDY2NCAyLjAyNjM2LDAgNC40NDMzNSw1LjQ0NDM0IGwgMC44Nzg5MSwxLjk1MzEzIHEgNC4zMjEyOSwtNy43MzkyNiAxMC40MjQ4MSwtMTQuMjU3ODE3IDYuMTI3OTMsLTYuNTE4NTU1IDEyLjkzOTQ1LC0xMC41OTU3MDQgeiINCiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtc2l6ZTo1MHB4O2xpbmUtaGVpZ2h0OjEyNSU7Zm9udC1mYW1pbHk6J1dpbmdkaW5ncyAyJzstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidXaW5nZGluZ3MgMiwgTm9ybWFsJzt0ZXh0LWFsaWduOnN0YXJ0O3dyaXRpbmctbW9kZTpsci10Yjt0ZXh0LWFuY2hvcjpzdGFydDtmaWxsOiMwOGMzMDA7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMwOGMzMDA7c3Ryb2tlLXdpZHRoOjEuMDU3NTQ1MTk7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSINCiAgICAgICAgIGlkPSJwYXRoNDE0MSINCiAgICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8%2BDQogICAgPC9nPg0KICA8L2c%2BDQo8L3N2Zz4NCg%3D%3D%29%3B%0Abackground%2Dcolor%3A%20rgba%280%2C255%2C0%2C0%2E2%29%3B%0Apadding%3A%202px%2050px%202px%205px%3B%0Amargin%2Dbottom%3A%200%2E5em%3B%0Abackground%2Drepeat%3A%20no%2Drepeat%3B%0Abackground%2Dsize%3A%2038px%3B%0Abackground%2Dposition%3A%20top%20right%3B%0A%7D%0Apre%20%7B%0Apadding%3A%202px%3B%0Aborder%3A%201px%20solid%20%23EEEEEE%3B%0A%7D%0A%2Eaaux%5Flocked%20%7B%20background%3A%20gray%3B%0Acolor%3A%20white%3B%0A%7D" rel="stylesheet" type="text/css" /> + <link href="data:text/css;charset=utf-8,%40media%20print%20%7B%0A%23CONTENT%20%7B%0Adisplay%3A%20none%3B%0A%7D%0A%23HEADER%20%7B%0Adisplay%3A%20none%3B%0A%7D%0Abody%20%3E%20div%20%7B%0Adisplay%3A%20block%3B%0Apadding%2Dleft%3A%202em%3B%0A%7D%0A%2Esection%2Elevel2%20%7B%0Apage%2Dbreak%2Dbefore%3A%20always%3B%0A%7D%0Aa%2C%20a%3Avisited%2C%20a%3Alink%20%7B%0Acolor%3A%20blue%3B%0A%7D%0A%7D" rel="stylesheet" type="text/css" /> + <script type="text/javascript">/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ + !function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), + a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), + null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});</script> + <script type="text/javascript">/*! jQuery UI - v1.12.1 - 2016-09-14 + * http://jqueryui.com + * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js + * Copyright jQuery Foundation and other contributors; Licensed MIT */ + + (function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) + }}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; + this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) + }},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?" ":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} + },_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog + },disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1 + },_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter; + this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});</script> + <script type="text/javascript"> + $(function(){ + var OnClick = function() { + showContent($($(this).attr("href").replace(".", "\\."))); + }; + + var showContent = function(element){ + $("#CONTENT").html(element.html()); + $("#CONTENT > a").click(OnClick); + $("#CONTENT").show(); + window.scrollTo(0, 0); + }; + + + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER):not(.vecto2):not(.vecto3)").hide(); + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER) > div:not(.vecto2):not(.vecto3)").hide(); + + window.onhashchange=function(){showContent($(window.location.hash.replace(".", "\\.")));}; + if (window.location.hash) { + showContent($(window.location.hash.replace(".", "\\."))); + } else { + showContent($("#user-manual")); + } + + $("#TOC").resizable(); + + $("#TOC").resizable({ + handles: "e", + resize: function(event, ui) { + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER)").css("padding-left", ui.size.width); + } + }); + + $("#TOC").scroll(function() { + $(".ui-resizable-handle").css('top', $("#TOC").scrollTop()); + }); + + + /* hide some items from TOC */ + + $("#TOC li a[href='#electrical-auxiliaries-editor']").parent().hide() + $("#TOC li a[href='#combined-alternator-map-file-.aalt']").parent().hide() + $("#TOC li a[href='#pneumatic-auxiliaries-editor']").parent().hide() + $("#TOC li a[href='#hvac-auxiliaries-editor']").parent().hide() + /*-------------------------*/ + + $("td[align=left").filter(function() {return $(this).text().indexOf("Locked default")===0 || $(this).text().indexOf("Locked Calc") === 0; }).addClass("aaux_locked") + }); + + /* + javascript to check if all links are valid: + */ + + function CheckGeneratedLinks() { + var content = jQuery("#CONTENT"); + content.html(""); + jQuery("a[href]").each(function(idx, elem) { + var link=jQuery(elem).attr("href"); + if(link.startsWith("javascript:")) {return true} + if (!link.startsWith("#")) { content.append("ignoring: " + link +"<br/>"); return true; } + var node=jQuery("*[id='" + link.replace("#", "") + "']"); + if (node.length) { + content.append("found: " + link) + } else { + content.append("missing: " + link) + }; + content.append("<br/>"); + }); + } + + </script> +</head> +<body> +<div id="HEADER"> + <div style="float:left"> + <a href="MultiStepToolHelp.html"><img style="vertical-align:middle" alt="VECTO-Logo" src="data:image/png;base64,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"></a> + <a href="MultiStepToolHelp.html">User Manual</a> + </div> + <div style="text-align: right"> + <a href="https://ec.europa.eu/clima/" target="_blank"><img style="border: 0px solid; height: 40px;" alt="European Commission" src="data:image/jpeg;base64,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" hspace="5"></a> +<!-- <a href="http://www.ivt.tugraz.at/" target="_blank"><img src="pics/IVT.png" alt="IVT-Logo" style="border: 0px solid; width: 74px; height: 36px;" hspace="5"></a> + <a href="http://portal.tugraz.at/pls/portal/url/page/TU_Graz" target="_blank"><img src="pics/TUG.png" alt="TUG-Logo" style="border: 0px solid; width: 96px; height: 36px;" hspace="5"></a> + --> </div> +</div> +<div id="CONTENT"> +</div> +<div id="TOC"> +<ul> +<li><a href="#user-manual---multisteptool">User Manual - MultiStepTool</a></li> +<li><a href="#user-interface-overview">User Interface Overview</a><ul> +<li><a href="#jobs">Jobs</a></li> +<li><a href="#settings">Settings</a></li> +</ul></li> +<li><a href="#create-a-new-job">Create a new Job</a><ul> +<li><a href="#new-interimcompleted-job---general-case">New Interim/Completed Job - General Case</a></li> +<li><a href="#new-primary-job-with-interim-input---special-case-i">New Primary Job with Interim Input - Special Case I</a></li> +<li><a href="#new-complete-job---special-case-ii">New Complete Job - Special Case II</a></li> +</ul></li> +<li><a href="#create-a-step-input-file">Create a step input file</a><ul> +<li><a href="#non-exempted-step-input">Non exempted step input</a></li> +<li><a href="#exempted-step-input">Exempted step input</a></li> +</ul></li> +<li><a href="#airdrag">Airdrag</a><ul> +<li><a href="#airdrag-modified-multistep">Airdrag Modified Multistep</a></li> +</ul></li> +</ul> +</div> +<div id="user-manual---multisteptool" class="section level1"> +<h1>User Manual - MultiStepTool</h1> +<p><img src="data:image/png;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAISAlUDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9U6KKKACiiigAooooAKKKKACkalpGoAbRRRUAGKK4Pxx8bvA/w21KCw8SeJLDSLyaPzo4bqVVZl/vVzv/AA1h8Jj18caP/wCBC0uaJzyxFKMuWUj1vafajafavJf+GsvhL/0POk/+BC0f8NZfCX/oedI/8CFo5okfWqH86PXaK8h/4ax+Ew6eONH/APAha6PwT8bfBHxHvpbLw54ksNXvI13vDazKzKtHNEuOIoylyxkd3RRRTOgMUVwnjb43eCPhvfRWPiPxJY6TeSL5iw3Uyq22uc/4aw+Ex6+ONH/8CFpc0TnliKMZcspHre0+1G0+1eS/8NZfCX/oedJ/8CFo/wCGsvhL/wBDzpP/AIELRzRI+tUP5ketbT7UbT7V5L/w1l8Jf+h50n/wIWj/AIax+Ev/AEPekf8AgStHNEPrVD+ZHrW0+1G0+1eUf8NXfCb/AKHrR/8AwJWj/hq74Tf9D1o//gStHNEPrVD+ZHq+36UbfpXlH/DVnwnbp440n/wIWl/4aq+FH/Q8aT/4ELRzxH9ao/zI9W2/Sjb9K8q/4aq+FP8A0O+k/wDgQtP/AOGpPhV/0O+k/wDgQtHPEX1qj/Mj1Lb9KXb9K8r/AOGovhZ/0Oml/wDgQtPX9p34XN08aaV/4ELRzRH9Zo/zI9TorzBf2lfho3Txhpf/AIELUn/DRfw3/wChv0v/AMCFo5olfWKP8x6XRXnMf7Qnw7l+74s0z/wIWpF+PngF+nijTv8Av+tHNEPrFL+Y9C5o5rg1+OHgVunibTv+/wAtSr8aPBT9PEVh/wB/lpD9tT/mO35o5rjk+LfhCT7uvWf/AH9WpV+KPhV+mtWv/f1aCvaQ/mOr/Cj8K5tfiJ4ck+7q9u3/AG0WrSeNNEk+7qlsf+2lUV7SP8xt0Vlr4j0pvu6ja/8AfxanXWbJvu3cJ/7aUD5ol2iq66hat92eP/vqrCMrdG3UFBRXB/FD42eEvg/HYt4n1D7G98zLbxqu5pNtcP8A8NmfDL/oI3n/AIC0Ae6UV4X/AMNmfDL/AKCN5/4C0f8ADZnwy/6CN5/4C0Ae6UV4Kv7anw18zb9qvv8Ae+y1N/w2Z8Mv+gjef+AtAHulFeF/8NmfDL/oI3n/AIC0f8NmfDL/AKCN5/4C0Ae6UV5P4L/ai+HnjnxFDoen615epTLuhguk8vzP92vWKACiiigAooooAKKKKABafTFp9WAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUjUtI1ADaKKKgD49/4KNfCNPFvw1t/F9taLLf6C4eZ9vzNb8/L/301fmr9lh/54x/981+6nizw/beKvDuoaReJ5lteQtGy1+KHxD8F3Xw58da54bvN3n6fdNDub+Jf71cVaPvcx8Hn+GcZxrR6nNfZYf+eMf/AHzR9lh/54x/981JRXOfI6kf2WH/AJ4x/wDfNe2/sa+Nv+Ff/HnRnTbBBqG62mbb8v8An5q8Wq1pepSaPq1jqEUnlS2txHPu/wB1qfwnRhqro1o1P5T93N28AjkUOwRS3pXJfCfxVF42+HegaxC29bmzjc/720ZrG/aC8cJ8O/hP4h1bzvs8yWzLA3/TRulenze7zH61Kqo0vaH5dftYeOY/iP8AHHxBfp+9s4ZPIh3fNtVa8g+yw/8APGP/AL5qe6umvLqe6l+aWaRpGpleZ8R+S1qsqlSVSX2iP7LD/wA8Y/8AvmnfZYP+eMf/AHzTqfSMrsi+ywf88Y/++aPssH/PGP8A75qWigLsi+ywf88Y/wDvmnfZYf8AnjH/AN80+nVIXYLaw7f9TH/3zU62sP8Azxj/AO+aYv3asJ/DS1KuwW1h/wCeMf8A3zVuK1hZV/dx7v8AdqNKnVf3a0amkSzb2sP/ADxj/wC+avW9rD837mP/AL5qrBWjb/6ujU2j8Jct7eHzF/dx/wDfNa9rbx/884/++azLVfm+9Wxa1X2jqpv3TQtbWP8Ahjj/AO+a2rO3j/55r93+7WVa1uWa7lpnTT+E17O3j2/6tfu/3a2rC3j2/wCrX/vmsez+7W5YVsdlM2rOKNf4V/75ro9NiXy/ur/3zXPWHzNXR2P3WrU6aZuabbr8vyr/AN810dhEqsvyrWHYfeSuhs/vLWkTuib2mxL/AHVro7BfurtrB03+H/erobBd1H2j0IfCb1mvzLXZ2v8AqVrj7L/WLXZQ/cStjupnzd+0La295+0P8GI7i3huomkut0c8asv3ov4Wr33/AIQ7Qf8AoB6b/wCAkf8A8TXg/wAfv+Tjfgx/11uv/Qoq+j6Dcx/+EO0H/oCab/4CR/8AxNH/AAh2g/8AQE03/wABI/8A4mtiigDI/wCEO0H/AKAem/8AgJH/APE0n/CHaD/0BNN/8BI//ia2KKAMf/hDtB/6Amm/+Akf/wATR/wh2g/9ATTf/ASP/wCJrYooA81+JnwG8JfE7w62m3mnRafcK3mWuo2Eawz2sn8LKy7f++a8w8F/GTxF8D/EFt4G+Lcnm2kzeXpPi1V/cXC/wrN/davpmsDxr4I0b4ieH7nRdesI9Q0+ddrRSL0/2loA24pkuI1kiZZI2XcrK33qkr5Us9U8U/sg6rHp+qtdeKPhPNJtt9Q/1lzpP+zJ/eWvpnw/4i03xXpNtqmkXsOoafcLujngbcrLQBpUUUUAFFFFAAtPpi0+rAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRqWkagBtFFFQAjV+dH/BSP4Vf2R4s0nxzaQ/ub+P7JebV+VWU7t7f99V+jFeWftLfDOL4sfCHXtEZd05h86Lj+JTuH8qipHmieZmWH+tYaVM/GqinzW81lcT2twu25t5GjmX+6y/epleaflG2gU1l3Kyt/FTqKBH6a/8ABOvx83ib4QyaRcTbrrS52jWPd92P+GuU/wCClHxEGn+GdG8JwSKxvZPPmVW+ZQp2/wBa8a/4J3+PF8L/ABiu9FmkKwaxb/Kpb5VZf/2q4j9sf4gL8QPjvrM0DMbax/0ZV3fL8vy/+y10e0/dn2NTHf8ACXGP2tjxGiiiuc+OBKfQtFBYUUUUAFOptOqALHNPX71Rp96p0oKJUq4n8NVYl3VZVf3lSaRLlv8A6v7tXrX7q1Th/wBXV63X7tUdMfhL1r/rK2rWsy1+7WrarVfaOqPwmnarurasv/Zqx7Va3LVfu1X2jpj8JsWqfu63LD71Ytqv3a3rBflrQ6qZtWdb1mv3qw9PX+9XQ2C7lrY66Z0Gn/dWuhsfm21g2G2uhsa0id0Te01fu10dgv8AerB01d22ujsE3baDup/Cbmnf8fC/71djD/q0rktIj3XC/wAVdav3a2PRpnzl8fv+Tjfgx/11uv8A0KKvo+vnD4/f8nG/Bj/rrdf+hRV9H0GgUUUUAFFFFABRRRQAUUUUAVdQ0611ayms723S4tZl2SQyLuVlr5k8QfD7xP8Asv6xP4n+Hsc2teBZn8zVfC+7c1v/AHpIP/idtfUtIy7l2t8y0Ach8Nfih4e+LHh2PWPD98LqJh+8hb5ZYG/uuv3lrsK+Xf8AhHbX4e/tdafH4eX+yrTWrJpb60h+WKZty/Nt/vV9RUAFFFFAAtPpi0+rAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRqWkagBtFFFQAUjpuXafut1paKAPyQ/bW+FbfDH4130kEPl6ZrW67t/wDe+81eDV+oH/BQL4Unx58Jf7Zs4lOo6G3n7tvzeX/F/wCg1+XqtujVv71ebUjyyPy7NsL9XxMuX4ZDqKKKg8U0/DPia+8H65Bq2myeVeQrtjZf4ap3+oTapqFzeXTebc3DeZI395qgooK5pcvKFFFPoGFG9f7y1Ja2s1/dQWtrH5tzcSLFDH/eZq/UH4c/sMfDK28D6MniDw3banrTW6yXN1Lu3MzfMauNOUvhPSweX1cbKXs/sn5b71/vL/31T9y/31/76r9bP+GIPgz/ANCXZ/m1H/DEHwZ/6Euz/Nq0+ryPX/sDEfzI/JNWX+8v/fVOSv1q/wCGIPgz/wBCXZ/m1O/4Yj+Da/d8GWf/AI9U/V5B/q/iP5kfk0rL/eWp1Zf71fq9/wAMS/B3/oTbP/x6n/8ADFHwd/6Eyz/8eo+ryH/q/iP5kflLEy7vvLVmLb/e/wDHq/VP/hir4Pf9CfaflS/8MXfB/wD6FC1o+ryK/sHEfzI/LldvyqzLWjFt3V+nP/DG/wAI/wDoTrP82qVf2P8A4TJ08I2v/j1H1eRp/YeI/mR+a1rt21q2+1f4q/Rhf2SfhWv3fCdr+bVKv7J/wvTp4XtRVfV5G/8AY+I5fiR+e9rt+Wt612rtr7yX9lv4bL08M2v5VNH+zP8ADqLp4ctvyq/YyNY5TV/mPiG16rW5Z7dq19kL+zr4BXp4ftvyqZfgD4Gi6aFBV+xkbxy6qfJ9mtdDYL92vphPgh4Nj+7osC1Onwe8KR/d0qJafs5G8cDUieB2a/KvzV0Fnt217NF8L/DcX3dLiq3H4D0KL7umQf8AfNacp0xwsonmNgv3a6Gw+Wu2TwnpEf3bCFf+A1Omg2C9LSNfwquU6Y0ZRMfQ1/0iuoqCKwt7dtyQqrVPTOqMeU+cPj9/ycb8GP8Arrdf+hRV9H184fH7/k434Mf9dbr/ANCir6PoKCiiigAooooAKKKKACiiigAooooA+cfGX/J3nhX/AK8W/wDQlr6Or5x8Zf8AJ3nhX/rxb/0Ja+jqACiiigAWn0xafVgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFI1LSNQA2iiioAKKKKAMvxBo9v4g0O+025jWSG6haFlb/AGlr8Wvi54DuPhj8Ste8O3C/8e9wzRt/st8y1+3GMV+fv/BSb4VtDfaR46s4co3+iXXlr/483/fNc9aPu8x8znuF9rQ9pH7J8NUUUVxH50FFFFAAlPopjNtjZm/hoLPob9h34X/8LG+N1ne3UPm6VoP+mTN/Cs6/NEv/AKFX6wLwOO1fNP7Bvwp/4V58GotTuoFj1XXm+1zP/ej58r/x1q+ls7QQO1ehRjyxP07KMN9Ww0eb4mc18Q9H1/XfCd5Y+GdYj0PWJNvk30sPmLH8392vHv8AhUPxt/6KrZ/+C1v/AIqvetY1qz8P6Xc6lqE8dpY2sbSTTSNtVFWvzV/aG/4KrX8esXWk/Cuzjjtbdtv9t3kayed/uxt8u2tT2uU+sP8AhUPxt/6KrZ/+C1v/AIqj/hUPxt/6KrZ/+C1v/iq/KvVv25PjNrl41xceLrhZWbcywL5a/wDfK1R/4bK+L3/Q4X3/AH1QVyn6xf8ACofjb/0VWz/8Frf/ABVH/Cofjb/0VWz/APBa3/xVfk7/AMNlfF7/AKHC+/76ra8EftgfFq/8aaHaz+LryWCa8jWRd33l3UByn6kf8Kh+Nv8A0VWz/wDBa3/xVH/Cofjb/wBFVs//AAWt/wDFV7v4eme60DTZnO6SS2jYt/tbRWjQSfO//Cofjb/0VWz/APBa3/xVH/Cofjb/ANFVs/8AwWt/8VX0RRQB87/8Kh+Nv/RVbP8A8Frf/FUf8Kh+Nv8A0VWz/wDBa3/xVdj8dP2lPA37PWhm+8VaoqXLL+502Da1zN/ur6V+dnxU/wCCsHj7Xrxo/BWn2fhyzVtqyTxrctIv975l+WgOU+4v+FQ/G3/oqtn/AOC1v/iqP+FQ/G3/AKKrZ/8Agtb/AOKr8otW/bU+MWs3HnT+MLpW/wCmH7v/ANBrV8L/ALevxo8J3CyWvipp9v8ADeQrN/6FQVyn6kf8Kh+Nv/RVbP8A8Frf/FUf8Kh+Nv8A0VWz/wDBa3/xVfL/AMDv+CsaXV5bab8S9H8qNhsbV9PX+L/aj+7X6G+D/GmiePtBtta8Palb6rplwu6O5tpNytQTyniX/Cofjb/0VWz/APBa3/xVH/Cofjb/ANFVs/8AwWt/8VX0RRQB87/8Kh+Nv/RVbP8A8Frf/FUf8Kh+Nv8A0VWz/wDBa3/xVfQrttVv92vys+Ln/BTH4m+B/iv4x8OWUFj9h0nVJLS33wrv2r/wGgOU+zv+FQ/G3/oqtn/4LW/+Ko/4VD8bf+iq2f8A4LW/+Kr4G/4es/Fj/njp/wD4Dr/8TR/w9Z+LH/PHT/8AwHX/AOJoK5T75/4VD8bf+iq2f/gtb/4qj/hUPxt/6KrZ/wDgtb/4qvgb/h6z8WP+eOn/APgOv/xNH/D1n4sf88dP/wDAdf8A4mgOU+79J/Zx8d6l8UPCvirxh4+t9ag0DzPJtILNovMZmVvvbv8AZr6Sr81P2WP+ChXxD+Mvx00HwjrMFmum3yt5jRQqr/w/7NfpXQT8IUUUUAFFcF8XvjV4Q+CHh19X8XavFp0G1vKhzmac/wB2Nf4mr86/jB/wVm8R6ndT2vw80eHSLNW/d6hfL5ssi/8AXNl2rQB+qNFfhDr37cPxk8R3DTXHi64iZv8An2Xy/wD0GpPDn7dHxm8L3S3Fr4smnZf+fmPzF/75agvlP3aor8yfgj/wVjulvINO+JmkK8DN+81bT1+Zf+2f3a/RLwF8QtA+Jnh2DW/DeqQarpsw+WWBt2P9lufvUEHSUUUUAfOPjL/k7zwr/wBeLf8AoS19HV84+Mv+TvPCv/Xi3/oS19HUAFFFFAAtPpi0+rAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRqWkagBtFFFQAUUUUAFedfHr4dQ/FD4X69oUi72uLdjH/vCvRaTtQZVKcakOSR+D9/ptxo2oXOn3UbRXNrI0cit/DUFfR37dXwp/4V58Y59StbfyNL1pfPVv70v+Vr50ry/h90/I8Th5YetKnL7IbKKKKRgFd18D/hzcfFT4reH/AA7bruSa4Web/rnH8zf+O1wtfev/AATX+FYhsda8e3sTGSZvsVnuX7qr95l/3t1XTjzSPSy/D/Wq8YH3Jpemw6TplrY2y+XbW0Swxqv8Kqu0Vcoor0j9VWh+f/8AwVg+M954Z8D6L4E0u4aB9abztQ2tt3QKflX/AL6Wvyqr7h/4K5XUn/DQvhq33ful8PRtt/2vPlr4eoNgor0H4C/ChvjV8U9B8IC+j03+0plja5b+Fa/SC3/4JDfDbyV+0eJvEDS7fmaO4VV/9BoA/J6t74ff8j94c/6/o/8A0Kv1I/4dD/DH/oZPEn/gQv8A8TVzRv8Agk38NdE1ix1KDxF4iaW1mWcI1wu0sv8AwGgD7P8ADP8AyLWj/wDXnD/6AtalVtPs10/T7W2Q7lt41jVm/wBldtWaDIK8F/a9/ac039mn4dvqDlZ9evVaLTbNv4m/vf8AAa9zurmOztpJ5W2RxK0jN/srX4VftrfGi6+M3x21y6Nx5mmabM1pZqrfLtX5aConlfxE+I3iD4q+KLzxB4l1CTUNQupN37xvlj/2VrmqK774KfA3xZ8f/GUXh3wpYtcz/euLlvlit1/vM1BZwNFfqL4P/wCCQfhuPS1/4SnxdqF1qO35m0tvLi3f7rV5T+0N/wAEt9d+Hvh281/wHqreI7KzjaSbTJ1/0ny1+8yt/F/u0AfCFfQn7IX7Wevfs3+NrYNcSXnhO8kWO+0+Rtyqv/PRf7u2vn2WJopGjdWV1bayt/C1NoA/pA8O+ILDxZ4f07WtLuFutN1CBLm3mX+KNl3Ka1a+Af8AglH8bZvEvgfWvAOpT759GkWexaQ/PJHJu3L/ALq7Vr7+oMhsn+rb/dr+e/8AaQ/5OI+Jv/YeuP8A2Wv6EWXerLX5xfE7/glHrHj/AOJXirxRF47sLOPWtQkvVgazkZo938P3qCon5kUV9y/Fb/glvq3wv+HuteKpvHNjfRaXbtO1utnIrSbV+7XwurbloLH0UL80kS/89JFj/wC+m219++E/+CS+teKvC+lawnj+whW+gW4WJrOT5dy/d+9QB4T/AME+/wDk7Twd/uyf+hLX7nV8Cfs5/wDBNDVvgf8AGDRvGlx41stSg09W3WkdrIrN/wAC3V990ESCvLP2iPjxon7PXw5vvE2sv5kiqUtLPd81xN/Cv+7/AHq9Tr8X/wDgpJ8crj4ofHS88OwXDNofhlmtI4N3y+d92Rv/AEGgDwv42/HDxR8evGl54i8TX0k8kzfubZW/dW8f8Kqv+zXn1FdH8Pvh34g+KXiyx8N+GdPk1LV7xtscEf8AD/tM38K0FnOUV+mXw3/4JEac+kxTeOvFV099Iu5odI/diH/Z+bdurnvjN/wSXvtH0i5v/h3r76lLbru/s3UP9ZN/sq3yrQB+d1e5fsr/ALVHiT9mvxtBeWdw154euGWO+02Rv3Ui/wB5f7rV4zrOi33h/VrzS9StZLHULORo7i2kXa0bVToA/ov+Hfj7R/id4P03xHodx9p06+jWSNv4h/st/tV01fmD/wAEn/jxcW+sal8NNRupJbaRWu9PiZvljb+L/wAdWv0+oMj5x8Zf8neeFf8Arxb/ANCWvo6vnHxl/wAneeFf+vFv/Qlr6OoAKKKKABafTFp9WAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUjUtI1ADaKKKgAooooAKKKKAPmr9uz4U/8LE+EF1fWsHm6lpP7+Nv9nvX5WK25d1fu5qmnQatptxZXCeZBPG0bK3evxi+Ovw+m+F/xW17Q5Y/LiW4aS3/65tXJWj73MfD5/h+WUcRE4OiiiuU+PLmjaNceINYsdLs42lubyZYFVf8Aaav2l+EPgO2+Gfw40Hw3AvFjbrGzAfefb8zV+eH/AAT9+FP/AAm3xbbxJdRMdP0KPzIm2/L5/wB3b/3y1fqFtxiu2jH7R93kGF5Kcq0vtC0UUV0H1p+Q/wDwVx/5OP8ADn/Ytx/+lMlfEVfbv/BXH/k4/wAOf9i3H/6UyV8RUGpb0bWdQ8P6pbalpN9caZqFrJ5kN3bSeXLG395Wr1uL9sj4zRRov/CwNYbb/E103/xVeSaXpN9rl9FZ6dayXlzI21Y4F3M1df8A8KN+IH/Qp6p/4D0AdZ/w2V8Zv+h+1b/wIb/4qvVP2Wv2p/it4u/aE8FaPrHjTUr7TLq+WO4tpZmZZF3L/tV8/wD/AAo34gf9Cnqn/gPXrf7Jfwg8aaH+0h4Fvr/wzqFtZw30bSTyQ7VX5loA/cCiiigyOD+OWvnwv8I/FWoJ9+PT5FX/AIEu2v57b+4a61K8uG+9NM0jf8Cav3+/aY02TVvgZ4vgiXczWMjf+O1/P5Mvk3E8bfeWRloNYjWr9of+CbPwlsPh/wDs7aTrAt1TWfEC/a7yX+L02/7vy1+Lzpur90f2DfFtr4w/Zg8HXFuy7obfyJo/+ebL/DQEj6EooooMj80vj9/wTD8QeOPjBrmueEbvT9M8PahIs0dsxVfJbb83y/725q57Tf8AgkD4luP+Pzxta2f+7a+Z/wCzVe/b+/bK+Ifw7+O7eGfAfij+xbXS7VY7yFbeOTdI21v4v9lq+doP+CiX7Q1r08fRv/vaXbt/7LQan3v+yz/wTxuv2a/ihD4vTx62sqtvJBNYf2eI1k3Lt+9ur7Sr8yv2Fv2wPjP8dvjvY+G/E/iS3vtD+yzXFwsWmwxfdXcvzKtfprQQFFFFBJ41+2B/ybh45/7B8n/oNfgbD/q6/fL9sD/k2/xz/wBg+T/0GvwNh/1dBUSSL/j4tv8Ar4j/APRi1/RD8G/+ST+FP+wbD/6DX870X/Hxbf8AXxH/AOjFr+iH4N/8kn8Kf9g2H/0GgJHZUUUUEmV4puTY+F9XuV+9DZzSL/wGNq/nW8Za9J4o8Wavq07bp7y6kkZm/vM1f0S+MojN4P1yNfvSWE6r/wB+2r+c7WbCTS9YvrWddssMzKy0FRKlfq//AMEo/g7Y6F8L77x7c20cur6xN5UFyy/NHbL/AA/99LX5QV+x3/BLfxxZ+I/2a7XQ4ZF+06DcNbTR/wAXzfvP/ZqC5H2PRRRQZH5Wf8FZvg/p/h3xPoHj7TrdbZtS/wBEvtq/66T+Fv8Avla/P2v0w/4K/eNbM6T4O8Io6tfST/b2Xd91V+X/ANmr8z6DU9k/Y88TXHhf9ozwdNbtta4ulgb/AHWr98a/n+/ZX06bUv2hvA8cEe5l1CNm/wBn5lr+gGgiR84+Mv8Ak73wr/14t/6EtfR1UZNHsZNQj1CSzha9jXatyyLvVf8Aeq9QSFFFFAAtPpi0+rAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKRqWkagBtFFFQAUUUUAFFFFABXwn/AMFJPhYbix0nxtZw7nt2+z3W1f4P7zf99V92VxPxe8CwfET4da3ocy/8fFu2zj+IL8v61FSPNE4cdh/rGHlTPxQod9tXtc0O48M61faTdRtFPZzNAyt975a9G/Zn+GTfFf4yaHo7R+bZwyfa7pWX5WjWvO/un5ZTpSqVfZR+I/Rb9jH4U/8ACrfgvp8dxGq6nqP+l3Tf7TV71jk1DawR2dvFDEuyNFVVVe1T16cY8seU/WaFONGlGnHoFFFFM6D8iP8Agrlbt/w0P4am/hbw9Gv/AJHlr4hr9Sf+CtHwevNb8J+H/HunW7T/ANlt9nvmVf8AVwn7rf8AfTV+W1BqfQ37D/x68M/s9/FufXvFNk1xptxYyWnmxqrNCzMvzfN/u1+hX/Dzj4C/8/7/APgPX430UAfsh/w84+Av/P8At/4D1c0b/gpT8DdW1azsbW+k+03Eixx/6P8AxNX4x1vfD7/kfvDn/X9H/wChUByn9GFneR6haQXMXzRzIsi/7rVPWX4Z/wCRa0f/AK84f/QFrUoMihrmmrrGi6hYP928t5IW/wCBLtr+fX49fDu6+Fvxe8S+HbqNl+z3kjRsy/eVmr+hmvhX/go9+yPN8UtBTx34Ytt3iHTY/wDSYI1/4+I6Con5KV9L/sW/tj6h+zB4gnsdRhk1HwdqEm66to2+aFv+ei181SxSWs0sM8bRTxttkjZfmVqbQWfvD4P/AG1vg5400xb2z8aWMK7dzLcblZf9n7teUfH7/gpV8Ovh3oN7beD79fFXidlZYLeBf3cLf3pN38P+7X45NErfep6rt+7QLlNXxV4o1Lxp4k1DXtXuGvNTvpmnmlb+Ksqiu/8Agf8ABnXvjx8QtM8L6HayStcSL9onVflt4/4mZv8AdoGfff8AwSR+Es1no/ibx9eQ/uryRbKxkZf7u7zP/Qlr9G6434U/DXS/hH8P9G8K6RGos9Pt1jLKu3zW2/NI3+01dlQZBRRRQB41+2B/ybh45/7B8n/oNfgbD/q6/fL9sD/k2/xz/wBg+T/0GvwNh/1dBUSSL/j4tv8Ar4j/APRi1/RD8G/+ST+FP+wbD/6DX870X/Hxbf8AXxH/AOjFr+iH4N/8kn8Kf9g2H/0GgJHZUUUUEkc0K3EbJIu5HXay1+FP7cHwluvhN+0R4ltXh8ux1KZr+z2/d8uRvlWv3ar5i/bn/Zah/aM+HJuNNRYvFOjq01nL/wA9l/ijb/vmgqJ+I9ev/sy/tJa7+zR8QItc0z/TNMuP3eoaezfLNH/8VXl2uaHqHhnWLnS9UtZLHULWRo5oJF2srVRoLP3I+Gn7fHwd+JGkwXCeJodLvGX99Y3m5ZYW/utXO/Gj/gox8K/hno1ydJ1ZfE2ubf8AR7G0/ib/AGm/u1+KzKrfeoVVX7tAuU7b4v8Axa1743ePtT8WeI5vNu7xv3cf8MMf8KrXGUV0vw2+HOufFjxhY+G/D9nJeX11Iq/Kv+rX+81Az6z/AOCWfwkn8XfGK58WTwbtK0WH7zL96RtyrX6+15H+zL8BdM/Z6+GOneG7RVa92+Ze3P8AFJL/ABf8Br1ygiQUUUUEhRRRQALT6YtPqwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkalpGoAbRRRUAFFFFABRRRQAUUUUAfl9+338K/wDhCfin/wAJDbwMmn6wu5pNvy+Z/F/6FXuH/BOX4WDRfB9/4yvINlzqjeXb71+ZY1//AGa9l/ao+CP/AAu34fx6Xbx7tQhuFeF/7q/xV6P8P/CMHgfwbpOiQKqLZ26RHaP4gvP61zxp/vOY+co5b7PHyrfZOloooroPowooooAzPEfh/T/Fuh3ukatax3un3kbRzQSruVlr8v8A9or/AIJZ69o+qXmsfDa4XUNIZml/s2dv3sf+yv8Aer9U6KAPwA1b9lX4taDM0d74H1KJl/uwt/8AE1mf8M7/ABK/6E3VP/Adq/oPkijm++iyf7y1F9htf+faH/v2tBXMfz6/8M7/ABK/6E3VP/Adq3PAf7P/AMRrXxxoM0vhHUooo7yNmZrdvl+av3u+w2v/AD7Q/wDftaPsNv8A8+8X/ftaA5ir4cjaHw/pUbrtZbWNWX0+Va0qKKCQpGRZFZWXcrfeVqWigD4g/au/4Jv6J8XLqfxF4Jkh0DxHJ80lvt2wTN/e/wBmvzY+JH7MvxK+E95JDr3he+WCNtq3MELMslf0DVVvtPtNQjC3drDdJ/dmjVv/AEKgrmP5vW0vUIm2vp90rf7UNT2fhzWNSmWO10m+nlZtqrHCzV/QnqPwf8FapP51z4Y02WX+99nVa0NM+HfhjRV22Ogabb/7lqtAcx+MvwS/4J+fFL4uXkEl5pcnhzRW+Zru+XbuX/Zr9W/2c/2ZfCP7N/hdNN8P2/nahIubzUpV/ezN/wCyr/s168sawxqqKqqv3VVafQHMFFFFBIUUUUAeS/tUaPea98AfGljp9vJeXk1hIscMS7mZttfiLF+zx8SlX/kTdU/8B2r+hNlVl2su5ag+w2v/AD7Q/wDftaCuY/n1i/Z4+JX2i2/4o3VP9dH/AMu7f3lr95PhPZzaf8NfDFtcxtFPDp8KujfwttFdN9htf+faH/v2tWPu9KA5gooooJCiiigD5b/aq/YW8KftEW02qWu3QvFiqxjvIY/lmb+7J/8AFV+Xfxa/Y1+KnwgvLldR8O3V9p8LfLqFnG0kTV+9FQ3NrDex+XPFHNH/AHZF3LQVzH83cujalbttl028ib+60LU+18P6tfTLHb6XeTs33VjhZq/ob1L4U+D9ZfdeeG9Nlf8AvfZVWpdJ+GnhXQx/oPh7Tbf6Wq0BzH4w/Bf9gX4pfF68gaXSZPD+kN8zX16u3cv+zur9VP2bf2S/B37N2hrBpEAvdZkX/SNUnX943+7/AHa9thiSGNURVjiX7qqu3bUlAcwUUUUEhRRRQAUUUUAC0+mLT6sAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigApGpaRqAG0UUVABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHEfGLxrf/Df4a694m03Sm1m602Hz/sifxRq3zn/AICu5vwrzS9/at055PhT9gslng8babNrE07SfLY2kcKyNI3/AAFm/wC+a901bS4Nc0e+0+45hu7eS3k/3WXa1fDvgr9hPxbZ6N8T9K1zWoTBNYyaT4Olib/jztmVl2sv+0u1aAPafil+2N4R8M/C/WvFnhPUrPxLJpciLNbozfKrfxVoeJ/2pvD/APwrGfxP4UvrPXJ7Vrdbm3bcnktJt4bdt/vV8u+Gf2APHNr4D1fS72PR7bU7ixjsFkttu2ZVXbub5v8AZrv/AIkfsW+I9cm8dR+Hxp+n6frlvZx29uqqqrJH5G5m+b/pm1BJ9DeOP2gvCPhGTV9NGs20/iTT7Nrk6bhmP3d21mUbf1rC8H/tUeFLj4f+H/EHi/U7Pwzd6xu8m1kdm+7/APrry0/s1eOtH8afENbC20PUtG8USSXMepXkSm8t2Zdvl7t33flrzHxx+wH451ZPCEtpdabqb6fazWt5aXwVkXcqruX5qAPrD9oz48L8F/g3P440qyj19N0a28ayfLJu+626szwJ+0RJa+CYvEHxMbS/C0Nxt+ztbyNKsny7v4d1ct8Z/wBm/X/GP7KNt8OdHa1Gr26xttl/1Tbd3y/+PVzWofsy+LfGnhnwVpeqaHoukW2h3izzWkG14pl8vb/eoKPfm/aB+HsXg1fFD+KrJNCaTylu2Lfe/u7cbqZqH7Qvw70fRdI1W68VWcenatJ5VjMu5vOb+6oVa+S/iR+wb4v8QaRqCaPc6bBt1iS+tdNkX/Rmjbb8u3d/s10vgn9i/V9L1n4YXOr22lyaf4duLq71CxVVZd0jKy7V/wCAtQB7vf8A7WHwq07UFs5vGNr9oZd21FZv/Za7PTfiZ4Z1jUtMsbPWbe5u9UtftdnFGctNDz8w/wC+Wr8yPgLo1n/w01Lpes+C5tXs7rUru2hsZ9NkVbGNpGbzGkb5WWvff2FfhHqmlfE3xxrWsvdXOn+HZG8PaDJcxsv+jbvM3Lu/2pGoJPX/AIgftG+I/wDhaeoeBPhz4Xj8U6po9vHc6tLM22OBX3bV+8vzfLXcX37QXgrw5q2naH4i1y10rxDcQw+dYvubyZJF3bGZRtU15br3wX+JPw8+OniXxz8N5NNvrLxRbxLfWOpf8sZI2Zty/Mv96vMPGH7HvxI8QX/iqxf+w7uz8XXFtc32sTxL9qsWVW8xYW3f3m+Wgo+pNW/aK+HGg+Jn8O33iqzg1iOZYJLZlb5WZdyqzbdv3ferNx8dvAtt4n1Dw+/iG3/tfT1ZrqBQzeTtXc27/gNfMvjL9iHW9Z8P/FuG2Onz6v4h1jTrrR7+df3sMNvbQRt8275fmjarniL9kvxvrXx48Va9ZNo+jeGNchukvmij3T30klr5as3zfL822gk+mh8YvBv2bT5/7dtvKvtMbWLdvm/eWip5jTf7u35q5df2tvhI0bMvjSzKqqv9yTlW/i+7Xzf4T/ZN+LElrotn4jm0dbXQfAd94RsWtQu6RpLXyI5G+at7Sf2Irmy1zw1cS6borW2n+B7vQ7hfJX5r+Ty9sn3v9lvmoKPofX/2hvh14Uks11TxVZ2rXlt9stxtZvMh3bdw2r/ergvGH7a3gHwr4+tfCv27zri801tSt7tFZomXa23/ANBr5hv/AIG+P9G+Lfg7wdpuiabrOpWPgea0vLzVbXzLaPdes25W+7u2tXoml/sW+KfBmoeBZNPj0fXotP0OTS9UbUIlb5mjZdy7m/2qCT3Tw5+1B4WtfBOkaz4y1nT9HuNSeTyY7bdIrKv8Xy7q6PxF+0d8NvCMloureLLO2a6h8+H7zbo/73yrXyTZ/sT/ABC8G2tq2kJoetvNb39lNaamimK1jm2qrR/NXTaX+w3qtnJcR3smn6rEvhubTbeS5Xd5dzJIrfL83yqu1qCj6a+I3xn0D4c/DK68bzTi80pIlkt/J/5eGY7VVa4j4Y/HLxZqGiXXiH4h+HLfwj4aNutxbX3mbvlb7u75mrN1T9m3UPEv7Kem/De+vFh16xtV8q5VvlWZZNy/8Brk9e+GHx38efCO88Iay2g2ZjhhihaNVb7R5bfNu+b5dy0Adr44/ay8P2Oj+GtS8H3Vn4ottU1mHS5mif8A1O5trNXbW/7QXw/mutWtF8TWrz6Vb/ab4KrbbePcqszNt2/eavjr4b/sD+O/DeiRWdzPpunq2uQajJHabdscaszNt+b73zV3fg39k/x3pPw98cfDu/g0P+yNWsLiC18QRRr9ukeSbzNsrbt22gk9t+OH7R2i/DD4f6rrWlXFvq+rWtnbahDp25v31vNcLCsn+796tK3/AGjvA1q+iafrGu2um65qkcDLYybsrJJ91f8AvqvlnV/2RPi342t9VbxBLo9rKvhuw0CxW02/dt7/AO0MzfN/dqh8V/2G/iV458eaVqEdzpNzY2d5p1xDcttWe3W3k3Mq/NQUey+IP27fCouPGul6O8a654fultFS+VvKmb5t3zL/ALter6t+0H4E8K6hY6Tr3iKz07WJoo3ktSWPlM6q3zHHy/er5k8a/sY+LtWHxa0u0tNDm0zxdBDNZ3ksa+fb3Kx7W/i/iZqPiR+x74+1zUfH+m6aui32keNv7OabVNQiVrzTWt4YY2WNt33f3H/j1BJ9O6h+0b8OdL8TyeH7rxXZxavHdfYpLb5v3c391m27f4lrnv2pfjB4v+B3gr/hKPDfhq38RabZRzT6p5sm1oY1XcpX5l/2q8L1z9hnWbnwv8SLaF9Pm1nWvFllrGm6lKv79beGeCRtzbvvbY2r6S/aQ+G+o/Fn4JeKfCmlTRJqWpWUkEMk/wB3cy0FHG+Cf2oLOw8MaPffE+TT/CGpaxbR3tlZRs0pa3kXcGbbu2/eWu88UfH3wB4LutOt9X8TWdrJqEazW/LNujbo/wAv3Vr5s+IX7KPj66162vtEt9D1eO+8LWugXi6pGrfY5I4Y42kj+b/pnWRqn7FXjvwvcLZ+H5dJ8S6feaGuj3FzrC7pbVvO8xmj3NQB9IeDfjo3i346eIfA8VnC2n6fpsGoW+oRNu85ZGZf/Za9fr5r/Z9/Zt1r4OfEiXUrq+jvtKj8O2mkxybv3rSRszMzf99V9KUAFFFFABRRRQALT6YtPqwCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACkalpGoAbRRRUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQBRi0exhvGuorG3iuW+9MsK72/4FVi3t4rVdsEccSsdzKq7amooAKKKKACiiigAooooAi8mPzvO8tfM27d+35tv92paKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAWn0xafVgFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA3p7Uh+lHbFeQfED9qj4YfC/xRc+HvEviX+z9Xt1VpbYWF1NtVl3Kd0cbL90+tF7GVSpCkuapKx6/wA03b7CvA1/bs+CP/Q6sP8AuFXv/wAZr2Xwv4k0/wAX+HdO1rSblb7TL+3juba4CMvmRsoZW2t8w69G59aXNFkU69Kt/DkmbVHNea/E39oDwH8G7mwt/GWvppE1+jvbx/ZJ5t6r95v3cbbev8VcZ/w3X8D/APodD/4Kr7/4zRzRJniqFOXLKa+899yKXrXJfDn4meHPix4dXXfC+pf2ppbStCtx9nkh+ZfvLtkVW/SvI/iN+358CPhL421bwj4r8d/2T4i0uRY7uz/se+m8tmRWX5o4GVvlZfutTOiMlJc0T6KorxX4K/tffCX9orXr3RPh94s/4SDU7K2+13EP9nXdt5UO5V3bpoVU/My9PWvaqCgor5m8Vf8ABRb9nvwP4s1nw5rfxB+w6zo97Pp97a/2LqEhinhkaORdy27K21lb5lbFd/8ABH9qD4Z/tIHWv+Fc+Jf+EiGjeT9vxYXVr5XneZ5f+ujj3bvKk+7n7tAHq+cdOaFbPtXmfxO/aI8AfBvULOz8Ya+NIuruJpYI1s7icuobbn93G3esHwn+2B8JvHXiLTtC0XxYbzVdQl8q2t2028j3t/d3NCqr/wACNLmRyyxNCMvZymub1PbaKQdKr3V3HY201xM2yGJGkdsdFXmmdRZor5U/4ejfsx/9FM/8oOp//I1H/D0b9mP/AKKZ/wCUHU//AJGoA+q6SvlX/h6N+zH/ANFM/wDKDqf/AMjUf8PRv2Y/+imf+UHU/wD5GoA+ptuOwFOGa4eP4w+Ep/hbB8RU1Ut4OuLGPUY9R+zTZa3fG1/L2+Z3Hy7d3tXnJ/bs+CH/AEOjD/uFX3/xmlzJHPUr0qL5akkj3+l61zngnxro/wARPDVn4h8P3n2/Sb5Wa3ufKaPzArMp+VlVvvBuopnjb4geHPhr4butf8U65ZaBo1sf3t7qEwjjUn7q8/eb/ZHNUbRkpLmidPRXw74t/wCCv/wB8N3UkOnv4n8TqDt87SdKVUP+1/pEkLfpTfC//BYX4B69eCDUF8VeG484M+qaUroP/AeWVv8Ax2kUfcefWmnOema5X4d/Ezwp8VfDEOveD/ENj4j0eX5Vu7GYSKGH8LD7yt/stzzXO/FD9ojwB8GtQs7Lxfr39k3V3G0sEYtJ596htu793G3emZVKkKceapKx6b+NH414F/w3V8D/APodm/8ABVff/GaP+G6vgf8A9Dsf/BVff/Gajnic/wBew3/PyP3o99zntRzXgJ/br+B//Q6E/wDcKvv/AIzXU/Db9pT4c/FzXptG8I+Ihq2pQ27XUkJsbiHESsqlsyRqp+aRf++qfNEqOLoVJcsai+89XoqlqWpWuk6fc315OlvZ2sTTTzSHCxxqu5mb6CvmH/h6N+zH/wBFM/8AKDqf/wAjUzrPquivEPgv+2R8Hv2gvFFx4f8AAPjFNf1m3tmvJLRtPurVhCrKrMDNEit8zL931r2+gBuKMUjD3rzv4mfHbwP8HbZJPFfiG102aUborXLSXEn+7Gu5tv8AtY20zOdSFOPNNnon1o+lfJ19/wAFKvhdazeXFpfie8X/AJ6QWUIX/wAemWtDQP8Agor8JdYmijuzrehrI23zL+w3Kv8AvGFpKy9pE4f7RwnNb2iPqGlwO9ZHhnxRpPjDR7fVdD1G21XTbhd0VzaSLJG34isf4ofFDwx8GfAupeMPGOpDSPDmm+X9qvPIkm8rzJFhX5I1Zmy8ij5V/irQ9FSUtYnY0V8qf8PRv2Y/+imf+UHU/wD5Go/4ejfsx/8ARTP/ACg6n/8AI1Az6ror5U/4ejfsx/8ARTP/ACg6n/8AI1erfBH9pj4c/tHWuq3Pw68Rf8JFBpUkcd4/2G4tfJaQNt/10abs7W+76UAeq0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAxvu1+Tv7fH/ACc54j/64Wf/AKTx1+sTfd/Kvyd/b4/5Oc8R/wDXCz/9J465sR8J8zn/APui9T55r9Uf+Cf/AI0Hir9nqw095A1zoV3NYP8AN8xXd5sf/jsgX/gNfnnZ+DRqnwC1HxHEN0+ka/Dbu392KeFv/ZkT/vqvoj/gmv49i0XxV4y8O3cyxW11YLqamT7qNA21v/HZA3/Aawo+7I+dyipLDYuPN9qJwn/BQDxp/wAJV+0Je2CPvttDs4bFdv3d23zJP/HpNv8AwGvm1lZfvLtrqvF2sXnxR+Jur6jCrSXuvatJJDF/tTSfKv8A48q1rfHzw/B4T+L/AIk0O1/499NnSzi/3Y4lX/2Ws5e97x5eKlKtUqYj+8foX/wTt/5N0g/7Cd1/Na/I/wD4KRf8ntfFH/r8tv8A0jgr9cP+Cdv/ACbrB/2E7r/2WvyP/wCCkX/J7XxR/wCvy2/9I4K74fCfpmX/AO60/Q9+/wCCJv8AyXjx5/2Lf/t1DX7JV+Nv/BE3/kvHjz/sW/8A26hr9kq1PQP5rf2sv+TpvjH/ANjnrP8A6XTV9+/8EMf+a2f9wT/2/r4C/ay/5Om+Mf8A2Oes/wDpdNX37/wQx/5rZ/3BP/b+gDu/+Cnv/JQ/Bv8A2DJP/R1eDfsp/wDJxnw//wCwnH/7NXvP/BT7/kofg3/sGSf+jq8G/ZT/AOTjPh//ANhOP/2auCX8Y/NsZ/yNf+3on7JVm+ILWS80PUYIF3TS20saL6symtKlrvP0k/AL/h1x+03/ANE0/wDK9pn/AMk1418ZvgN44/Z58VW3hz4gaGNA1e5s11CK1+2QXGYGkkjVt0Mjr96KQbd2flr+mKvxV/4LVf8AJ03hb/sTbX/0uvqAPjH4X/C7xP8AGbx1pvg/wdpp1bxHqXmfZbPz44fN8uNpm+eRlVfkjZvmb+Gve/8Ah1x+03/0TT/yvaZ/8k0n/BLj/k+v4Zf9xP8A9Nl3X7/UAfJmueENY+H/APwTqt/DPiCy/s7W9J8JWtle2hkWXypo0jVl3Rsyt0/havzHr9h/2vP+Tb/Hv/Xh/wCzrX48VxV/iR8DxD/vEf8ACfr3+xb/AMmy+Bv+veb/ANKJK/If/gpl+0FrPxi/aS8TeHmvnXwv4QvJNJsLBZMRrNH8txMy/wAUjSKy7v7qqtfrx+xb/wAmy+Bv+veb/wBKJK/Jr/gp3+zHrvwi+Pev+NI7F5PBvi67fUrfUIU/dw3UnzTwSH+F/MLuv95W4+623sj8J9lg/wDdqf8AhRnfsN/sCy/tg6T4i1i88Xx+GdG0i5S12wWwurmWZl3crvXau3Hzfxf8BrH/AG1f2E9e/ZD1rQHj1hfFnh3XWkhsr1LVoZlmXH7iSPc3zbWXayt82G+VdteEfDr4ueM/hHrDap4K8U6p4ZvnCpJJpt08PnKp+VZFX5ZF5+626vrH4Xf8Fefjf4JlSLxM2j+PbDPzDUrNba52/wCzJBtX/vpWpnYZ/wDwTT8e+PPhD+0ZoNpDpWtt4Q8SXKaRq8K2czW6tJ8sEzfLtVlkZfmP8LNX33+3b+z549+MXjHw1f8Ag/QP7XtrSxkhuJBd28O1vM3Bf3ki12P7KH/BQD4fftVTjRLRJ/C3jSOPe2gai6v5qqu5mtpV+WZV/wB1W43bdtfUuOPUVMo80eU5MVhoYql7Kofjz4m/ZC+Lfg3w/fa3rHhI2el2MLXFzN/aFnJ5cajLNtWZmb/gNeO1+yn7UX/JvfxA45/se4/9ANfjXXBUpxjLQ/PM2wNPBVIxpnrvgv8AZO+KvxD8NWXiDw/4W/tHSb1WaC4/tG1j3qrMv3WkVvvK1fUP7D/7NvxF+D3xc1TWvFvh3+yNNm0ae0Sc3tvNukae3ZV2xyMw+WNv++a97/YtXP7MvgjPT7PN/wClEte3bR0/SumnRivePpsBlFCEaeIu+bc+Rv8AgqL8Z/8AhUn7KevWVpN5Wr+LXXQLbb18uRWa4Y/7PkrIv+9ItfhBb2c15IyxQySssbyMqLuwqqWZvoFGa+6v+CwHxoHjz9oix8F2c3mab4MsvIkVT8v2242yTH/v2IF/3larX/BJv9nWw+MuufFbVNci36Onh6Tw6uUyRJfKyvIv+0scbf8Afyug+oPmv9jv4xv8A/2kPBPi95/I02C9W11Hn5fsk37uYt/uq27/AHlWv6OEdZY1dG3K3IZe9fy7eLvC994G8Xa34b1SPytT0e+n0+6j/uzQyNG6/wDfSmv34/4J8fGn/heP7Kng7U7if7RrOkw/2HqJZtzefbhVVm/2mj8uT/gdAHU/tUfHKP4D/C661i3EcuvXj/YtMgk+75zD/WMP7qqC3/fK/wAVfkhr/iLUfFet3er6xezalqN3I0k9xcNuZ2r6+/4KceIJLj4ieEdD8w+RZ6W175Y/vTTMm7/yBXz7+zP4XtPGXx68E6TfIJrSTUY5Jo5EyrrH+82t/stt21wVpc1TkPz3Nq1TFY36t9nY734ffsHfFLx/oMGrLb6ZoFvPH5kEetTtHI6/wt5ccbMv0baa8q+K/wAHvFHwX8RJo/iiw+y3EkfmQzxSeZBcR/3lav2K+I3j6w+GPgnVfFGqQXE+n6ZD50sdoqtIy5x8oZlXPPdhXyvrv/BQH4MeJprWbV/BOu6rLa7hA15pVnM0W7bnbun+XdtX67a0lTpxOvFZTgqMfZ+05ZHgv7BvxQ8Q+C/ixaaLBb3194Y16ZbS7hijaSO3m/5Zzf7O1vlb/Zb5vurX1H/wVE/5MV+Jn/cM/wDTnaVS0H/gor8Mry+stMsvD3ia2a4mWCEfY7VYwzNt/huPVqu/8FQm3fsK/Esj/qGf+nO0rWnblPdyqNOnS9nTqc5+AdfSfgv/AIJ2/tA/ELwjpPibw/4A/tHRNWtY72yuhrOnxebC67lbbJcKy8f3lr5sr9H/AIK/8Ffv+FR/CTwj4I/4VL/bH9gaZBp323/hJPI+0eWgXd5f2Rtu7+7uatj2jwv/AIdcftN/9E0/8r2mf/JNfoZ/wSx/Zo+JH7OPh34gWvxD8Nnw9Pq13Zy2i/bra681Y1l3/wCpkbb99fvV43/w/O/6on/5df8A9xV90fsj/tGf8NT/AAbtPHv/AAjw8M/aLu4tP7P+2/a9vltt3eZ5cf3v92gD22iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAGN938q/J39vj/k5zxH/ANcLP/0njr9Ym+7X5O/t8f8AJzniP/rhZ/8ApPHXPiPhPmc//wB0Xqdx+y54LPj79lL41aMieZOxjuIF/vSQx+cg/wC+49tfLvg/xnqPgfU57/TJPLnmsrqwb/rncQtC3/oW7/eVa+8P+CYa7vA/jpSdy/2hD/6LaviH4weD2+H/AMUvFPhzbti07UZoYf8Arnu/dt/3ztrnl8MZHzOKpyjg6FaP9anoH7F/g3/hNf2jPCcbpvttNlfU5m2/d8ld0f8A5E8usj9qr/k4rx//ANhOT/2WvpH/AIJieDRJqnjTxXMn+phh0y3bH3tzeZL/AOi4a+b/ANqz/k4z4gf9hOT/ANlpcv7sdSj7PLIS/mkfef8AwTt/5N1g/wCwndf+y1+S/wDwUqs5rH9tr4mrNH5ZkuLWRf8AaVrKBlNfrR/wTt/5N0g/7Cd1/Na+TP8Agr5+y3rWsatafGbw5YyX1jb2K2HiCGFdzQLGW8q6x/d2tsZv4dqf7VdkPhPvMv8A91p+h5z/AMEVdQgg/aC8Z2skqpcXHhlmiRv4wt1Bu/8AQq/Zmv5h/hj8TvEnwd8caX4s8JarNo2vadJuguY9rdQVZWVvlZWXhlbrX1P44/4K0/Hfxp4Rn0KKfQfDbTwtDLq+i2csd6VYYba0kzqrf7SKrL/DtrU7z53/AGnNSt9U/aU+LN9aSia1uvF2rTwyL0ZGvJWVh+Br9Df+CHNlPHp/xkvGj/0aWTR4UkPdlW9Zl/8AIif99V+WmlaVe6/qlrYafaz6hqN5KsNvbW6NJJPIxwqqo5Zmav38/wCCfn7Ntz+zL+z3YaPq6qPE+sXDatq8and5M0iqqw5/6Zxqqt/tbqAPn/8A4Kef8lC8G/8AYMk/9HV4N+ymcftF/D8/9ROP/wBmr3r/AIKe/wDJQ/Bv/YMk/wDRwr460nVr7QdSgv8ATby40/ULdvMhu7SZo5I2/vKy/MtcFT+IfmOYVPZ5jKf8skfu3uX2/OjcP9n86/FL/hfXxM/6KL4s/wDB3df/AByrmj/Hb4lTaxYxyfEPxU6NcRoytrd183zf9dK3+sRPoVxBRvbkP2lr8Vf+C1X/ACdN4W/7E21/9Lr6v2oT7q/SvxX/AOC1X/J03hb/ALE21/8AS6+roPrDyv8A4Jcf8n1/DL/uJ/8Apsu6/f6vwB/4Jcf8n1/DL/uJ/wDpsu6/f6gZ43+15/ybf49/68P/AGda/Hiv2H/a8/5Nv8e/9eH/ALOtfjxXDX+JHwPEP+8R/wAJ+u37GcyW/wCy/wCCJHbZGltMxZuy/aJK5jxf+3J+zFrWkTaT4g+IfhzWtLvo2jms5reS8hlX+66+Wy/99V1n7Fv/ACbL4G/695v/AEokr8Tf22v2atT/AGZvjjreitZSR+Gr+eS90K82/upbRmJWMN/eiz5bL/s7vustdkfhPssH/u1P/Cj9EI/+CeP7MP7WXhf/AITf4Wanqfh7S7q4kjW50VpEtmkVirD7PdR7l+b+Fdq/3a+Jf2w/+CeHi39kzSbbxJ/bVp4u8GzXC2h1CGBraaCVhlVmhLNhW28MrNyP4flrM/Y3/b68W/sh2+p6Ta6Tb+KPCt/N9ql0i6maBorjaqtLHKqttLKqq25W+6vSt39sb/go54k/ay8JWfhOPw1beD/DEd0t7cWsd613PcyKrBd0m2Ndq7i23b97b/dqjsPl/wCHfjjVPhr420HxToszW+qaPex3ttKpK/OjZ2nn7rdG9q/p2068XUNPtbxAVW4iWVVbtuXdX88v7Ff7MWr/ALT3xm0nRobSb/hGbGaO71/UNp8uC1Vs+Xu/56SbSir/AMC+6rY/okVQq4AwKAPK/wBqL/k3n4g/9ge4/wDQDX41V+yv7UX/ACbz8Qf+wPcf+gGvxqrhr/EfBcRfxo+h+vf7Fv8AybL4G/695v8A0okr0f4jeONO+GfgXxD4r1Z9mm6LYTX9wM4JSONmKr/tHGPxrzj9i3/k2XwN/wBe83/pRJXzh/wWE+NX/CD/AAC0zwLZTiPU/GF7idVb5vsVvtkk5/2pDAv+0u6uyPwn2OD/AN2p/wCFH47eO/GN/wDEHxpr3ifVpPM1TWb6a/um/wCmkkjM3/oVfQf7Mn/BQTx9+yn4FvvC/hDw94VvLW8v21Ge71i0uZbh5GjRNu6O4jXaqxrtXb/e9a+ffAPg+9+IPjjw/wCF9P8A+P8A1rULfTrfjI8yaRY1/wDQq/TL/hxj/wBVs/8ALU/+7ao7D85vjR8U7742fE/XvHOrafpul6prky3F1baRG8Vssm1VZlV3dvm27m+b7zNX3L/wRj+NX/CO/FDxP8NL24CWniO1/tHT42b/AJe7df3ir/tNCzN/2wrzf9sz/gm1ffslfC/T/GcPjf8A4TK0m1KOwuoV0f7H9m3xuyybvOk3Luj29uWWvmD4J/Ey9+Dfxa8JeN7DcbjQ9RhvGiU482NW/eR/8CTcv/AqAP1T/wCCnHh+S3+InhLXPLPkXmltZeYP70MzPt/8j18+/s0eKLTwb8evBOrXziG0j1GOOWSR8Kiyfu9zf7K7t1fpJ+0f8K9O/ae+CNs2hXNvPfSQx6voN9u/dy7o9yjd/ckjf/0Fv4a/J3XNB1DwzrF3pmq2Vxp+pWsnl3Fpcx7ZI2/2lrgrR5anOfnebUamFxqxP2dz9mPjt4Dv/ib8JvEnhfS5be3v9StfJhlunZYlbcp+ZlVm7f3a/Nj4wfsWeN/gr4KuvE+uanoF3p9u8cZjsLiZpC0jBVwrQqvf+9Vr4e/t5fFL4e6LDpX2jTvENpBH5cDa1btJIi/wr5kcis3/AALdXEfF39pn4gfGyEWviPWf+JYG3DTLKPybfd/eZV+9/wACZqqpUpyNcfjsFjaftOV85xPgX/kdvD3/AGELb/0YtfpD/wAFQB/xgn8Sj7aZ/wCnO0r4L+A/wp8UfE7x9pSeHNImvYbO8hnurnbtgt1Vlb5pG+Vf937zV96/8FQOP2FfiWP+wZ/6c7Sqw+x6XD0JRpzbPwEr9H/gr/wSB/4W58JPCPjf/hbX9j/2/pkGo/Y/+Eb8/wCz+Ygbb5n2td23+9tWvzgr6T8F/wDBRL9oH4e+EdJ8M+H/AB//AGdomk2sdlZWo0bT5fKhRdqrukt2ZuP7zV1n1p9gf8OMf+q2f+Wp/wDdtfdH7I/7Of8Awyx8G7TwF/wkI8TfZ7u4u/7Q+xfZN3mNu2+X5kn3f96vxv8A+Ho37Tf/AEUv/wAoOmf/ACNX3d/wSx/aq+KX7SGu/ESD4ieKP+Ehh0q1spLRf7PtbXymkabf/qY03fcX71AH6H0UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAz3ryDx/wDsr/DD4oeKLnxB4l8Nf2hq9wqrLci/uodyqu1RtjkVfuj0r2Dr2pD25o3MqlOFVctSNzhPhl8FPB/wZsb208H6R/ZNveyLJcKbqabeyrtU/vHbtXM+Ov2Tvhb8TPE954h8ReFxf6zd7fPuV1C6h8zaqqvyxyKv3VXt2r2D8M0cr3xS5UQ8PSlD2corlON+G/wn8LfB7QZNG8JaSNJ02S4a6kh8+SXdIyqrNukZm6Kvf+GuI8Xfsf8Awm8deItR13WvCZu9V1CXzrq4XUryPe/97asyqv8AwEV7T1680H24o5UEqFKUfZyiuU5X4c/DPw58J/Dq6F4X07+y9LWVplt/tEk3zN95t0jM36101xbx3UEkMsayROu1kZcqV9KmxS9BTNYxUVyo+TviR/wTB/Z++I+qz6i3hOfwzeztukk8PXjWsTN/sw/NGv8AwFVrzaP/AIIw/A+G6WVvEHjqSLduMLajabT/ALPFpu/8er77ooLPBvgd+xL8Hv2er86l4P8ACUMWs7dv9rahK13cr/utJ/q/+2e2veKWigDzD4m/s7+APjHqFneeMfD41a5tImigkF5cQFFLbsfu5F71x/8Awwp8D/8AoSif+4tff/Hq99pMZ70uWJyywtCo+aVNfceBf8MKfA//AKEs/wDg2vv/AI9T7f8AYZ+CVrcRzReDGSWNt6MNWvuG9f8AXV73mjNTyR7Gf1LDf8+4/cKOOK8R+NH7G3wh/aF8UQeI/H/hD/hINatrNbCG4/tO8ttsCvJIqbYZlX70knzbd3zV7fRVncfPfwv/AGD/AIGfBnxzpnjDwf4HOj+JNN8z7Le/2xfTeX5kbRP+7knZW/dyMvzL/FX0HS0lAGB4v8JaX498O32g67a/bdIvo/KuLfzGj8xT23KysPwNePH9hP4If9CWx/7it9/8er3zdnuDThmlyxZz1MPSrO9SKZz3gnwVo/w78N2fh7QLP7BpNirLb2okaTywzMx+ZmZvvM3U1Q+JHwn8IfGPwzNoXjXw5Y+IdKkO77PfR7tjY+9G33o2/wBpSrV2OKXoKZtGKiuVHw74m/4I+fALxBcGSwHirw2jHPk6Xqqui/8AgRHK360nhf8A4I9/APQbrz9QPirxLHn/AFGqaqqJ/wCS8UTf+PV9yUUFHJ/D34aeFfhT4dh0Hwh4esPDmjxHctrp8KxqzcZZu7N/tN83FdZRSUAYXinwvp3jTw/faFrFqbzStQha3uofMaPfGwwy7lZWXPsa8cP7CfwR/wChKbH/AGFb3/49Xvm49iPypwz3FLlTOepQpVtakUznvBPgrR/h34bs/D2gWf2DSbFWW3tRI0nlhmZj8zMzfeZuprzf41fsg/Cb9ofXrTWviD4VfxDqVnb/AGW3kbVby3VItzNtCQzIv3mPzbd1e1cetLwBTNoxUVyo+c/h7/wT9+Anwt8ZaV4r8MeAhpmvaXL59ndtrF/N5L7du7ZJOyt97+Ja+jaKKCjivil8KfCnxs8EX3g/xrpa614evXjNxaNNJDvZJFkUrJGyuvzKv3W9vWvCf+HXP7Mf/RM//K9qf/yTX1XRQBzfgnwTo/w58H6V4Y8PWjWOh6Vbra2ds08k3lRL91d8jMzY/wBpq5f4n/APwL8Y4UPijw7BfXCriO8j3Q3KD08xdrY/2T8tekLj1p9MyqU41Y8s0fJN9/wTX+F11MZIdT8T2af884L2Hb/49CzfrW54X/4J8/CPw9NHNcWOp68UH3dSvPlPuyxrGK+mPwo/SsvZxOKOXYWMub2aMzw94a0nwnpcWnaLptppVhCP3dtZwLFGv0Vaw/ih8LfDHxm8Dal4P8Y6aNW8Oal5f2qzM8kPm+XIsy/PGysuHjVvlb+GuwBOaWtD0VaOx8q/8Ouf2Y/+iZ/+V7U//kmj/h1z+zH/ANEz/wDK9qf/AMk19V0UDPlT/h1z+zH/ANEz/wDK9qf/AMk16b8D/wBlT4X/ALON1rE/w78Mf8I7NqqRx3jf2hdXXmrHuKf66Rtp+Zvu169RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAn8NNp3UVgeJleaXSLfzpoY57vZJ5MzRsy+TI23cvP3lWnFXYmb26l3Vjf8Ira/8/Gpf+DK4/8AjlH/AAitr/z8al/4Mrj/AOOU/dFqbO6jdWN/witr/wA/Gpf+DK4/+OUf8Ira/wDPxqX/AIMrj/45R7oamzuo3Vjf8Ira/wDPxqX/AIMrj/45R/witr/z8al/4Mrj/wCOUvdDU2d1G6sb/hFbX/n41L/wZXH/AMco/wCEVtf+fjUv/Blcf/HKfuhqbO6k3Vj/APCK2v8Az8al/wCDK4/+OUf8Ira/8/Gpf+DK4/8AjlHuhqbGaPwrG/4RW1/5+NR/8GVx/wDHKp6t4ct4dLu5EudRWSOJmVv7RuOG2/79Fl3DU6YUcVS0uRpdNtZHbczRKzN/e+Ws7xXubTIljkki8y7t42aGRo2AaZVb5l+tJK75Qvpc3d1G72rH/wCEVtf+e+pf+DK4/wDjlH/CK2v/AD8al/4Mrj/45T90Wps7qN1Y3/CK2n/PxqX/AIMrj/45Sf8ACK2n/PxqP/gyuP8A45R7o/eNrdRurG/4RW0/5+NS/wDBlcf/AByj/hFbX/n41L/wZXH/AMco90NTZ3Ubqxv+EVtf+fjUv/Blcf8Axyj/AIRW1/5+NS/8GVx/8cpe6Gps7qN1Y3/CK2v/AD8al/4Mrj/45Sf8Iraf8/Go/wDgyuP/AI5T90NTZyPSjI9Kx/8AhFbX/n41L/wZXH/xyj/hFbX/AJ+NS/8ABlcf/HKPdDU2BSmuX+wppfiLTFhnvGSZZhJHNdyzK21V/hZmrqaTVhobxRXMy2K6p4nv45p7tYorW3ZI4LqSFVLNJu+6y/3Vq7/wi1r/AM/Gpf8AgyuP/jlPlS3Fdmzn2o3Vj/8ACK2v/PxqX/gyuP8A45R/witr/wA/Gpf+DK4/+OUe6Gps7qN1Y3/CK2v/AD8al/4Mrj/45R/witr/AM/Gpf8AgyuP/jlL3Q1NndRurG/4RW1/5+NS/wDBlcf/AByj/hFbX/n41L/wZXH/AMcp+6Gps7qN1Y3/AAitr/z8al/4Mrj/AOOUf8Ira/8APxqX/gyuP/jlHuhqbGfal3Vi/wDCLWn/AD8aj/4Mrj/45S/8Ira/8/Gpf+DK4/8AjlHuhqbGcUferGPha1/576j/AODK4/8AjlN8Ku39ksskkkrR3NxGrSuzsVWaRV+Zv9lRRZWugu7m4KTdWZ4huJLXQNRljYxypbSMrL/CwU4qna+GLZreNmuNS3Mi5/4mNx/8XQoq12FzoN1G6sb/AIRW1/5+NS/8GVx/8co/4RW1/wCfjUv/AAZXH/xyj3Q1NjPtS7qxv+EVtf8An41L/wAGVx/8co/4RW1/5+NS/wDBlcf/AByj3Q942d1JurG/4RW0/wCfjUf/AAZXH/xyj/hFbT/n41H/AMGVx/8AHKPdDU2t1G6sb/hFbX/n41L/AMGVx/8AHKP+EVtP+fjUv/Blcf8Axyl7oamzuo3Vjf8ACK2v/PxqX/gyuP8A45Sf8Ira/wDPxqP/AIMrj/45T90NTZ49aOKxv+EWtf8AnvqP/gyuP/jlZ2saQmkw29xa3V8Jlu7df3l7NIpVpo1ZdrNt+61CSbsF2dW1IKFrnvE1ot7faLbSNJ5MlxIHWORk3fuZP7tJRuxt2Oh3Uu6sT/hENL/553H/AIFTf/FUf8Ihpf8AzzuP/Aqb/wCKp+6L3jb3UbqxP+EQ0v8A553H/gVN/wDFUf8ACI6X/cuP/Aqb/wCKo90PeNvdRurE/wCEQ0v/AJ53H/gVN/8AFUf8Ihpf/PO4/wDAqb/4qj3Q94291G6sT/hENL/553H/AIFTf/FUf8Ihpf8AzzuP/Aqb/wCKo90PeNvdRurE/wCEQ0v/AJ53H/gVN/8AFUf8Ihpf/PO4/wDAqb/4qj3Q94291G6sT/hENL/553H/AIFTf/FUf8Ihpf8AzzuP/Aqb/wCKo90PeNmnfw1zmj2cem+ItRt7fzBF9lt5MSStJ8zNMD95v9la6PoKUlqNC0UUUhiCsbXv+QloH/X83/pNNWyKxte/5CWgf9fzf+k01VHcTNmg9DRRUjPjnw/8WvHE1xoFhcaxeSr/AG7He3V3tX99ZzXX2eO3+7/eWT/vmu18P/tAeJPE0k1tbDSFefUNPt7adoXby47lplbzI1mb518pfl3L975lWvolbWHtDH/3zXOeKvF+g+B1sm1UNHJezNFbx21pJPJJIqtIQqxqzfdVmr2ZYqjWfLChqed7CpT1lUPHrX9oXWWsbFrsaZb3l5aWDwKwZfOmk1BrWbau75tqru29VrEh+NXibwhaxvd6nbavdX2rXbTLfxeUq28d8lr5cP7zr95tqq3+1/er1yf4x+E2XdYP/aLQrayAx20nlpHdSKkbeZt2ru3fd/2aZH8bvAl1NHbC9kZmfYrNp0/l8zeTu3eXt2+Z8u77u6tYy/6h/wCvuMv+4pwXij4x+I5tF8RyWmtaLpF1a3nlfY/s7Nd2UK3y27NNubbtZW3bvl+98v8AepdU/aD1mwtdVSBtIudSsItZaSJUb5fss0a27MvmfKrLIW/2sfLXo2ofGDwZp91rEF1etHPp4UXkb2U25laXyVK/J+8XzG2/Luq/o/j7wzrl5a21rJm+upprYW81pJHKGhVWkWRWUFdqsn3v7y1lzxiveof1b0NeWUpe7UPOtQ+MHivR/GV5oU9vpcq2Nt5jytthe4/0VpvOjjabcyqy7dqq33W+Zfu16h8PtU1PW/Bej6prEttJfX1rHdMLSJo44/MVW2gMzZ25610f2eNpC5jUtt27tv8AD6U9UCrhRtArz6laFSKUYWOqFOUX70iWs7XP+QRf/wDXvJ/6DWjWdrv/ACCb/wD695P/AEGueO5rLYdov/IJsv8Ar3j/APQapeK/+POz/wCv+1/9HpV3Rf8AkE2X/XvH/wCg1S8V/wDHnZ/9f9r/AOj0q18Qvsm5RRRWZZ5L+0Rq+vaT4N0weHL99O1S51a3t1kj6srbsp/wLbXkui/HvxKreItY+1qtvqctnLpFvqUYMFtDItw3z5aPbuWFT8zfxfKrV9XPEsoUsFbacjcK891T4teGdBv9SstTDQPZ3TWqrBbSXDSeXbrcs22NDt2rJur1sLWh7P2XsuZnn16cufn9pynB6P8AHDxNq2oaRMINNWwum0qGS3WGRpPMu7ZpWCybv4WX+7WLqHxo8R+N/Ddna6bqtppd5LDorXk1hGzSQzXV1JDNH975du1fl+996vTY/jf4QW81GJ/tMUdm9uiTrZSMtw0kPmp5O1ct+7+b/dqab4veFY3aOwf7fIsll5kkMEnkqt08fkt5m3b83mBlXNa35ZfwOxHxR/innGm/tCa3dT63Cp00WsDW62946MPskcl41u0lwvmN91V3fNtb+9to1D4zeI9L1qS7/trRb3T10qwuVWGBlt5vMvvImnjdm3bVX5v7q/8AjzeiWPxq8C3s0cEV7IZLhlXc+mzqreZJ5aszeXt2tIu3d93dVrxp8StJ8GXdxa3FlPdta6XLqE/2aHzCkKusaptH947v9ldjbqfNH2lvYf19wuV8vN7U4S3+OHiHUry8k0yPTr6ytbPV79VhhaRryO1uvJjWNlk/iX+L5v8AdqTwb8XPFniy98M2jNokS6le3Ecl5ABcKYY7eObCiOdlSTczL8zN/C23+Gug0n43aZfNoXk+H9Ut/wC1tSl02OWS28uOEqzLuYtt+8yn5fvfK392uz8G+IbPxPpstzb2v2R7W8uLKW3YLuikjkZWHy+uN3/AqxquME1Klb+mXT5pS/iHT0tFFeSeiYWqf8jJov8Auzf+grW2O9Ymqf8AIyaL/uzf+grW2O9VLaJMepi2P/I2ap/16Wv/AKFNW2axLH/kbNV/69LX/wBCmrbpyCOw08D3r5I+JvxQ8aaN4i+Iemafq11HFNM0emyrt/0D7LbR3E+35f4levrfp1rnfGWuWnhPQLnVLm3SSKNo0Zfu58yRY/T/AGq68HWjRn71Pmuc9enKpHSXKeG6h+0Rr+m3ut21uNPuY7HTLmeH7Su2dZreOFv3irJuZW8xv4V3fw1ran8dNe8N3F3BqraSi2d1fWcl75TwxSSR2MVxCvzSfKzNJt27vm2/LXW618cfBum2er3I+0XsthHIzww2Em6by5BDIqsy7W2syq3Py5q7d/GLwXbSalHdX6xNp8b3NwJLSTK+WF8z+H5nTcu5V+Za7pa7Yc5f+4p4/J8YPFWk3WtavLqlszz/AGGCzs7mHZaW7SWP2pvvSL127dzNu/u7vu10tv8AGzXtajkEF1o+j3L6VHcQWVxDJJc3Mj2LXHmQ/N8yrJ8u1l/hb5t3y12d58aPC1ncXcN8lxbxxvCsYawmaSRmhabHk+XuXbHGzfMO1bnhfx94a8WWt3d6PdLJHYxr50jwNDsjZfMVvnVflZfmDfdqKk1y80qP9fcOEfe5Y1DyTwj8eNaMei6de3mm315dSaPHHIRtluI7iJmmfbu+8rLt3fd3UyD46eMzp/hFpbXSGl1u0+3b2/0aJl85E+zo0k3+s2tu3LuPzKNv8VdVF8d9Fa/8O2sfh7Umn1eGCeDyrNmEccrfuzu27fuq0nyn+Bq0NJ+MNpdX62Oo+H7jTLmC/tLOSOR45fsxuVZoWbb91tyqrL/DuWrkuV8zokx/l9obPwt8Sav4s0vUdR1NrUxDUrq1tYLWJkZI4Z5IvnZmbczbB/drvBUccaxriMBV/wBmpO/FeLUlGc5SjGx6cI8sbAelY/hX/kFz/wDX9ef+lMlbH8NY/hX/AJBdx/1/Xn/pTJS6B9ok8Uf8izq//XpN/wCgNV2x/wCPWH/cWqXij/kWdX/69Jv/AEBqu2X/AB6w/wC4tP7IfaJ/pXK/E7ULjR/h34nv7OZra7tdMuZ4pl6xssbMrfmK6quW8WeOtE8Jy29vq1zJG92G8uOK2knbapG5mCq21V3L8zcfNTp8zmuVXJn8Op82+HvjF4wsdU0641PUbiS30bSry3vo5I9y3d1HD5yzMq7d37uSH+Jf4q6eP4/eLb3RXktzopurZdWkmmWFpo5Vs445F2bZtvzeZt3bmWvUdQ+L3gzTZtSjub8QDT1kaZ/ssnlt5e1ZFjbbtkZdyqyruK55qC3+M3gaYXareNB9jguJ5hPp80e1YQvnL80f3lVk3L97DLXuzmqnvLD/ANfcebGny+77U4XVPjvrFxcXOlWz6dZak9xdRxoys0sVuumLdRybd3/PRtu77vy1leFfjZ4h0m+8LaJNPD4g+0WUMl41woW7mmls5LpfL/efMvCr/q9v+1/DXpkvxo8LG+sGiyYriWSG4urm3a3a0WO2a43SLIqsFaP7vH8VMk+NvhAX2kJE08xu5JojN9ikj+yeVD5jebuXdGu1lb/dbd93ms+lvYdCut/anDQ/GDxJq8HhS8h8QaCReajsuY7O3Yqu6xeZbWTdL/rPMXb8rfe2/wC7SaX8e9e8SrpcOnSaObm7TR45pPKeVbea6ExnVlWT+Hy1wu7j+KvQZPjH4MTRxewXTzr5zKtrHZSeeZFi87Pl7Nw/d/PuxjbViP4jaZHoHhPUo9NkMviLy5ILSBVaSMNC07H5c7tqq33fvMf9qolKKVpUf6+4f/cQ8yn+O/i1f+EkMdlpMcljN9mjS4ZTLC322O33SQrN5m1lbd92P+H733q+gdPW4WzhF7LHcXKqPMkjj8tWb+8F3Nt/76rx7/ho3RLjw3retR+G9YlhsWjDZs2Xzd25lYsy7VVVVW3N/eWvTdH8WQ6z4h1rSBFJDc6b5LMW/wCWkcse5XX/AIErr/wGufFQlb+Fy/0jahKP8/MdD6VjeKv+QbB/1/Wf/pTHWz6VjeKv+QbD/wBf1n/6Ux158fiR1y2NodKxNZ/5DWg/9fEn/oiStsdKxNZ/5DWg/wDXxJ/6IkqogzbpaSlqCjwz9oTx1rXgTxB4OvdPvJotPtzd32pWsf8Ay828Kxll/BWZvwrznTPjv4v8H+G5zqV5b6jqy6jdSSpqi7V8lfs/7mNty/MvnN8qqzf8Br3u8+K3hOOXVIpr7/kGB/tEjW0nl/KyxssbbdsjbmVdq7vm+WqGpfGjwNawxS3d8yKwkkdTp05aHy5FjlMi+Xuj2syq28L96vcw81GnGEqHN/XoeXUjzTco1eU4XWPjh4r0ybXJYodNuLeE6zHaW628nmK1ltZWdvM+fcrfdVVqnrfxe1jXvE2nvp2tQQ6JZ6tcJJ/Zyeb9rjh05brazK3zfNuX5a9LufjR4KsreG5ku5tsxuvlXTpzInk7ftG5fL3Lt3Lu3Cqq/GrwnplxfreMLCG0u2t0kWHzBKqwxSPMvlj5Y1WRcs3pSp7fwP6+4Jf9fTz3R/2hNf1PR3a4utA08/b/ACP7YmVmtIY/sf2hVkVZW+Zm/d/6z+9/F8tXbX4zazo/jW/h1TV9Mk0htXjtPni8tbWFtP8AOVlfd91pPlVmX5vm/wB1eyb41eDIG1ZLzz7OGxvWsm8ywkYTNHGsrSJtVt0aq27d2+9/EtXLz4seHpfGGm+H7dG1G7vrk2slxDC3kxssDTD97t2s23b8qtuXdTdrv9x0/p7B/wBxTzqH46eLLvwzf6wtvprR2em6VcNCsD/6y7X5pGdpVVY4/ve/95fvV1XgH4jeJvGPifTtPuhpUFp/ZbX9y1svnef/AKRLCnlssrKqsqq3/LT+JaveJ/jNovhObVlm0u8uI7K8h095LW2aQSO0YkdflU8Rxtu+b73O2mR/GQQXGnLJ4TvbRb+yaWx81o45JWjtvtDReX95Qv3d33d1RKLnD3aVv+G/pjjLll71Q9Ypay9B1q28R6Jp+qWbb7W+gjuYmb+6yhl/nWnXjNcrsemYtt/yNmo/9edr/wCjJ62jWLbf8jZqP/Xna/8Aoyeto1UiULRRRUlCCsbXv+QloH/X83/pNNWyKxte/wCQloH/AF/N/wCk01VHcTNmlpKWpGNPrXAfEjwNqfjHVPC0+m6k2l/2XfSXE1xEV8wK0Ekfyqysrct/FXoFJirhN03zImUVNcsjzLTfgRomlaRd6dbXd4ltc/2fnLKzD7I6sn8P8RX5qhT9n/RRarB9v1DaIVg+8n3Vvvtn93/np8v+7XqeaN1b/Wa38xl7Cn2PIF/Z10ZNQvrr+1NQY3MnmmLEPy/6Ut1jd5e5v3i7dzbm2/LWt4Z+Hc1h8VPE/iy6SGOO+hitrWGGZn6KvmTMCq7WbbEvy7v9X96vSAtLj1pSxNWSakwVGEdhaWiiuY3Cs7Xf+QRf/wDXvJ/6DWjWdrv/ACCb/wD695P/AEGnHcmWw7Rf+QTZf9e8f/oNUvFf/HnZ/wDX/a/+j0q7ov8AyCbL/r3j/wDQapeK/wDjzs/+v+1/9HpVr4hfZNyiiisyxCM15zqXwX0rU9cvdTe9u1mu5riZlRlCq0totq2Pl/uru/3q9G9aSrhUnT+AiUIy+I8fuP2ddGuI1Q6he/u/srp50NvMqyQW5tw22SJlbdH95W+Xd8wxW4PgzpKRXka3V1FHeT6fctGoiUK1n5flqqhMfN5XzfX5dteibqM1u8VWf2jP2FPseWW3wC0a3tYoF1G+2JDb26/NH92G8a8X+H+823/dq140+FMfjXxPLcXUitpV3pi2N1H/AMtd0dws0e3ttb94rfhXpPFHFT9Zrc3NzB7Cny8tjgNN+EOjaPomgaXZedb2+j366ijKV3TTKrLuk+X+Lcfu1pfD3wxN4Z03URePG17f6ldahKIjlV8yQsq/8BXaK637tB6ColVnJWky404xfujqKKKyNDC1T/kZNF/3Zv8A0Fa2x3rE1T/kZNF/3Zv/AEFa2x3qpbRJj1MWx/5GzVf+vS1/9CmrbrEsf+Rs1X/r0tf/AEKats05BHYTrWB428K2/jLw/PpNzLJDDO0bNJFjd8kiyDr7rW+MU6pUnGXMglHmVmeVal8A9G1K0kt5dQv1V4L+HcrR5X7VcC4Zvu/wuvy1DN+z/o1xJr7SXt1u1lJBOyW9usiySbfMkWTy92WZd23dtG5vlr1rmjmur61W/mMPq9L+U871j4N6ZrniS51iW+vI7meXzGjjZdn/AB6yWv8Ad/uyM3+9U/hn4Uab4Xs9Ugiubm4i1Kyt7GUTMvyxww+Su3avda73mj8az9vU5eXmL9jT5uax494b/Z9023k0LVdWbzNe0uzgtFlh2tHuhjaOORdy/e+bd/vU6x+CMmg6Rp2mWmqz6laf21b6rfTakI/Odo2aVm3RxqZGaRY1+b+GvXuKOa1liq0vikT7CmugtLRRXGdA3+Gsfwr/AMguf/r+vP8A0pkrY/hrH8K/8gu4/wCv68/9KZKfQn7RJ4o/5FnV/wDr0m/9Aartj/x6w/7i1S8Uf8izq/8A16Tf+gNV2x/49Yf9xaf2Q+0WD0rjfFngNPEuqWOqQ6rqGi39rDJbfaLBo9zwyMrPGd6tjmNPmX5q7Kk4ohKUHeISipKzPKNW+AOj6v8Ab45tT1E2ly11JBaq0ey1kuHVp2U7NzbmX+Ldt3NVfxd8BINR03XH069mGqXkWptCtyyrB5l5Gqtu2ru2r5a16/tNHSumOKrR+0Y/V6b6HkS/ADStQtQNYv7/AFK7mL/apneNPOVrQ2vl/Ki/KqN8v8W7ls1MvwB0Z9LsrSS9uH8h7jeYYLeDzkmh8mSNljjVfu/xfe3fxV6xzRzR9brfzC+r0v5Tye0+AOmWGl2lta6pfWd3ayyNHf2kFrDL5ckPktGyrDtYbf4mXdu+bdV/V/hSP7M8FWNjN5kHh7/RS1wfnkt2tXt26D73zI3/AAGvSKNtR9ZqOXNJlewgeW6Z+z/4c0XwZrXhyy8+3t9XjWO4ul2+ftVVVRnb0+X/AMeauk0DwtPpvjbxLrdw8ey/S1traOM8iGFW+Zv9rfLJ/wAB211tLUyxFWd+aV7/ANfoONGEfhD0rG8Vf8g2H/r+s/8A0pjrZ9KxvFX/ACDYP+v6z/8ASmOso/EjSWxtDpWJrP8AyGtB/wCviT/0RJW2OlYms/8AIa0H/r4k/wDRElVEGbdLSUtQUeYzfBWwmi1WzOsaommX0zXUNjG8ax2dw0yz+dH8u4t5i7l3btvzVTl+AOj3kN8bnUtQlu763nhu7omNWmaaaOVpPu7Vb9yq/L8u3tXrGaK6Y4mtH4ZGHsafY8Y174DtqXiS3ksdYurHTJzqkt/JEyeczXnl7o03Rsu35G/2lqxefs5+Hby586OeeB1uGlTMMMypG0MULRhZI2X7sKtu+8Gr2DJpMmtPrldKykT9Xpfynk2ufs/6PrGpT3b3l1E0l5JexxmC3njhaSJI5FVZImXawjjb5s7WX5a07X4L6dZ+KLfWYNQvooLe9fUU0tDGLf7Q0Hks33d/3f4d22vRqKz+tVrW5ivYU+x4/rvwHsPF+p65HrMmdOvNQ/tG18hv3qyParBKrbl/2dy//Y1oN8HRpWu6lruj6jMLx7A2Fpp91HH9lgjWPbHGjeX5kce75m2t81eo0U/rdbl5eYXsIGB4L8Or4R8JaPoqyecun2cNoJP72xQua3/4aQYp1crblK7Nox5VYxLb/kbNR/687X/0ZPW0axbb/kbNR/687X/0ZPW0aqQIWiiipKEFY2vf8hLQP+v5v/SaatkVja9/yEtA/wCv5v8A0mmqo7iZs0tJS1IwooooASilooAKKKKACiiigArO13/kEX//AF7yf+g1o1na7/yCb/8A695P/QacdyZbDtF/5BNl/wBe8f8A6DVLxX/x52f/AF/2v/o9Ku6L/wAgmy/694//AEGqXiv/AI87P/r/ALX/ANHpVr4hdDy74lXF7efEiezTV9TsrODSrWdIbG8kt18xprlWZtv3uI1/75rF/s+7/wChh8Rf+Di4/wDiqsfGDX7fwx8QNQv7mG4njXStMjEdqqtIzSXdzGqrudV+8y1yv/CyF/6FnXv+/dv/APHq9rD04ypR908bEVJRnL3joH0+7VWYeIPEj/L91dYm3N/49Xkmt/tI+FNA0+C+m8Q+M5IJtNXUmaC9m/cr5c0nlybpPlk228ny/wANdXrPxs0nw5HBJqml6tp6zSeXC1z9kXc33tv+urzTUvBvw51a31Wxbw34giW81S41S6WC6tF/0i4h8uRf9d93a3yr/DurSVFfZiZxrS+1I9d8B+IR8QPC9tr2na34ogs7hmWNZtaZmba2370c0i/w/wB6ug/s+7/6GHxF/wCDi4/+Krzq38W2tn4w/taHS9citm0/7Eulr9kWJWWTzPMVftO1W/hb5a6P/hZC/wDQs69/37t//j1XHDx/lJlWl/MdF/Z93/0MPiL/AMHFx/8AFV6H8F7y7uvDOoLd3l1qDW+qXUMct3K0snlq3yrub71eLXHxSt7OFprrw/rltAu3zJGjt9sfzfe+WbdXs3wRXb4d1lP+o1ef+h1wYynGEPdiduDqSm/ekej0UUV5J6oUUUUAYWqf8jJov+7N/wCgrW2O9Ymqf8jJov8Auzf+grW2O9VLaJMepi2fHizVf+vS1/8AQpq8J8L614n1rw3pV/c+M9a866tY5pPLW0VdzLu+X9zXutof+Ks1X/r1tf8A0KavmXw54603QfDfh7T54dQnvF0m0nZbSxkm2qy7V3Mq/wDTNv8AvmvRw9OM5e95HDiKkoR907v7V4i/6HTXv/JT/wCRqy9Y8Ual4dbTvt3jnXbddQvItPhbyrRl86T7qs32b5d23bub+Lb/AHqyP+Fm6X/0D9c/8FM3/wATXP8AjzXvDPxG8K6r4Zv4fEEEd5Gu6S00+Zbm3ZWVlmjbb8rKyqyt/s16H1en/Kef7af8xVg/ag0S+vraztPH/i+/urqZoIY7TSlk3bVjbd8tp93bNG27/ar1T7V4i/6HPXv/ACU/+Rq8J03wH8PbDxlB4kXQ9cvpbePba2V5obTW1v8AubSFWj3R7lZVso9rf7TV1nw+8YSeHPC8Fnri65qGoeZJLJOun3c67WkZlVWkXdtVfl+bdURw8ftRKlWl9mR6V9q8Rf8AQ569/wCSn/yNVHWNa8TaPZLdxeMNYkaO4t/3cy2rKytMqsrfuf7rVh/8LN0v/oH65/4KZv8A4mq1/wCNNP8AEFjc2NvHfQXMbWk3l31nJDuj+1xruXcvzfNRUo04x+EKdapzfEfV9LSUtfPnvBRRRQA3+Gsfwr/yC5/+v68/9KZK2P4ax/Cv/ILuP+v68/8ASmSq6E/aHeJ/+RZ1f/r0m/8AQGriPjFJMvg3RYo57i1FxqVnBI1rcSQsys3zLujZWrt/FH/Is6v/ANek3/oDVxXxkTd4V8Or/wBRey/9CrWnvH1MqnwyOC/4R6H/AJ/9a/8AB5e//HqP+Eeh/wCf/Wv/AAeXv/x6uXs/ihNqVqtxa+F9SltpP9XJ9qt13Lu+9t8yi6+J1xp9rPdXHhm+gtoY2kkkkvLRVjVfmZm/eV9B7GP8p4PtpfzGD48+KGg/D+81WzvV8UXN9YrDIttba1d7rqGSOeRpI91z91Vt5927/nn/ALS1B8LfipovxY8Qa1pelw+JLb+yWZZp7nxJI25lbb/q1uWkX/eZV+7Wdq3iHwj8QdQttcvPCranctp93pMN5Hqlov8Ao83yzx/LN/st833l+b+9Tby101fCcGh6X4dvNK0+HUl1bc19aTN5nmbmZWab5fm/i/hrL2L5vhNfbP8AmPYP+Eeh/wCf/Wv/AAeXv/x6j/hHof8An/1r/wAHl7/8ernF+I15L8yeFb5v928tP/jlH/Cwb7/oU9Q/8DLX/wCOVr7GP8pl7af8x3fw1hfTfidb20d3qEttLpF1LJDd6hcXCllmttr7ZGb5vnf/AL6rcvvjnp2g65rdlquj6np9rptz9le+CR3KzSeT5/yRws8n+p/eMWX5VX5sVyfwb8QJ4o8f6dfpbTWWdJ1OBoZ2VmVo7y3jb7rMv3lrtfiV4X8H2eg3lzrOiR38dxfx3P2fLK1xeSbbdfmz/EpVG/h253fLmvIqRh7eUZRPoMG1Kn7xn3H7SXg+xhupZm1GNUmuoId9pIEuWt03sY2+7tbayqzFdzI1a2t/G7w14X1AWery3Vrc+VDKyLayTeXvV2+by1baFVfmb7teY/2p8G768tr658L3cb3krSJNLaTLF5U0ny3HXb5Mkl1hW/6at8q/NVyf4pfC7xNfXF5N4f1SbUL2ONfm0+RZbjc1qqqvzfM37y2b/d/4FW31enf3YSsen7OP8rO7j+PPg2RrtBfXH+iiR2LWcy5jjEhaRfl+aPMLruX5Sw29a0rLxpZ+OvC41Kxt7yG3TV4bUG6haJnaO9SNmVW/h3K35VwPg/wD8NrhfCVhZaG18moaadYtb+7ZjK4j8hf3vP3m81W2/dyG+WvTLjQLDwv4bgstNt1tbUajbyLGrFvmku0Zvvf7TNXPVjQi0qV/mc1WMIr3TrRWJrP/ACGtB/6+JP8A0RJW3WJrP/Ia0H/r4k/9ESVyRMGeP+M7dtU+JXiCOe91JIreG1SGK31O5t4490bM3yxyKtUf+Eeh/wCf/Wv/AAeXv/x6o/iZ4lHhf4geIJ/sc2oS3ElhbRwQMqMzNDI33mZV/hasD/hYN9/0Keof+Blr/wDHK93D04ypx908PEVJRqS943LzRo7WznmSbXLmWONpFhj1y93SMq/dX9995q8T8RftMeDdBsVvEj8XahZtYx3a3MGuXCxbpI45PJZmuV2yKs0e7+Fd1d/qnxmh0Gazj1HQ7ixlupPLt1n1C0XzG+X7v7z/AGl/76rhf+Ec8D3UMVrF4DuFih1C5v1jg1i3X/SLiSOaRv8AXf3lj+X+HbtrWVH+WJMa380j1LwRdWvjfwrp+uRSa5ZwX0bSRxt4iuJtq7tv3o7llb/gLVuf8I9D/wA/+tf+Dy9/+PV5pZ+ILi3+IWp+KHsdWuX1Cxjsl0+S+sPKhWNmbcv7zd95m3V1H/Cwb7/oU9Q/8DLX/wCOVUaP90ylWf8AMdH/AMI9D/z/AOtf+Dy9/wDj1dX4N8eWfgn4R2ur63NqV5bxahdWnnLHNfTD/TZo49x+Zz/Cu5v9mvMf+FkTW81st14b1C2gmuIbbzmuLdvLaSRY1basm77zLXq/w38O2fin4X2VlfF2hj1i6u9qNt3NDqUsi5/2dyLXBi4wjy3ielganNP3jWb41eCofLjl8QW0Nw08Nq1rI22eKaT7scifeRvlbdu+7tbd0qza/Fjwpf293PZ6xb3dtbWTX8txA26JYVZkJ3fd3bkYbf8AZrzLxJ4N+GWneJL6z1DXNT0/UJL3KyC+ZVgkm86RoY2/hX/Smkb+75sfzL8tVNF/4U14f8PX1jF4laS01hlgmkknZnk8ubzuqr8qs1yv+yyyLt61l7GlKN4xke97Ony+7c9XPxi8DqrSN4r0hVW4+yMWvI/lm+b931+98r/98mp5vij4VttTsNPOuWhvr+f7NbQxvvaSTdIu0bf9qGT/AL4avH9N+H/w08beJ7C10fxHNdLa6dum0+1mcNcwNHFt3Sf3fLlbcv3m+0fw12vw6+FXhSO20HxNo11qdxGQl9aST3G4+W0MirGy4+6qzP8AL/eapqUqFNfaJlThE9Btv+Rs1H/rztf/AEZPW0axbb/kbNR/687X/wBGT1tGuCRyoWiiipGIKxte/wCQloH/AF/N/wCk01bIrG17/kJaB/1/N/6TTVUdxM2aWkpakYUUUUAFFFFABRRRQAUUUUAFZ2u/8gi//wCveT/0GtGs7Xf+QTf/APXvJ/6DTjuTLYdov/IJsv8Ar3j/APQapeK/+POz/wCv+1/9HpVPVPF2keB/BMOs65fxabpdvFCJrmf7q7tqr/48y1w/xW+PfgXwX8M7LxjqevRJok0sd3bTRxs7XSxSK7LGv97apq18Yuhyvx00O98QeNtRtbFoVvF03R7iP7SzLE3l31xJtZlVv7v92uQ/sHxf/wA+eh/+DKf/AORq3ND+Lfhb43eIT4r8Hap/a+iXmjWaxz+S0bBlnu9ysrKrKy10te/hJSjSjyng4qMZVZcx5J4j+F+seLZtMk1bS9DvF0+Zp4YG1KbymZo2j+Zfs3zLtb7tcLJ+yXDOq7tN0/5YfIX/AIm0nyr5ax7v+PT721fvf3q+laK6Ze98RhH3fhPmWb9lC4WG8WKHT/NvLpbmae51SSRtvmK0iq32ZdvmLHtZv7rNXrP9g+Lv4bPQ1/7iU3/yNXoNFEZSj8JMoxl8R5lq3g3xZrOmz2Lw6LBFNtVpFvpmZV3f3fJXdXsfw18aaF4V0XUhrOr2mltdazftCt3Mse/bIu7b/u7l/wC+qyao+BWZfEFttbb+817/ANKLKvPx0pSp+8ehgYxjP3T1P/hcHgj/AKGrSv8AwKX/ABpP+FweCP8AoatJ/wDAtf8AGvJPFXhLxNqnjrVdYs9QuLazs7OyksY45JN1xNG07SRx/vljXd+7VvMjb5WrjrO4+NGrW8sl/NqWmLZ3lpJbxwQ2nm3UfnfvPM+7uVV/h/d7lrwz3D6M/wCFweCP+hq0n/wLX/Gl/wCFw+CP+hq0n/wKX/GvGf7Z+Jn/AAgOnyfZ7pdc+1XC3DRx27TyKscn2ZvLbaqq0nlq38Sr/wB9V1vwosNc0nwvt8QXFxPrE2oXtzM083mbVa4k8tV2/wAPl7dq/wB2gD0RtQttY1Xw9fWVxHdWdxDLLFNE+5ZFZFZWU/xLj+ldMO9ebfDT/kUPht/2Bl/9Ex113iTxXongvSX1TX9YsdD0yMqr32pXKW8CsemXdlWqltEzj1Cz/wCRs1b/AK9bX/0KavjBdcbw/Jo8iR29z9o8O6crR+ZMsse3z/mbbC3ytu/8davonxJ+0J8OfAfiDSbvXPGGl2Fh4njhh0nUjcK9pdMvmZxMv7tfvfeZttfMureN/wDhBbHTNSWxbU1m0PRbbat1Dbbd32n5t0jKu2vVwf8AE/rsebjP4Z1+g6prXia3nm03SbO5ihk8iTdqTRtG21W2srQq33WVv+BVx2ufAfWtc8SanrjWK22oXlxHJuh1jbtjWONWj+WNdyt5Kt81em/Cq4kvF8R3EsPkSyahGzR+YreX/oVt8u5flb/gNd1XrylKXuyPJjGMfhPlVv2afHC6fPbweIL6CWaHyGn/ALYZvl3bvu/w/wAP3f7tdR4S+Evjjwv4oXUJf+JhYrayK0E+uM3nXEkzN5zL5e1dsbLGv/su2voKis4+6V8R559h8Wf9C/Y/+Db/AO11TbQ9aivLnUtSsbexg+z29pGsN55zM322Bv7q7fu16fWL4u/5AMv/AF8W/wD6Ux0qlSUqcuYdOMY1Int994+8MaZdS2t54j0q0uYTtkhuL6NHjP8AtKzVH/ws7wf/ANDZof8A4Mof/iq4Pwza28k/iBnhjdv7cvNzNGv/AD2rxZbf4leBfh/Y6tb2c2ua5eWMayaXJbzXvl3CxySM0m5maNpG2x7VXb8v8P3q+WPpz6k/4Wb4P/6GvQ//AAYw/wDxVH/CzfB//Q16H/4MYf8A4qvmWXXPidYah9ufSVuYriOFv7Nj0Ntsf+kXasqsu7955a23+sZV+b7y1s/Eu48bXmraho+g6fJZ2Mk0Mcd3aafuZbf920ky3G7b5m5pI/L+8q/NQUfQ1j488M6ndRWtn4i0q7uZTtjhgvo3dv8AdVWqz4V/5Bc//X9ef+lMlebeJLO3iu/DuyGNduuWW1lX/ppXpPhX/kF3H/X9ef8ApTJV9DP7Q7xMf+KZ1gf9Ok3/AKA1eQ/GLxNqjR22n2nh+aW3sL7Spo7+abyY7qR5fmjj+X+CNdzN77a7PxF8T/C02raz4Pi1q3bxPHZys2m/N5i/ufM9Nv3fmr5+vPjr4C+IXxA8U+HNB1ayufEOm6tpkN5bpbzJOfJDKzeY37uRVZtq7drfe3V04e3Nr/WxEuXll6HBaX48utD0OKOK10+5sbeORo7tri4jWSNW+Vv+Pbau5fm+9tX+9V7xbr2pXEOteHdR0uxbzI5LK6W2vriRlVod33ltm2syyfL/AHf4q56Lx/JceFbnwuulyf6P4XWdr77db7WVrLd8sO7zPvfL93+7XQ+L/iNN4L8ea1axaO2q/bNSX5Y7yOOXd9ntFVY42/1nzN823+H+9X1PtPsnznu/F7M5yL4Dx+MLOz1Cy8M6f9hmaFo5LbWmVZPLWT5m3W2770jK277zVFpv7L9xZ32n3C+G4dtmsPl20+vK0C/vFkbcv2b+Fo13f3v4a95+GH/Ih6V/22/9HSV1VY8y/lNPaR/l/P8AzPDfAPgHxh4A8LwaTa+H9Nn8tpJpJG1jazM0n3f9X/Cu3b833VVfvV0bWfjhd23w3pbbfM2/8Tj7237v/LH+L/8Aar0+itI1pRJ/dylzcv5/5nC/Cy817wD4rtzqmmadCqWWtTSTnVVjgVZLq3mj+ZkX70kiw/8Aj3+zXpmsfEbTPEy2NvqDaBHBDf2V15sfiS3/AHbIvnM33fm2yKse3+JW3fLXEa4qy+KtKV1Vl8uH5W/7CunVr/EvwzrGuat4ctdD/wBDtm+1/bJ1kkhiX9z+7Zmh2t977q/dr5vEztW+E9/Cy/dR90jsrrwLGmmB/Cvge38poJFRdas2+zyTMRc7fl+by1VW/wBr+HG2otem8G6/bWq3Xh/wmRAftH2WPxDaqk0iyeWsL/L8y+WFm/3o1X+GuJutZ+KUurahoNnpO22ht5II9bn0X960kcNztZfm8v8AeSRwMrfN/rP4fur0PhrxB42l8P8AiX7ZoK3N9Z2cMmmySaW0PnN/ErRttaSRV+bavyt93d821cvrM73/AM/8zt9pI66x8ZaF4b1q+1LS7Tw4s629xbQRr4ktY4ljjZfIVF2/u/O/i/u+Uv3q6mTxxNr00NsunRyafJewtbapZahDcwSLHcW33tvzK26Rl2/N/q/vfNXnvwxt/EWpeJPEN94jhkWx8mGDTY5LH7NFIqyT/vvLb7sjL5bMrfMu7/gNaOhWap4uaZLVQker3K+ethu8vdNYfL9o/wCWe7/nnt/ebf8AZohP2kveX5kS96J770Fc14ovPsN3pNz5TzeTJNL5UK7pJNtvJ8qr/eq94j8Tab4R0K71fWLuOw020XdNcynCou7FeSfFv47eCNE+FMfjm61u3l8LbbtFuEjkkWZlt5lMaqu1m+6/92sKfxamTPJ/ip4i1fUNam1e80SPRp2bSL1rW7uWZknaOdTbttiZtyxtu+7/AHlrnrfx5q1xHeMmm6X/AKLazXsiz6hND+5jZVZv3lsv95Wp+pfEjw7408Naf4o8KXlvrOixvpXktaBreNmjs590a+d80f3dv7z/AIE1Y9v4wbx14d1DVm09tMWTwvqvlxtdQ3Lbf9E/ijZlVv4dtfU4apy0fdPFxXJKv8JBrn/Fda1pEd/oen3l1byTQWcc95cRxSSMq7f9ZaKu5vLXbu+6y/NXAP8ADnwu0cV5/ZsK20Mcfl3K6hceVHHHb7VkVvsX93+L+9833a9P0v4iTeKPG1npL6O1stnrELfa47yOZW2zNGqsq/NHJ8rNtb+H+Jv4eesPH0154XvvC66fbqtn4ZWRrv8AtKNpZFay3fLD97+LbW8pRlI5Yy5Y/CRWv7MWoWscCwaHaruvLW5mkuda8xmVZJJGj3LCu1d0jLJ97crfLu+9Xq/2Xx067m8N6XuZVbb/AGx935tu3/U/w/e/+yr02L/Vr/u06pjU5fhiEuWXxR/P/M8k1TQ/HF/DAv8Awj+lr5N1Dd/8hb73k3Ecm3/UfxKv/Af4q9P+HvxU/wCEV8Kpp95DpdvOt5qssa3etRQSSR/apvIbay/KskiyR/7Pl7quVS+ErMt5qe1tv7n/ANyeqV5mOqc0Y80T0cDy80uWJnyap4TvPElzqV7caW7XGpfaPMj8SrDtjktYPOjZY/8AWR+dbxr5bfe+992qOix+AtPFkDaaTFLmzMksni7zpI/nVpV3MfmWEW8G3+8qqq7dtLqVv4+03VPEviC3vL5oLfUpls9P3TXLXFu0cca7Yd3lrGrM0m5VZvl/i+63P2vjL4yX+n6fql1ayaVKrSQSaeukyMsn+jxsskm3dJ/rGk27V+8v3WrzfrU17q/X/M9z2ki/4cj8OeF7O7m02+0201aaNvIm/wCEpVltN0yx+SkedrbbeOBmb/lp5Sq1ehaX8XtI8J+H4NM07/hH/smm2s0FssniOFdywsq225tvy+ZHuZm/h2/xVzms+MvH39l+HGsNJuILy8sY5LiOSxaRluGkjWSNtrbYdsbSSKzfeZdv+zWm0WqWfwBnh1e6urnVV8MyfbJLtm8xpvsjeZu/2t26pniHU/ifqKU3L4j07wjrEmua1ql3LZzaeywxw+TcOrN+7nuV3blZl2ttzXZHmvN/hTbfZbjWI/I+zfvHcp/Z/wBi3bru6+fy9zbt33vM/wCWmd38VekY5zWNbSdomItFFFZgIKxte/5CWgf9fzf+k01bIrG17/kJaB/1/N/6TTVUdxM2aTcPWuB+MljDf+FLG2uoY7q2m1jTlkhmXcki/aovlZf4q5r/AIVz4T/6FfRf/BbB/wDE1Iz2HcPWjcPWvHv+Fc+E/wDoV9F/8FsH/wATR/wrnwn/ANCvov8A4LYP/iaCrHse4etG4etfNfxi+F+n3Xwz1yHwz4X0/wDt5o4/sv2GxhWXd50e7a23+7ur568TXXxU8PzaVZy+BdBlvtYkkazjtPCNpIyyLDdt9k2tIq7f3NszSbvlWZvloJP0X3D1o3D1r4GtdJ+Jms+MPDlre/DnT9D0qz1iNdantPD9lJFdQtd3a/u2ZtzQrD9i3N8rfeb/AGa+mP8AhXPhP/oV9F/8F8P/AMTQVY9h3D1o3D1rx7/hXPhP/oV9F/8ABbB/8TR/wrnwn/0K+i/+C2D/AOJoCx7GWHrVDW/+QPf/APXvJ/6DXhvj7wH4Zs/AviG4t/DukwTw6fNJHJHYxq0bLG3zK235a9y1v/kD3/8A17yf+g047kvY5fxVfeIdP8H6FJ4atVu75tQ0qG4Rl3bbN7mFbp/+AwtI3/Aa1fHFlb6poYtLuCO6tLi5t4ZoJl3RyI0yKysvcc1j+LNL1rWPB+hReH9QGnXiajpVxNMztH5lrHdwSXMf/bSFZU2/xbq6DxX/AMedn/1/2v8A6PSrXxkfZPKPGFlb6b8Sri1s7eO2todCsY0hhj2qi+fd/Kqr92oqu+P/APkrF9/2BLP/ANHXdUq93C/wYnh4n+LIKKKK6jmCiiigArP8Ef8AIw2//XTXv/SmyrQrP8Ef8jDb/wDXTXv/AEpsq87HfAehgfjNP4xS69F8O9Tbwz9q/tzzLf7P9hXdLt+0R+Zt/wC2e7/gNfP2vfHj44aDNpVndeGbH+1dWja5s4IPD93I0jLDI32Tb533t0ce6b7saz7mX5a91+I3ijWtB1rSodLjZlkt5pG2wtNubzraNm8tfmk8uGSeby1+ZvL/ANmuTvPH3xCuNUgt7DQ4ZN0zR/a59DuI1t49se2b5pF3eZuk/d/ej2/NXintnL6b8VfjFrnjjw1Y3HhW60HSLfVo7bXJ/wCwZpFkjaa9X93Ju/1flx2TNMvyq0m77vy19Jw/6xP96vDdB+K/jq48cW2h6po8MW23sruaOPSbjdJHNt89vM3MsfkbpF+bd5jRsv3q9P8ABeqXWpah4jjlkae2s9WaC1nb+JfJjkZf+AySSL/wHb/DQBtfDT/kUPht/wBgZf8A0THVzSfD2nr8WPFmojVob+7vNN0yG50cqrNaLG135crfN/y08x/4f+WNU/hp/wAih8Nv+wMv/omOtDQV0D/hb3jBrRrn/hJP7L0z+0Vk/wBT9n3Xf2fZ/tbvP3f8BqpbRMo9RNR8BeHfE3jSO61fQ7DU59Fign06S7t1k+ySN5ys0e4fK23+L3r4l+J0ul2vgOW41fSbfWrOHw/of+iXMnlruaSePdu/h27q++bP/kbNW/69LX/0Kavz8+Ll1Z2Xw9aa7jt59uh6CsMdz5e2RvOn+XbJ8rfLu+WvUwf8SXp+h5uM+GJ7B8DLiO68P6nNBCsEUlxbtHGrbljX7BafLu/ir0ivMvgFKtx4XvJIo1gikmtGWNVVVVf7OtPl+X5a9Nr1DywooopgFYvi7/kAy/8AXxb/APpTHW1WL4u/5AMv/Xxb/wDpTHUVPhkXT+KJ2nhn/WeIP+w5f/8Ao6vNvi/488eeFfiF4esfCmmx6nZ6hY+RIt3ayNaQzNdwRrNJJGu75Y2kbbur0nwz/rPEH/Ycv/8A0dXnuq/FvXtIvdZWLTo7z7PNe/Z7doZGadoZPLW3j8tf9ZtXzmZv4ZV218ufTnlmh/tc+OtU1C583wHG1tYtaLqVtbWd/JPp6stlJPJI3l7W2rdT7Y1/efu1Zl216V8Bfir4w+JmveJf+El0ePQ9Mht7SfSbb+z7i2laORpFZmaT5W/1a/L95aqRfFrxZDcalJpPhfTWg85mkvo7W4VdSby7tvOX+L7tlHH825v3i/Nt27tDwp8ZtU8ZeEfEuoSw2+lNZ2dxc2s8ayN5MkclyvkyeYu1m2wqzbf4ZP8AdZgZ6L4m/wBf4c/7Dll/6Mr0Xwz/AMgu4/6/Lz/0pkrzPVrqS8tfCNxLC1vJNq1hI0Lf8s2Zt22vTPDP/ILuM/8AP5ef+lMlX0MpfEcl4N0e68O/A+x0y+1iPX7y00ZopNUSQyrcssbfvNx+9mvO/HGm6Vp2ueIJLC3s7e9vNW0ea9a3mdp5pPLkVWnj27Vbav3l3btvzfdrvPh7YaJpPwE0uz8N38mq6BDom2xvZl2vND5bbWZdq/yrkviRcGS8voDNJIseoaPtja9jdY9wk+7CvzQ/8C+9/D92ujD/ANfeiJfDL0Pj3VLrR7XWtMtV0O1/te48F+Y2redtn2/ZJF2+Xu+b/V/3WrqvjTdaPpvjBbjUtDtdXnk8SRwW89zN5f2f/QrRty/Mv8Sr8tcPql/p8Xi7TLWK1tZbxvBf7yfbC0sLfYp/4v8AWLuXb/vV1Hx61HT9N8ZQNcW9reXMniSPbBOsLN5f2K2+ZVk/usy/Mv3d1fRHzh9BfDD/AJEPSv8Att/6Okrqq5b4Zf8AIh6V/wBtv/R0ldTUgFFFFAHN6z/yNmlf9c4f/Trp1esc15PrP/I2aV/1zh/9OunV2/jzWbrQ9Js5LNW8241C0tGkVVby1kkVW+98u5vu/wC8y18/iv4sj38L/BifMFh+098VvC/gOx1DxB4Tt5Ylt7S0k1DULO7jna7khsmaaeONdu3ddSR7Y13bo9v+zV7xB+1L8Tl8M3kOm+AWg8RtayXNnI2k38ltNCtpdyfaFXau3dJbwKsLfvP367lrv9W+M+uXWkxeb4bsdX8y3ju20/7LcN5k33mt13Lt8y2ZVaRv93btam6t8ePGGg3lna6jo+m2zXl1NbR3bR3flbo42k+795mk+VV/4F96uQ7D2vSbprzSbG4kZWlmt45GaONo1ZmX+FW+Zf8Adb5q43R0j/4TRmKw+f8A2vc7WaObzNvnadu2sv7vb/vfN93b/FV/RvFF1qXiyxtWjaKC80X7bNbN96zmWRVaNm/2vMZf+2DVR0W4RfGrQGeNWk1e4ZYftrKzbZtO+b7P92T/AK6N8y7vl+9W9H4xfZZ6f4/tvEdwPDv/AAjsywCPWLeXUtxUeZZDd5y8/wDAaq/FbT7PUtBaz1GKG50+4gu4rqG6bEEkTWs25ZP9mj4maENcHhfOtx6J9k1y1u/3j7ftm3d/o6/MvzN/7LVnx8zRW9rIrMhUXLhlmELL/o0v8bfKv+833ain8ZB80+ObW0m/s21SOCTT2GjxLHDI08DRfYZ/lVm+Zl2/xN96vGPhfqWm6p4H16TSdHt9Dtl0PWl+yW1x5i7ttp/tN/7L/u17T8TJIbia1kvX8yBjpLzST3Cz7l+wz7maZflk/wB5flb71eF/Bu+t9S8A+IZLW1htlXRdaX9xHCqyfLZfN+7+Vm/2q+hpfwzxMR/HkdB4ZutHX44arY2Gh2umXlvrFp9ou4Jt0t1ubduaPd8vzSN/DUdwvhWz8P2e3T428WXXhdt12sbK0cf2JvvN91t3l/d+98tVfB+oafL8fNctbK3tf3esWm65gWHc3zLuVmX5vlbd8rf3a5zVrOO88UaU11ZwzwR+C1aGdreNvLkW0kb/AFm7crfxKv8AvVvze8cXL7p9oRf6tf8Adp1Ni/1a/wC7TqQwrP8AhP8A8fep/wDXH/3J6pWhWf8ACf8A4+9T/wCuP/uT1SvLx3wxPTwPxSKf7QHjLxR4D8N6RqnhWxm1W5j1CRrixgt2m+0QrZXMixttVmVWkjjXcvzf99V5XcftPfEqw8YReGZfBOn3mrxruktrO3v2+2K0zRrJA23bGqr8zNJ8reWyrXr3i34g6poPjCexgWGKzjjtF8+5hkaKHzFuWaZvL+b5mhWFdv8AE3+6tcg3xi8VXF9LdWXg+za+W1Zpp5Le43Qqrf8AHkzbdzSL97+7+8+7XkHsFH4W/Hjxp8RviZotnceHf7D8J3FjN50lzpN7DLJdraWU21WkVVjVZJrlfm+95DfxV7L8RP8Akn/ij/sF3f8A6JauC8B/GbWvE3ja70PUtNtbZbO6ksrjyFmWWPau5bj5vlWORvlVfvfMtbkus3WvfBfxBdXjebOtjqdt5+3b5yxtPGsn/AlVW/4FTW4HbfCJYVk1sQLEq+dJ/qI5lXd9rut3+u+bd/47/d+WvS/SvNfhRdLdT6w6Tx3KedKnmRX0l7927uvl3t8y7f8Ann91fur92vSvStsR/EZL3FooorAQCsbXv+QloH/X83/pNNWyKxte/wCQloH/AF/N/wCk01VHcTMH4tf8i7pv/Ya07/0qjqpV74nabf6n4dgGm2Euo3NvqVld/ZoXjVnWO4R2w0jKudqn+Kue+0+I/wDoSNY/8CrD/wCSaks06KzPtXiP/oSNY/8AAqw/+SaPtXiP/oSNY/8AAqw/+SaAPLPFHxS8SaH48vNJ063jvJWuJlt9Pa1kmaSOOO0ZVVo/9X5jXEn7yTcq+WtVLD4g/E64uraN9DtYPtENpPNJJptw0UfmNaK0ar5ny+X9onZv+uDfd+avWt2u/aPtH/CA6p5+3b5nm6dv2/3d32mue+JXxOu/hT4F1zxfrvgvXItG0e3a7umjlsZGCr/srcUAcDpvxa+JGreItP0mLwutit15cdxfXek3HlWreZArSf6z5lZZJGX5l+7/ALO5ul+HfxE17xhqWh3F/ax2MV5HfxyWMf8AD9naCNpt391pvPVf7ytHXere+Ipo1ZfBOsbWX/n6sP8A5JqGD+27VUWDwBqkCRx+Wqxzacu1f7v/AB8/doGbVFZn2rxH/wBCRrH/AIFWH/yTR9q8R/8AQkax/wCBVh/8k0CM74lssXw58Ss7Ki/2bcfM3/XNq9W1v/kD3/8A17yf+g14lovwTvPHXxEvvFPjnTFj02zmhGj6HdTLOB5ca/vZVVmjX95uZVX/AGWb7qrXtut/8ge//wCveT/0GnHcl7HF/EDSNO17wP4eg1TVholvHq2i3Mc7D/WTx3tvJDD/ANtJFSP/AIHXU+K/+POz/wCv+1/9HpXK/EBtAXwP4e/4SNbprH+2NF+z/Zfvfa/ttv8AZd3+z53lbv8AZ3V1Xiv/AI87P/r/ALX/ANHpVr4iOh5h4+/5Kvff9gSz/wDR93VKtb4heH/EEvxAm1PTtCutYsptMtrbzLa4t49skc1wzKyyyLn5ZFrJ/srxX/0JOqf+Blj/APJFevh61ONOMZSPIr0akpylGIUUn9leK/8AoSdU/wDAux/+SKo623iPw/o99ql74M1aKzsbeS5uHW6sG2xxrub5ftH91a6PrFP+Yx+r1P5S/RWN4R1fWvHfhPRfEmjeDtYuNI1ixhv7OSS4so3aGaNZI2ZWufl+Vl+Wtj+yvFf/AEJOqf8AgXY//JFH1in/ADB9Xqfyle/1Kz0m3a4vbq3s4F+9JcyLGv8A301Z3w01Sz1zUNPvrC4jvLG4bXmhuYG3RyL9rsvmVv4l/wBqobj4I678TvHWlyeI9Lk0HwrplrJ5sc9xDJc3U0jLuWPy2by12xruk3bvmZV/vL7FrXw5tNQbSZNN1G78Pf2ZayWdvFpcduI/JkaIldskbKOYU27duK8zFVo1PdiehhaMqfvSKLKrMrMqsy/dbb92lqT/AIVfdf8AQ569/wB+bD/5GrzD9oSHxD8L/A2n6xo3jDVZbyfX9I0x1urWwdfJur6G3k4+zr822Rtv+1XnnpHpW2PzPMZVVtu1pP8AZrxLwnd+M/jRqTW+k69caDpTyNNcXGl28cf2SFm3Rr5jKzNcMu1v4du7c38Kt7XffCe5vrOe1l8a+IPKmjaN9sdir7WXbw32biuj8H+ENL8B+HbLQ9FtBaafaRiOOPcWZv8AaZj8zM38TGgClY6Da+GLjwto9iJFsbG2ktoVkkaRtqxqq7mb73FVdB1nTbr4t+L9Mh0hbXVLTTNMmutTzzdRyPd+XH/2z8uT/v5W7qn/ACMmi/7s3/oK1l6Tqut3PxK8SWFzp/k6BbafYSWF95bATzSPc+em7o2xY4P93f8A7VXLaJnH7RqWv/I2at/16Wv/AKFNXwx4o8P6t4q8OxaXo00dteTeH9FZp5Lhodqq1y33lVv7u3b/AHWavui058War/162v8A6FNXy9Z/DfXvsumSPpPi3TdQh022sLhbGCykibyd3/PTd/FI1ehhakYVPe/rQ8/FU5Tj7o74M2c2m6XrVndMstzb3kMczK27cy2ForfNXodc54X8M6r4WivkHh7xTqEt5cfaZpry3tt27y1j/wCWbKv3Y1ra3az/ANCh4g/8B4//AI5Xo+2p/wAx53san8pZorl/E3jo+D77w/Z6p4b8QW82u6gul2C/ZY28248uSTb/AKz+7DI3/Aa392s/9Ch4g/8AAeP/AOOUe2p/zB7Gp/KWa5zx1qlnpuirHdXlvayzXVosazyKrSN9oj+Vf71bKtrO75vCHiD/AMB4/wD45Vf4GfAV7DUf+E48aadAvie4uZLq1sjtkay3MzKzNj5pNr7f7sYGF/vVjWxFOMfdN6OHqSl7x1nhn7/iD/sOX/8A6OrXit44JJ2ijWJpm3SMq7fMbbt3N/e+VVpD8M9Ut76/l0/xO1pBeXcl2beTT4pPLaRtzLup/wDwrrxF/wBDgn/gpj/+KrwT3h+5v71ch8RNWj8H+C52tbGzlaSaO2t7SeP9w0kk33mVf4fmaRv92sD+0PGH/DSLfDj/AISK2/sz/hFP+Eg+2f2SnneZ9s+z+X97bt2812+pfBVvFlzpieKddk1bTbG6N4dNjtIreOeTayqsjL8zR/O3y/xfxZ+7QByXwx8P+LPiTq9h4j17WpE8MWM63VnaWlpHbJqEy/dkz80nkr/D837z/d+97V4Z/wCQTcZ/5/Lz/wBKJK1ljWKNVRQqqNqqvasvwz/yCbj/AK/Lz/0pkp/ZM/tHF/D7UND1T4B6XeeGbGTSvD82ib7Gynbc0UPlnarNub/0KuR+Jiut3ds4lWNtQ0fy2aOERtxJnay/vG/7af8AAf4q7TwXrVx4i+B9lqd5o8egXV3oxlk0tIzEtszRt+72n7uK8/8Aijc2thq2qkrbrd7tP1Hy5LeOze4t7WNmmZbmRlWby1bd/D5f/Aq7MPt/XkHLKUZRj2PmO88Ja9dabbeIvtEMeh2/hP7N9m+1Sbm/0Jvm8vbt+9J/e/hWuq+InhLXvFvjK+XSLiG2gs9cjubhpLqSNpP9Ctvl2qrbv/Ha3v8AhDf+JX/YLah4g+x+X/Zv2b7do27b9n8zy927du8n5v8AdrQmsW1TWrm+sLjWLOXVJrSXyLa+0hlaSaFVh2+YzN+8jh3L8396vd9rTPB+q1/5Tqvhh/yIelf9tv8A0dJXVVwvhfXrfQfDun2NnZ3FzbRwxyRzz6lp26RZpmjjb5ZlX5pty/71QaH8ZtP8QSeIY7fS7yBtBuprS++13VlD5bQ+X5jLuufmjVpo13f3mqOdD+q1v5T0Gms21dzfKv8Aeaubm8aG2knWbSZImt2uFmVtRsf3bW6q03/Lx/yzVlZqw/G1xqHjTQZfDljaW9hPqF1DZTTalqFo0CRsq3Em5Y52Zv8AR1Ztqr8y/wB2j2sOUf1Wt/KXbjxHpOueNrO303UrXUJ7WO3+0LaTLJ5O7VbDbu2/d3bW/wC+W/u17NcW8N5C0M8cc8bfejkXcrVyOg+H/AWj+A4fD+ieJbOC7urrTr1tUQRvJc3EkqyWzMv3dsvl7VX7u37tSJqVnLbpMPijprRyRxzq32CH5o5JvJVvvfxSfL/vV4VbnqVOblPco0ZU6fKdfub+81RS28dxJBJLGsrQt5kLMu7y22su5f7vysy/8Cri9c1qHSdI1K8HxN07dZ211cMr2EX/AC7t5cpb5v4ZNqtXKfBX4kS/En4Q+EPFup/ELStO1HV9MW9u7WHT4hHBMtss1xGoZt37tW3f7tYezn/KbcsiTxH428T6t471HQvCq2cV95y2UbJa+bczMsatIzSN8scMbSbdzK3/AH0yrXaWPhW78C33h7Tb3Wb3Wb65ke9v7ua6hiW5uGurT5vs6ru2r91dvyqv3tzNmr3w3t/A3w/+3Lb+IoNR1zVr4m81CeZPPuJpla6WNdv3V8tmdVX+H5v9qpNY8VaV4q8aaBJpF8mpQpbQ3LyWsUMkSRzXVt5LNN/rF3bH2qvyttbd91a3oxlGWqJlGVpG98UrXQLr/hEf+Egubi28vxDZyaf5I+/eDd5St8v3fvVe8eZNvaeWsjNi4wsaqX/49pfuh/l/76+X1ql8UtW0bSf+ES/tnSf7U+0eIbO2s/mx9nuW3eXN/wAB+arnj5PMtbaMp5u5bpfL+z+fu/0WX5fL/wCWn+7/ABVjT+Mg+b/iStwt5aKkY+2K+kBY7gxx/vPsc/3vL3Kv/Afl/u15Z4Z8Jax4N8N65Y63dR3ly3h/V5FkW4af5f8ARP4mVf7teteKrG31iGOe11LT7a0js7edZ47yHTpLWSxh8u5VreSORY1j8xdy/Nt3bf4az5PBkzzajBqOqQ30s1ndaOyz63Zq0O6GOabb5dsvzLGqyfNu+WvepVIxp8sjysRh6sqspRicVpfhLXtL+KDa1qVxC2n6hrFv9nto7qSTy/m/usq7flX/AMerDi8K6k3hVdYlj097aPw63l33/L35bWG37Pt8v5VVt0m7d/wGvU7HwxeT6ppskusR6m0d5ayw20mtWSrJJJG0kK/LbK3zLuZfm+bbXH+MrW38EfC/UNQvNcurzw5Z6XC0kGm6tYTTtaTN5Me3/RNzbtrLu/2Wro9rS5upy/U8Ry/Ce/Rf6tf92nVzn/CVTRQeay6GsEcTTM39ux/LGs3ks3+r/hk/d/71STeIrmz8/wA6HRovs/2gzbtdj/d/Z9v2nd+7/wCWe5d3+9Ue1gafU6/8pa17xVo/heFZtX1S10xW3bftMyqzbf7q/wAVN+Dd1Hfrc3kSyeRdWMdzC0kbR+ZHJf6jJG21vm2srKy/71Y2l+DNL8VfEr+2PGmqaPb6XZwrZW+iQ332hriZY2u5fPbaq+X5bRyeX/Eq/N8vyt6Nq97omu+KDqej+ObTT5L63sLL7P5Ec6ybvOkt9u7/AJ6LI/8A3zXmYqbqe7GJ6GFw9Sn70jb+zxrcfaFjXz/L8vzNvzbf7u7+7Uu5v71chFqNrcQxSRfFDTWjmjhkjZbCH5lmk8mJvvfxSLtX/arz34nfFmTwF4t+G+nQfEPR5tP8SavdWF7cTafH/o0MNvcM0i7W/wCe0Kxtu/vV53s5/wAp6HLI9c17UrXwvoetaw0Marb28l3cbV2tN5cf8X95tqqteV+D9H8ZfGD/AIlc2rLonheCP7NqaaPZxwRbdvzWULNuZm2/KzKy7V/2vu9b4o0nR/EWl3+ja38TIUsGaaO9jtIILeTba7ZLmPzPm27V27v7qtXouj+LPBehWNto+n6lptpb27raw28cgXa3k/aNv+95X7z6fNTUJ/yhyyKHwvmeS81svNNMVkZA811HdNtW7ugo3R/L/wAB+8v3W+avRvSvMvhFdx6h/aF7A0ktre/6TbySQQwedDJdXTxyKsfysjK25W+8y/M3zGvTfSrr/wARkP4haKKKwEArG17/AJCWgf8AX83/AKTTVsisbXv+QloP/X83/pNNVR3EzY/Cj9K+RfiB/wAFDvD/AID8ba74bm8I6rdz6TeyWclxHNGqyMjbdy5rA/4eeeG+/gfVz/28w/41z+2geZLM8JCXLKZ9s0V8Tf8ADzzw3/0I+r/+BMP+NH/Dzzw3/wBCPq//AIEw/wCNHtqf8wv7Vwf/AD8PtivBf28P+TPviv8A9gST/wBCWvIv+Hnvhr/oR9X/APAmH/GvI/2p/wBtfT/jz8DfEvgnRNG1zw9qOqRqkd158LRyLu+eKQf3WXcvy/7NHtqf8w/7Twn/AD8P0ts/+PWH/cX+VT18HeEP+CkWjeH/AAro+mX/AId8Qa3fWdrHBcald3Nv5t1IqhWkbb8vzNlvxrY/4eeeG/8AoR9X/wDAmH/Gl7an/ML+1cH/AM/D7Zor4m/4eeeG/wDoR9X/APAmH/Gj/h554b/6EfV//AmH/Gn7an/MH9q4P/n4fbDMKo65/wAge/P/AE7yf+g18a/8PPPDn/Qkav8A+BMP+Ne1/Av9orT/ANonwX4m1HTtHvNGXTma2aO7dWZ2Me7d8tXCcZP3TWnj8NWl7OnLU6vx5rlpoPgnQZ77R01yObVtGtEtZh/q5Jr2CKOb7rfNEzLJ/wBs/wCGup8V/wDHnZ/9f9r/AOj0rB8Valr+m+D9Cm8O2i317JqGlQTxsm7baSXUKXMn/AYWkb/gNb3iz/jys/8Ar/tf/RyVuvjO37Jt8GjAryrxd8eLHwh4ivNIk0q6uJbYrmWN12ncqt/7NWP/AMNPad/0BLz/AL+x/wCNYc8TCWJpRlyuR7b+Fcj8Xv8AklHjTj/mCXv/AKIeuA/4ae07/oCXn/f2P/GuQ+LXxis/ib8MfE/haCHVtDuNYsJrWHULK5WOSBmX5W3Kf733l/iXctHPEX1qj/Mek/ss/wDJsfwi/wCxS0n/ANI4q9T/AAr5N/Z5+JUHwV+CvhDwVfJqevXmjafHbS301z5nmMq/dj3fdjX7qr/CqrXov/DT2nf9AS8/7+x/40e0iH1qj/Me2/hR+FeJf8NPad/0BLz/AL+x/wCNH/DT2nf9AS8/7+x/40c8Q+tUf5j238K8E/bS5+EWkD/qcfDf/p3tKvf8NPad/wBAS8/7+x/414z+1NfaD+0x4E0vw9ONa0KWx1i01FbuyufLZljlXzI/lb+Jd23+7Isbfw0e0iH1qj/Mfaf4UfhXhdj+0lpFhZw20OhXqwxIscamRT8qjFTN+1BpijP9iXf/AH9j/wAaOeIfWqP8x6lqn/IxaL/uz/8AoK1n6TY+IIfiP4jvLy6WTwzcWFhHp1tv5juFa5+0tj/aVrf/AL5q1PILzWfD9wo2rJHNJt+sa1kaNocNr8V/F2qx60l1d3mnaZDJpCN81msb3e2Rvm/5aeY38I/1P8VbS2R0xN6y/wCRs1X/AK9bX/0KatndjtXOyXy6breu3cg3R29jBIwX721TM1cN/wANLeG/+fLU/wDv1H/8XUykovUydSFP4j1z8aPxryP/AIaV8Nf8+Wp/9+o//i6P+GlfDX/Plqf/AH6j/wDi6jnRP1il/Mc7+1B/yPn7PX/ZQY//AE2X9e/fjXxL+0z4w1f4oeMvhBqPg7WNQ0Ox8OeJV1HU4pLO3lby/Jkj86PcW+ZVaWPb939/u/hr37/hpXw1/wA+Wp/9+o//AIujmQvrFL+Y9c/Gj8a8j/4aV8Nf8+Wp/wDfqP8A+Lo/4aV8Nf8APlqf/fqP/wCLo5kH1il/MeufjR+NeR/8NK+Gv+fLU/8Av1H/APF0f8NK+Gv+fLU/+/Uf/wAXRzIPrFL+Y5tf+T+n/wCyZr/6dWr6A/Gvi/7RpX/DYDfGH+2/En9kf8I3/ZP9hed+7+0eb/d8zb5O35vL/wCenzV7p/w0t4a/58tT/wC/Uf8A8XS5oh9YpfzHrXUGsjwv/wAgu4x1+3Xn/pTLXJeFPjdonjDXrfSbO2vkuZlZlaeNVX5V3f3q67wz/wAgmf8A6/Lz/wBKJKtaxNYzjUd4nM+Gm8Rt8GrVvGChfE39kN/aKrtx53ltu+58v/fNdpaxrJZw7lVvkX7w9q4bwfo+oeHfgnYabqesLruoWukNHNqiStKtywjb95ub5mqn8c/i4fgh8J7rxb/Zn9sCza3jNp5/k7/MkSP721v73pVt8sLinUjT5pSPSvs6/wBxf++aPs6/3F/75r4R/wCHo6/9E4b/AMHX/wBoo/4ejr/0Thv/AAdf/aK5frEP5jzf7Xwf/Pz8z7u8hP7q/wDfNeB/spRI+sfHbKKf+Llaiv3f+nSyrw3/AIejL/0Tdv8Awdf/AGivFP2df21PE3wf1f4j3XiHTJfFUHibX5NYgg+1w23ksyqrMzLD8zMqxL/Cv7v7vzU/rEP5h/2rhP8An5+Z+rP2df7i/wDfNH2df7i/9818I/8AD0df+icN/wCDr/7RR/w9HX/onDf+Dr/7RS+sQ/mF/a+C/wCfn5n3d9nX+4v/AHzR9nX+4v8A3zXwj/w9HX/onDf+Dr/7RR/w9HX/AKJw3/g6/wDtFH1iH8wf2vgv+fn5n2z4ohT/AIRfWPkX/jzm/h/2Gry/9jOFT+yb8IjsH/Isaf8Aw/8ATutfK/xA/wCCi/8AwnfgjXfDy+Cr7Rn1SyntF1Cw17y57VmXasissP3l+9XJ/s5ftwP8BPgz4Y8Dy+FL3xFPpNv5T395rjfN833Y1aJvLjVflVf4VSn9Yh/MH9r4L/n5+Z+nXkp2RcfSsjxNGsemQ7VVf9Os/uj/AKeI6+J2/wCCoyIrN/wrhvl/6jI/+MV9k3Wqf274R0m/2GD7XNp9x5ec7d00Tba0p1FOS5Tpo4yhi1L2MuYg+Imtano3/CN/2ZpI1Y3WtWtrchoWk+zQNu3T8fd28fN71r6z/wAhrQf+viT/ANESVmePrfxNcHw7/wAI1KsezWbZtS3FPmsfm85fm/4D935q09a/5DWg/wDXxJ/6IkrWPU7WazRxr/yzX8qFjjYfcX/vmvl/9oz9tj/hQfxCTwx/wiDa5usY737SL/yPvMy7dvlt/dry7/h6IP8AonL/APg5H/xiueVaEfdbPNqZnhac/Zyl7x94eQn91f8AvmvAv28IUT9kX4k4QD/QY/ur/wBPEVeHf8PRl/6Jw3/g6/8AtFeS/tSftxat8dfgrrngzQvDLeGrnUGjEtw19HcLLEsis0ZVof4v7ysrfLU/WIfzERzbCS/5efmfqR9nX+4v/fNH2df7i/8AfNfn/wCHP+Cml7pfh/TbPVPBMmtalb28cd1qTapHD9qlVfml8tYdq7m+bataX/D0df8AonDf+Dr/AO0U/rEP5hf2vgv+fn5n3d9nX+4v/fNH2df7i/8AfNfCP/D0df8AonDf+Dr/AO0Uf8PR1/6Jw3/g6/8AtFL6xD+YP7XwX/Pz8z7u+zr/AHF/75rwb9oaFR8Y/wBnb5B/yN10Pu/9Qi/rwr/h6Ov/AEThv/B1/wDaK8V+OP7Wsnxl+JXwv8VR6RrHh+LwbqbahPp9l4gZY75du3b8sa+W33lZv4o5JFp/WIfzB/a+C/5+fmfqx5K/88wfwFHkp/cA/CvhA/8ABUZT/wA04f8A8HX/ANor0v8AZ7/bgHx2+I0fhX/hDW0TfazXP2r+0RP/AKvb8u3y1/vVUa0J7F08zwtWXs4y/M+jrFdvivUgPlX7Fa/+hz1uGsW2/wCRs1H/AK87X/0ZPW0a2luemhaKKKkoQVja/wD8hHQf+v5v/SaatkVja9/yEtB/6/m/9JpqqO5Mtj8eP2jv+S/fEP8A7Dl1/wCjGrzqvR/2kP8Akv3xD/7Dt1/6Mau08Qfsy2Wi/DjTvEsPiK8v5LyGymDQ6Y0lhJ9odVaGO6Vm/eR5+ZZFj+7Xi8spSkfl9WjUq16nL9k8Eor2rVf2UPGP/CQ6jZ6PHa3drb3tzZ2zahe29vcztAqtN+78xvuq275WZa5jVPgH4y0qG8mms7OW1tVsJGuYb2OSOSO8bbbSRsrfMrN/3zU8sjGWHrR+KJ55RXreqfs76tpeh6a819Z22uzaxqGkXVnd3EUNtA1oqszeczbW3Z+7WtpP7Kuu+XqQ17ULXSL+x1vT9Hk0+KaOSaT7V92SP5lVvlZWVf4vm+7to9nIPqtbm5eU8Oor0/Wv2efFdius3VpZxz6dYzX6W6z3UMd3eQ2cjLNNHb7tzKu35tu7+L71UfFnwJ8X+DPDc+uala2f2G3W1a4+zX0c0tutwu6FpI1bcqtU8siPq9aP2Tz6ivWIf2dNc1Lwb4K1rSr7T9Qn8SR3ty1p9ojj+xQ2/wB6SSRm2qq7W3N/D8q/eqjb/s8+NbjVLuzazsYIreG3m/tC51KGOxkW4/49vLmZtsnmfw7f7rVXLIPq9b+U81r9Av8Agm7/AMkn+In/AF/f+24r4/8AHHwjuvAvgDw/rmpPNBqt/qeoabdaZNDtFtJbMq/e3fNuzX2D/wAE3f8Akk/xE/6/v/bcV04f3aqPYymnKnjIxl/Wh9T+LNM17VPCGhQ+Hb0afex6jpU00jOY91rHdwPcx/8AAoVkXb/FuroPFf8Ax52f/X/a/wDo5K5Xx9otjr3gfQIdQ1dNEgj1bRrqO4k/5aSR3tvJHD97/loyrH/wOuq8Wf8AHjZ/9f8Aa/8Ao5K9VfGfoH2T5f8AjZ/yU7W/96P/ANFrVj4c6Po13pd5carYJMzXUdtDPdLN9n/2o90fzKzf3m+Wq/xs/wCSna3/AL0f/ota5rRfE2q+HmkGmajcWHnf6zyZNu6uD7R87KUY1pSkd7N8O7I2Uq3H/EtNrPqDzNH++l2wqrLHu3bW+9/dWorj4V6eLmOKDVrgt9qsYZPNt1Xatz93b833lriP+Em1Zbdof7QuPKbzNytJ97zP9Z/31UN54yvrcobrV3iNxNDEpkl2+ZJH/qV/3l/ho5oi9pT/AJTvtB+HtjHp9zfXLNdlrbUljjlXb5cluflar+i/CPTodQ0Rr+4uJY7i7+yT2LLGrK3k+Z821m2/d+796vO9U+IOsfZ5bjUdclWCGGQSSTSqqxxt/rNzfwq38VFx8QtZkktFn124LCTzLZWm+bzFX7y/7W2jmiVGpS/lOwvPBGlXGiWOoiSSz0+GwmvLhoYd08n+keWvys23dViH4P2cd2YLrVbhS+oR2EDQW6tu8yHzFZvm+X/arg/+E71O31K23a1JFfeXItuvnKrNHu3SbV/iXc3zU5fFmrq+8anceZ9q+17vM/5bbdvmf71HNEjmp/ymz4U8P6deQeKv7QWWWTTbJpImj+6rLJt3CtpvhGk2oPp9tqb/AG61u7e1vPOg2xbpl3bo/m+bbtrziz8dR6TqlzDb65DbahMrR3EC3C+bJu27lZf+BL/30tatx4q1i6htoZ9UupYrVlaFWm/1bL91v+A1HuhGVPl96J2el+A9LWxvNQjkk1Cxm0m/kt1u4/LlhmhZV3fK3+1Xmrf6tv8AdrZuvFutXtxLNPqlxLLJC1szNJ96NvvL/utWM3+rb/dokZTlGXwn2Xb/APH54X/69pP/AEWtZugw6B/wt3xfLZy3LeJTpmmDUY5P9Stvuu/s+z/az5+76LWlb/8AH54Y/wCvaT/0WtZ+g6xpdx8XPGGm2+ki21e10zTJrzVM/wDH1HI12IY/+2fly/8AfyvQeyPqKexZ1z/WeLf+wXH/AOgz18dL/q/+A19i65/rPFv/AGC4/wD0Gevj1f8AVrWFfoeRjviienXXg3QZPCoa0s3bVbezhuLjzLpo7mNmZdzNCy7fL+b5WWpL74R2lxrlzbw6kunrJd3FvbweS0ir5UayN827dXGy+PvEEmjrpb6lI1isax+XtXdtX7q7vvbf9mnN491+S5S5+3t5yzSTbvLX70i7W/h/iWseaJy+0pfymjqXw5+x6bPqEWpLPbLa2l3Duh2tIs0nl/Mu75dtbF98Lbe3tY7NZJJb2PUbi3lvI4mbdHHGrf6vdtX733t1cha+PNas5PJg1D5obWO28to422wq26P5WX+991qm/wCFjeIFutzap+9mkkl2tHH+8Zl2yfLt+b5dvy0vdJ5qX8p19v8AC3TtPmv4L67kuZ4b2xgikjUpGY5yB821vqv+zWdqHwxT7ZPHFfRwXMz3kljY+WzK0duzK26T+H7rbawf+Fh+IGurmb+0N0sjQ+d+5jb5o/8AV/w/Ky1AvjvXLqzvLcak0sU0knnbVVmVpP8AWLu+8u7+JVo90vmpfym1rXw4TStDvL+PVPtUlrDa3E0P2fbtW4+7tbdVmy+H9hqnhrw/dQ3kkFxdLeXF3JJHuWOOH721d3/7W7+GuZu/Fmq3dncwT3bNBcQwxzbo1XdHD/q/++aZpPjzUrW3trXTtUVorNmkhWPy5PL3fe/4C3937tHukc1Pm+E6JvhrHb2/9oT6ssWjNDbzw3a27NLJ5zMqr5e75futu+aofGHg2Pwv4dsvMXfqK391azyozbWWPbt2r/wKs6Lx1r0V5LdLfN5s0axsrQxtFtX7q+Xt2/L/AA/LWfqPiDUtWtVt7u6kuY1mkuF8z/npJ95t1T7oSlT5fdidf8C/+SoaX/uzf+i2r6Z8M/8AIJuM/wDP5ef+lMlfM3wL/wCSoaX/ALs3/otq+mfDP/IJuM/8/l5/6UyV1U/gZ6mB/hnGfD3TdG0f4B6VY+HtRbV9Dg0Ty7PUHXDTxeW21sV51+3h/wAmr61/12sf/SmKvRfh9eaDqPwD0u48L2U2neHpNE3WNpctukih8s7Vb5m/9Crzr9vD/k1fWv8ArtY/+lEVVU/hl43+BU9D8rKK7z4K+BNG+Inj2DRtd1htGsWt5p1kWSOOW4kVflhiaRljVm/vN8teleIP2X4YdU8SWOlSaxFcWltpU1lFrEccLLJeXS2+2Vl3LMq7v9ZC22vH5ZSPzenh6lSPtInzzRXs99+yh4ts7eSRNW8O3bR/bljht79jLNJZ7vtEa/uvvR7f93/aqroH7N+u33iBLW+uLOKxtxo1xfSW026VbfUpFWPy9y/My7vm/wDZqPZyD6rW/lPIqK9m1z9mjWEuPG91oupafc6T4avL2Kb7XMyzx29vN5bSSbY/LX+9t3btu7atdF4w/ZPfR73WdI0DUpPEWsWup6XptuI2WGNpLmFpH8xWX5fu7vlbbt+9R7ORX1Ot/KfO9FesQ/s2+JLiTzLfVvD9zo/9m3WprrcV6xsWhtZViuV3eXu3KzL8u3/d3VV0X4G3rfG7SPh3rmpWenTX00C/b7ZmmiaOWNZI2j+X5tyt8u7b833ttHLIz+r1v5TzGivVbr9nXX2tby8sNR0m5j2301hbfamW51K1tWZZpoY2X5lXa33trNtbataOh/sx+IJdZ0OLVbizW2m1DTLbVraxn8y+0uO8ZfJaRWXau5W/2tv8VHs5FfVa38p4vN/qZf8Adr9r9L/5Jn4X/wBzS/8A0bDX40+PtBh8K+MPEeiwSSTwabqFxZRySfeZY5GVWb/vmv2W0v8A5Jn4X/3NL/8ARsNdmD+I+kyKPLKrEX4kaJJrZ8LCPWo9G+x67a3bebJs+2Bd2bdefmZv7v8As1uaz/yGtB/6+JP/AERJXO/FSz0C8Xwl/wAJBfTWPk+IbOXT/JXPnXi7/Kjb5W+VvmrotZ/5DWg/9fEn/oiSvRjuz7Jn5r/8FGv+Th4v+wHa/wDo2evl2vqL/go1/wAnDxf9gO1/9Gz1gfBf4JeC/iD4Ft57+51O78T3k9zGthp97b288UaofLkht5tv2sM33ljZdteRUjzVJH5viqMq2NqRifPlFe6w/s2f214c0DU7bV7Tw/FLo1pf302qSSSbpLi8ktVVY449y/Mq/L83+9VfVP2Vda07UobRPEei3xN1qVhO1v54W3uLK3a4kjbdGu75V+8vy7qx9nI4/qdb+U8Sor3PSf2dk/4Vhq/iHUr7zdRm0bStX0lbZm8qNby8a3ZZl27mZdv8P/j1bVj+yE+k30//AAk/iSO2spPD2p61ZyQ2dzFIzWu1WWSOSNWVVZlb7u5l+7R7OQfU60vsnzlRXvGufszf8TKBrXV7Hw/o0ltpMS3eqTSXH2i+vYjIsa+XDuX+98y7V/vNVJf2U/EMej+deavpVjqzR6pJFpEnnPNL9gdkuF3Kvl/w/L83zZo9nIPqdb+U8Uor1f4b/Bm1+IXwt1vXbXVCniOHV7HSNP03Y3lzSXDBV3Nt/i/h/u7W3fw1fk/Zh1ma4jk0/wARaLqujRyX0GoaxB5ywafJZr5lwsm6Pc21fu7VbdRyyJ+q1pR5oxPGa+lf+CeX/JyNr/2Cbr/2WuS1H4BweGvhv4217UL5dRlsbHSNT0W90+Rltrq3vJmj3MrLu/hZdvy7WWut/wCCef8Aycha/wDYJuv/AGWrpx5akTswVOVPGU+Y/Ta2/wCRs1H/AK87X/0ZPW0axbb/AJGzUf8Arztf/Rk9bRr2ZH6VEWiiipKEFY2v/wDIR0H/AK/m/wDSaatkVja//wAhHQf+v5v/AEmmqo7ky2Px5/aO+b4+/EP/ALDt1/6Maug/4aWvI/Dt1Z2nhPRdP1W/trez1HWLbzI2vIYWVl/c7vLVm8tdzKu6ue/aP/5L/wDEP/sOXX/oxq86rxXKUZs/LatSpSr1OU91vP2stau9ft9VOgaessVzql15fmy7Wa/hWORf+A7flqhpv7TF9a6fFpt54a03UtPj0nStO+zSTTLubT5Gkgm3K27dub5l+7XjNFT7SRP1yt/Me72v7XGs2+pXN03h3TZPtF7ql8224kjkja92+Z5ci/NGy+X8rL833qL79rPVtT8Qalq154a06eW71DS9TWL7RNiG4sl2xtu3bmVl+8rV4RRT9pMPrmI/mPaLr9p7VbqO4uG8P6WuuLHqcOn6ssknm2MN9I0k0aru2ybfMk2s33d1Zfij9oDU/Feg+J9Lm0i0gi1630u3mkjlfdCtgMR7f97+KvK6KOaRP1qtL7R614Y/aFvvDfhTQdBbQrDULXS7XULCRpppE+1Wd5808LKrfL821lZfmXZVz/hpe8uBJYX3hfS77wxHDp0FnojTTKtn9hZmtmWRW8xvvNu3fe3V4zRS9pIPrVaP2j0H4jfGrWfifoNjp+sW8HnW+p32qtdQllZ5LllZl2/wqu35a+wf+Cbv/JJ/iJ/1/f8AtuK/P2v0C/4Ju/8AJJ/iJ/1/f+24rpw/vVUerldSVXGxlL+tD6e+IH/CP/8ACD+Hf+Ej+1fYf7Y0X7P9l+99r+22/wBl3f7PneVu/wBndXVeLP8Ajxs/+v8Atf8A0clcr8QNZsNC8C+HptT0lNbhk1bRrWO3f/lnNJe28cU3/bORlk/4BXVeLP8Ajxs/+v8Atf8A0cleqvjP0D7J8v8Axs/5Kdrf+9H/AOi1riK7f42f8lO1v/ej/wDRa1xFedP4j5mt/Ekcl8S/Av8AwsTw6ul/ao7by7hZ/wDSbf7TBJtVl2yR7l3L827733lVq4CX9m6xgaW4fVprxW3SXSzx/vbzb93zJN33tu5d3+01e2VQ8QaW2uaHqGmrcNZteW8kPnrGsnl7l27trfK3+61LmIjUlH3TyXUvgz/wlXwv0Hw7qPiKz/tWFZru+uZI1u4riaZW8yTbuX5laTcsn8O2sNvgjpd/qDaknjTR57zUtQu/s8kmlxyRNJ5ckciqvmbWk/vN/wBM617X9ljRbexaBtWmado2jW4W1jVo42+07o1/6Z7rr7v3f3a1tXXwA0u/8F6Z4dur7zIrG4v7mORbOONfMuvM+ZY/ux+X53y7f7q1XMb8/wDeKdx8E9NuPDPhXSZfEULS+HfOgtbny13LI00ci7V8z5WVY9u3/arntG+BOjyyQak3jKzvGmuG1K1ubS1WGKNvMtGaSPbJtVtsO3/tu3+7W7/wzXa/2w2pHxBM122qR6o0/wBhhVlZd3yrt+XcyttZtv8ADSWv7MOg2v2aP7czWcPktJaNax+VNt+ybty/7X2Jd3/XRqOYPaf3jL0f9my3sf3aeKLfz9yybbSxWPcv+jfMy+Y25m+z7mb+JpGaqsv7OuqaH4g8Mf2JNY3Oi2d5Dc3TXK+W1r5bWjM0K/N80n2eRmb/AKaf8Crf+HfwP1DwH8TP7WW6s59DtdPa0tW8v/S5GaO2j2t8v3V+z/Ku5vvV7JRzESnKP2gprf6tv92nU1v9W3+7WZgtz7Lt/wDj88Mf9e0n/otag0zVtan+JPiTT7nTfJ0G10+wlsb7ymX7RNI1z58e77rbBHD/ALvmf7VT2/8Ax+eGP+vaT/0WtR6VaeIYviP4iury4D+GZrCxTToMr+7uFa5+0tjr8ytb/wDfNek9kfV09hmuf6zxb/2C4/8A0GevjxfupX2Hrn+s8W/9guP/ANBnr48X7qVz1+h5GP3iLXlvxE+EuseMvElzqFl4kbTIJrH7Mqq03mw/u5F2rtkVfLZpFZvl3bo12tXqVFYHmRlKPwnh7fAzWtN1qxksNYmltpL6OO48uZl8nTlmuZmhZmbc3yyRxr977rVb+IHwd1TWfF2q+JB4g0+xtpofIj/tBZv3KyLBG0fyyKqr+7bay/Nuk/irrfih8Obj4iR6LHBqkemLp94t2zNa+YzMrKy7W3L5bfLt/wB1mrgG/Zf22tjbwa9GsEM0c8kc9m0itIqwbpl/efLI3k/e+b5ZGp8x0Rn9qUhug/AXXNN1Sza38WWc7WOoWl3fSL5zXMkkcNsrK37zau5Y2+Vl+7JV3xh8D9QvNQ164svElvpX/CQXUnmRz+dtZmaNo9u2Rf3i+XJt2/e3Vq+MPgT/AMJN4k1zWrXVobO61bcsyz2fnK0O22Xy2Xcu5f8AR2b/ALaf7NYNv+zJ96O916O+s5IbKOaOSzZmuGt4fL8xmaRm/wCArtWjmH7T7XMF58Ata1Sz1BYvFi3Mt0228jnkuGimbc21W2yKy7Vb7q7fmVd1N/4Zu1L7O1u3iTyoGX7sHnQ/N5c6q3yt/ekjb/tnU8n7ON15bXX/AAkk0+qxw/6Pc+W0cqttZW+bc23d/errPgZ4N1jwR4Jls9ct7OzvpryS5+zae26CFWVV2r/3zu/4FRzBKfu+7IyPhL4L8VeHPHXii817c1jMvl2ty140n2xvOkk8zbubb8rKv3V+6v8AvV63RRSOWUuaXMd/8C/+SoaX/uzf+i2r6Z8M/wDIJuP+vy8/9KZK+ZvgX/yVDS/92b/0W1fTPhf/AJBdxjr9uvP/AEpkrpp/Az3MD/DOR8E6zL4k+B9hqcujp4ee80YynS4o/LW13Rt+7C4XbtrzX9vD/k1fWv8ArtY/+lEVepeGbjxHcfBm2l8XxiLxM2kM2oxqFAWby23fd+X/AL5ry39vD/k1fWv+u1j/AOlEVVU/hl43+BU9D81Ph58Q9Q+GuuT6hYW9jqEV1ayWV5p+pW/nW11DJ96ORf7v3a7tv2ovE6XEht9K0OxsvIsLW3sLS1aOC0hs7r7VGsa7t3zSfe3M33q8corxuaR+axr1KceWMj1qL9pbxPFNbTLZaX5kE+r3C/uZPvaj/wAfH8X8P8P/AI9uqzaftQeJbTSYrVdH0NrnytMt5tS8iX7TcR6fIslurfvNv8O1tqrurxyiq9pMr61X/mPa9R/az8W6t4f1vSbrTdIeDVbe/tZpFinVo47yZppFVfM2/eb5WZWb+HdUd5+1Z4xur6XUILPR9P1Oa9sdQmvLa3k3zTW0bRxsytIy/MrbWXb/AN814xRR7SYfWq/8x6pdftFeIGsbnTbPS9H0jRZtHvdHj0uxhkWCGO6kWSeRd0jN5jMq/MzMq/3ayr74069ffE3R/HhgsYtY0sWogiVH8hvIjWOPcu7+6vzfNXAUVPNIUsRVl9o9Yf8AaM19dNltYNJ0W2nSG9t7K+it5GudOt7pmaaGFmk+625vvbmXc21qn/4ae8V7raVbPSYtQW4065vtQS3bz9Uax/49lm+bbtXav3VXdXkFFP2kh/WK38xe8Va5ceKNc1fWLpY1udQuJruZY1+VWkZmbb/s/NX7P6X/AMkz8L/7ml/+jYa/FCb/AFMv+7X7X6X/AMk08L/7ml/+jYa7cH8R9JkPvSq3GfFPVNE0z/hEf7b0s6l9o8RWdtY4OPs9027y5v8AgPzV0Gs/8hrQf+viT/0RJWP8RNc1HRf+Ea+waQurG81q1tJwYWk+zQtu3T8fd2/3vetjWv8AkNaD/wBfEn/oiSvQj1Psmfmt/wAFGv8Ak4aL/sB2v/o2evJ/BP7QnjH4f6Da6Rpk2nS21jNJcafJqGnQ3E2nySfea3kZd0e6vWf+CjRz+0PF/wBgO1/9Gz18u141STjUkfmmOnOljKkoSPQx8ePF50KHSDdWrWkVtaWY3W67mjt7prqPc397zG+Zv4qtQ/tGeNodWTUluLH7Suq3mtMr2asslxcx+TMrL/FG0fy7a8yorLmmcX1it/Mert+0745VYltpdL0+KG2s7WGO00+ONYY7O4+0Wyqv8O2T/vqpLz9p/wAbXl5bTPHoqxQ2t/afZo9NVYJIbxla5Vl/i3Mu6vJKKr2kyvrVf+Y9Ttv2k/GkN41wz6Xdr5dmq213p8c8EbWi7beZVb7sir/FVaH9obxrDHYh7+3upLWLU4Vmnt1aSRb599wzN/Ezf+O15rRRzSJ+sVv5jrfBvxS1/wAB6Hf6TpEsMdre3NveM8kKtLDcW7boZo2/hZd1dHdftHeNLjU7O9jl021SFrqWSxtdNjjtrprldtw08f3ZPMX5W/8AHdteX0VPNIUa1WMeWMjv9e+OHirxHpOtaXeTWa6Zq1rZWUlpBarHFbw2rboI4FX/AFaqzN/vV6v/AME8f+TkrT/sE3X/ALLXzTX0t/wTx/5OStP+wTdf+y1pT/iRO3BznUxdPm/mP01tv+Rs1H/rztf/AEZPW0axbb/kbNR/687X/wBGT1tGvZkfpiFoooqShBWNr3/IS0D/AK/m/wDSaatkVja9/wAhLQP+v5v/AEmmqo7iZ5tr37Jvwn8Va3f6xqvgy1u9TvpmuLm5a4mVpJG+83yvXiOv/sw/DCy/aq8HeFovCVumgX3hPVL+ez+0zbZLiG6sljk/1m7KrJJ/31X2fzXgnin/AJPg+Hv/AGI2uf8Apbp1Z8kTm+q0P+fa+4uf8MW/Bb/oRbP/AMCbj/45R/wxb8Fv+hFs/wDwJuP/AI5Xt+aM0uSP8ovqlD/n3H7jxD/hi34Lf9CJZ/8AgTcf/HK85/aL/ZL+E3hj9nv4m6xpfgy0tNT03wxqd1a3CzzFo5I7WR0b/Wf3lFfWua8V/bN1a40X9lP4rz2+mXOrNJ4cvbdobXbujWSFo2l5/hjDGRv9lGo5I/yj+q0P5F9xy3w5/Y9+DmqfDzwve3Xgm0lubjSrWWSRri4+ZmhQsf8AWV0n/DFvwW/6EW0/8CLj/wCOV1f7PuuTeJPgf4F1KbTLnR5LnRrVvsd4V82NfLULu28ZYfN/wKvRM0ckf5RfVMP/AM+4/ceIf8MW/Bb/AKEW0/8AAi4/+OUf8MW/Bb/oRbP/AMCbj/45Xt+aM0ckewvqmH/59x+48P8A+GK/gv8A9CNaf+BFx/8AHK67wp8I/CXwk8M61Z+EtGh0e2vEeaeOKR23ts27vmZu1egc+xqjrf8AyB7/AD/z7yf+gmrhFRehcaFKn70Yo5XxZqWuaV4R0KXw9ZLf3kmo6VBNGUMm21ku4I7mT/gMLSNu7ba6DxZ/x5Wf/X/a/wDo5KwvFGn+INS8H6FF4cu1s76PUNKnuJGfbutI7mFrqP8A4FCsi/8AAq3fFf8Ax52f/X/a/wDo9K0Xxm32TL1f4XeGNe1Ca+1DSY7q7l+/KzN83y7f73pVb/hS/gv/AKAcX/fyT/4qu4xRiseVE+zh/KcN/wAKW8F/9AOH/v5J/wDFUf8AClvBf/QDh/7+Sf8AxVdxS0cqD2VP+U4b/hS3gv8A6AcP/fyT/wCKo/4Ut4L/AOgHD/38k/8Aiq7mqd9dxafZz3Mu4RxI0jFEZm2r/sry1HKg9lT/AJT5x/ZV8E6J46+E82qa7YDUb9fEOt2izXEjF/Jh1O5hjX738Mcar/wGvYf+FLeC/wDoBw/9/JP/AIqvGP8Agn/490Xx18Dr+XQrx7+G28U615jiCRAvnajNcR43Ku7dFNG3+zu+avqCjlQeyp/ynDf8KW8F/wDQDh/7+Sf/ABVH/ClvBf8A0A4f+/kn/wAVXc0lHKg9lT/lOH/4Ut4L/wCgHD/38k/+Ko/4Ut4L/wCgHD/38k/+KruaKOVB7KH8pgXkKW/iDQ0jXbGkcyqvp8q1jaHoqWvxU8V6qutJdveadpsDaQrfPaeW92fNYb/+Wnmf3V/1J61uap/yMmi/7s3/AKCtc/oNtoMfxe8XTWVxO/iSTS9MXUoHH7qOFXu/szL8v3mLT7vm/hWtJbRLj1NpbWLUPEWtW0q7o5bK3jkX/ZJmzXNf8KB8Gf8AQPl/8Cpf/iq6uy/5GzVf+vS1/wDQpq2/xpSWpn7OMviiedf8KC8G/wDPhL/4FS//ABVH/CgvBv8Az4S/+BUv/wAVXo2KMCs+VE/V6X8p5z/woLwb/wA+Ev8A4FS//FUf8KC8G/8APhL/AOBUv/xVejYoxT5UH1el/KfLX7VngDSfhn8C9c8Q+HYpbLV7W806OGdpWk2rNf20Mnysdv8Aq5GWvX/+FBeDf+fCX/wKl/8Aiq8u/wCChXirSfDH7MWtf2rqEWn/AGzVNKhgMzbRIy6jbzMn/fuKRv8AdVq+iNJ1Sz1rS7PUbGZLmxvIVuLeaP7skbLuVh/wGjliH1el/KcR/wAKC8G/8+Ev/gVL/wDFUf8ACgvBv/PhL/4FS/8AxVejYoxRyoPq9L+U85/4UF4N/wCfCX/wKl/+Ko/4UF4N/wCfCX/wKl/+Kr0bAoxS5UH1el/KcP4f+EvhrwvqkGpadZyQ3kW7azXEj/eXaflZq3vC/wDyCp/+v68/9KZK2M8VkeGf+QTPn/n8vP8A0pkq4/CaRjGL905bwno+p+H/AIK2em61qy63qtrpDRXWpLK0q3Enltuk3N8zV0GveEdH8beGxpev6Za6tpsyxtJaXUYkjZlIZTtP+1XK/D7StH0X4BaVp/h/U/7Z0W30Ty7PUGG37RH5bbWr0Oz/AOPSH/cWq+wHLzPlkea/8MwfCf8A6J34d/8ABfH/AIV4x+x78E/APj79nDwfr3iDwZoeq6veLdefd3FhHvfbdTKufl/uqq19b8+1fP8A+wXn/hk3wH/uXn/pbPWfJEz+r0f5Udh/wzD8J/8Aonfh3/wXxf4Uf8Mw/Cf/AKJ34d/8F8X+FeoflR+VPkiH1ej/ACI8v/4Zh+E//RO/Dv8A4L4v8K8X8D/An4eX/wC1V8VNDuPBmiz6PYaDoFxZ2bWitHbySNf+YyrjCs3lx5/3Vr64/Kvlr4W/EbStU/b2+M3h6JL9dSTw9osZWW0kWMeQ1y0jeZ93b/pUG3+9ubb91qXJEPq9H+VHqv8AwzD8J/8Aonfh3/wXxf4Uf8Mw/Cf/AKJ34d/8F8X+FeoflR+VPkiH1ej/ACI8v/4Zh+E//RO/Dv8A4L4v8K8a/bE+CPw+8A/s0+PNf8P+DND0rWrKxWS1vbawj82FvOjXcvy/7VfWv5V4F+3nn/hkP4m/9g5f/R0dLkiH1ej/ACI6v/hl/wCE7dfh54dI/wCwfH/hXZ69aQWeh2tvDGsUMV3ZpGijgKtxHtWugXOBisfxZ/yDYMf8/wBZ/wDpTHVRS5kP2cKafLEy/Hy+JmPh0+GmVdus2zalu2f8ePzed97/AID935q09Z/5DWg/9fEn/oiSsT4jaNPrh8L/AGfWY9H+ya7a3cnmSmP7Ui791uv95m/u/wCzW3rP/Ia0H/r4k/8ARElXHqas5/xd8FfAvjvVTqfiHwlpOtX/AJSwi5vbRJZNi52rub/eb868D/ah+CPw+8FeBdAvdH8GaHp9zceLdCsJZLewjDNDNqMMc0f3futGzL/wKvravBP2zf8Akmfhf/sefDP/AKdbasuWJjLD0ZO8onU/8Mw/Cf8A6J34d/8ABfH/AIUf8Mw/Cf8A6J34d/8ABfF/hXqHPtR+VPkiH1ej/Ijy/wD4Zh+E/wD0Tvw7/wCC+L/CsPxx+zX8LbHwX4guLfwB4fgnh0+4kjkWxjDKyxNtbpXtn5Vw/wAavElp4R+EXjLV74Tm0tNIupJfs0TTSBfKbkKvzGlyRD6vR/kR4v8Asw/s/fDfxP8As4/C/WNV8EaJf6nf+GNNubq7uLNGkmla2jZ3Zv4mZua9Q/4Zh+E//RO/Dv8A4L4v8K5v9iXxPaeKP2TfhTdWKzLDb+HrOwb7TE0WZIY1hkKgj5l3o21v4q90/KnyRD6vR/lR5f8A8Mw/Cf8A6J34d/8ABfF/hR/wzD8J/wDonfh3/wAF8f8AhXqH5Uc0ckQ+r0f5EfJFz8EfACftiWPhZfBuhf8ACPyeA7jU3sP7Pi8o3S6jBGsn3fvbWZa9+8J/BHwF4G1ddV8P+EdI0bUljaMXVlaJFJtb7y7lFed3f/J++mf9kzu//TrbV7/9KXKgjh6UXzRiY1t/yNmo/wDXna/+jJ62jWLbf8jZqP8A152v/oyeto1pI2QtFFFSUIKxte/5CWgf9fzf+k01bIrG17/kJaB/1/N/6TTVUdxM2a8D8Vf8nwfDz/sRtc/9LdOr3yvA/FX/ACfD8PP+xG1z/wBLdOqRnW/G5pWsfDFsl1d2sdxq/lzC0upLdpF+y3Lbd0bK2Nyq3/Aa4X/hHof+f/Wv/B5e/wDx6u8+NzbIPCBP/QZb/wBIbuvHbP4q2+pWcF1b+HdelguI1kjk8m3+ZWXcrf66vZwdOMofCePi6koT+I6b/hHof+f/AFr/AMHl7/8AHq8t8ffFXwz4P/trTdUt/FF9PZyNBcafHrFw3nW7Wn2hpvmudvk7d0fzfxfLXX3HxSt7O3lmuPD+tQQRrukklW0VVX+8zedXIazL4L8eahLrF34P1bULzVNJk0f7XBJb/vrLzPMaNWW5/vfxL81dkqP8sTkjW/mkXPhL8SNF+LF1rlrpMPiKxg0WZrSRp/EkjbmWRo/9XHcs0f8Aq2+8q16N/wAI9D/z/wCtf+Dy9/8Aj1ebbdJt9L0PTbDw34m0+z0fVP7UhjXyW3SeZJIytuufus0jV1X/AAshf+hZ17/v3b//AB6iNH+aI5Vv5ZG//wAI9D/z/wCtf+Dy9/8Aj1dF8KEex8f6pZpd6hcWzaVDN5V3fTXCq3nSruXzGbb8v92vP/8AhZC/9C3r3/fu2/8Aj1dp8Edbt/EnjK51K1SSOC40OFlWddrr/pM67W/75rmxVOMaPwnRhakpT+I90rO13/kE3/8A17yf+g1o1na7/wAgm/8A+veT/wBBrxI7nsS2OK8eaJba94J0G3vNZj0GOHVtGu1uZv8AlpJDewSJD95fmlZVj/7afxV1Xiv/AI87P/r/ALX/ANHpXK/EBdAl8DeHj4je6jsf7X0VrdrX732v7bb/AGXd/s+d5W7/AGd1dV4r/wCPOz/6/wC1/wDR6Va+MX2TcooorMs85+NrSL4Pt0jnuLcy6pYxO1pcSQyFWuYwwDRsrdK87/4R6H/n/wBa/wDB5e//AB6vRvjd83g+x9f7Y0//ANKY68RtfidNfxtNa+F9SntfMkVZPtFuu7azLu2tJ/s16+BpxlH4TysXUlB/EdR/wj0P/P8A61/4PL3/AOPVwHjb4jaH4D1K80+9/wCEonvoY7Se3gttau914szSLuj3Tf8ALPyZGk3fdWtmX4jXlvG0kvhXUIoo13MzXlp8q/8AfyuK1Lxb4T+ImoaR4gn8MtqtzZw3dlY3ceqWnyrcR7Z1+Wb+6v8AwGu6VH+6cMa394zP2f8Axl4H8QahqfhXwVouueH7G1aS/m2680atJNtkZvJjufM+bzvvbdvy/er27/hHof8An/1r/wAHl7/8erxa80bS4vAreGdE8O3mi6bJfR38jNfWlzu8varbd1z8vyxqu5W3L/D81ejL8SLyX5o/CuoN/u3lp/8AHKI0f5ohKt/LI6P/AIR6H/n/ANa/8Hl7/wDHq1/hzC+nfE6xgjvtSlgm0m9eSG81K4uFLLNabW2ySN83zv8A99Vwv/Cwb7/oU9Q/8DLX/wCOV1Xwe8RL4q+IWl3q2s1i66bqtu8E7KzK8d3aRt91mX+GsMVTjGlL3TfD1JSnH3j6DpKWivBPcMLVP+Rk0X/dm/8AQVrA8P6to8/xe8Yabb6X9n1u10zTJrzUc/8AH1DI92IY8f8ATPy5f+/tb+qf8jJov+7N/wCgrWVousatdfErxJp1xpP2fRrTTrGWz1Ly2BupJGufOj3fdby/Lj4H3fN/2qqW0SY9TWsf+Rs1X/r0tf8A0KatusSx/wCRs1X/AK9LX/0Kats05BECK8V+JNxfXnxImsU1fVLGzh0q2nSHT7ySBfMaa4Vmbb975Y1/75r2qvAfjBr0Hhn4g3+oXMU00a6Rp0ax2yq0rtJd3Maqu5l/iZa2wsYyqpSMMRKUYXiQf2fef9DD4i/8HE3/AMVR/Z95/D4i8RN/3GJv/iq53/hZC/8AQt69/wB+7b/49VW/+L+n6THFJf6Pq1jFJJ5cbXLWkas391d1z96vb9hH+U8X20v5jyr4vfEf4ZeOPAp0nxjd+Ltb0C8tV1Sa0kuppFh8nz5ljk3SfLJ/oU/y/wCzXrvw/wDE0XxE8K22uaVrPie20+ZmjhWfWWb7vy/8sZpF2/8AAq8x1b4e+Bdej1y1l8I+KE/tLUptUvFgmt1bzpreSFv+W3yrtkkZV/vMzV1Vvq32PxpBrFvoOtW2nw6e1l/Z8FvCu5mkVtzf6Tt/h/u7vmb5qUcP/NH8DWVb3fdkekf2fef9DD4i/wDBxN/8VR/Z95/0MPiL/wAHE3/xVc7/AMLIX/oW9e/7923/AMeqK6+KlrYW7XF14f1yCCP5pJGht9qr/e+Wan7CH8pl7aX8x7N8F7y8uPDuqRXd7dag1rqtxBHLdzNJJ5a7dqlm+91r0avN/gguzQ9fX/qOXX/stekV89U/iSPfpfw0J/DWL4a/5BNxn/n8vP8A0pkra/hrH8Nf8gq4/wCvy8/9KZKnoV9o4z4f3Wg3nwE0qfwra3Fj4ck0Tdp9rcndLHD5Z2q3zN83/Aq9Esf+PWH/AHFrz/wPrY8SfArT9TGip4cW80Zpf7Jgj2ra7o2/dqu1fu/7tegWP/HrD/uLT+wH2izXzj+xHIYf2NfCEkR2yx22oMrf3W+13NfR1fN/7FP/ACZf4T/689R/9K7mkMg8Nw39/wCG9Hup/EfiJp7izhlkb+1pvmZo1Zv4q0f7PvP+hh8Rf+Dib/4quO0bx9b6TpOlaaml6pqE9vpdk0zWkce1fMhXavzSL/dq/wD8LIX/AKFvXv8Av3bf/Hq+kjRp2+E+elWl/MHirxRZ+C5LL+1/E3iW2gvVufLuf7Vm8pfJhaZ1Zt3yt5ccjL/utXmPh340eB9Q+JEEemv4wh8WeII47S4uZb7yZ2jhkZY1k3TKzbWkk+VVZl3Vv+OfEnhP4paHdaHrOg6tfWlndQ3NxFDNaK1vJG25fM23Pyq21lZW+8rMtQaXpOh6D4g1zXtL8M+JLbXNUWbdeTx2ky27SSNJujXzvl+Zqn6v73ux/Ar23u+9I9Y/s+8/6GHxF/4OJv8A4qj+z7z/AKGHxF/4OJv/AIquA8EeKLjwl4P0rR73S/EWr3NjbrBJqEkMKtcf7Tbrlvm/4FW7/wALIX/oW9e/7923/wAep+wh/KR7aX8xuTf2hpN5pFzDr2tu/wDathEyz6jJJGyyXccbKys21tysy1d/b0/5NB+J3/YPX/0dHXK2vjK38SahZ2a2N9p1zb6ppE7R30ca7lk1GNVZdrN/zzauq/b0/wCTQfid/wBg5f8A0dHXkYyMY1PdPVwcpSp+8e+joKxvFX/INh/6/rP/ANKY62R0WsbxV/yDYf8Ar+s//SmOuOPxI7JbHOfFPT9C1BfCX9u6hNp/k+IbOfT/ACRnzrtd3lRN8rfK3zV0Ws/8hrQf+viT/wBESVzvxR1LQ9NHhH+3dPk1Dz/ENnBY+UceRdNv8uVuei/NXRaz/wAhrQf+viT/ANESVUd2DNuvA/2zv+SZeF/+x58M/wDp1tq98rwP9s7/AJJl4X/7Hnwz/wCnW2qCjqfjRcXa3Xha0tdRvdPjuryYTNY3DQvIq28jKu5f9rFcb/Z95/0MPiL/AMHE3/xVdb8crqOwvfClzLnyobi6lk2/3VtZWryu3+KEN1bxTReG9eaKRVkVvLt/mVv+21ezg6cZ0/hPIxVSUKnxHT/2fef9DD4i/wDBxN/8VXm3i/4ueHvD8d9Y6rrfi2do7yTS7q0W9mkb/VxyNIy+Z/qWWaP5v+mirW/efFW1sLWW4utB1i2to13STz/ZFVf95mmrh9c0vwb431zUNcn8M+IJ77WtNhspJ7Sa32yW8cyyK0f77725Y1Zv4lVVrqlh4/Zic0a0vtSNn4H+MvD3jfw/Lp3gy98T6bonh9Y7CGFtW2xxqu5FjVY5mZdvl/dZVr0n+z7z/oYfEX/g4m/+KryC30uz0aHwha6DoviLSrHQbprlo/Jt2a6Vv4ZGW5VW+83zMrbd396u8/4WQv8A0LOvf9+7f/49VRw8ftRCVaX2ZHR/2fef9DD4i/8ABxN/8VXU/B+6vY/FniOxn1TUNRto7GxmjS/uWn8tmku1Yqzf3vLX/vmvNP8AhZC/9C3r3/fu2/8Aj1d98CNZt/EPiLW9UtfMS1vNF0q5jEq7XCtJet81ceKpxhT+E2wtSU5/EZV3/wAn8aZ/2TO7/wDTrbV7/XgF3/yfxpn/AGTO7/8ATrbV7/XjHtGJbf8AI2aj/wBedr/6MnraNYtt/wAjZqP/AF52v/oyeto1UiULRRRUlCCsbXv+QloH/X83/pNNWyKxte/5CWgf9fzf+k01VHcTNmvA/FX/ACfB8PP+xG1z/wBLdOr3yvA/FX/J8Hw8/wCxG1z/ANLdOqRnW/HFd9v4RX+9rLf+kN3Xgeg+H/F2jaDpmnvodjK1nax2zSLq3yttVV3f6uvfvjZ/qfB3/YaP/pDd1yte7gJSjT908PHRjKp7x5P4o8JeJPFXhvVdFutDt4rbULWS0kkj1Zdyqy7fl/d1wWs/s03GqTStFo7WMUknmNHDrStu/vbmaFmbc25vm/iZq+laK75SlL4jhjHl+E+YbX9mTUrXULa4e3uLyC3VVXT7nWI/IZfO87a37n7u6u68B+BfFngvwnp+jvpdvqU9ureddyat800jNuZv9XXslFEZSj8JUve+I88Ww8Wbv+Rfs/8Awbf/AGuu4/Z50m60HX/7PvVjS7h0OPzFifeqs11O33v4vvVbrP8AD/xC0TwP8UvL1i4uIXv9JhhtvJsZ7jc32h/veWrbfvL97bXHjJSlR946cHGMavun0RWdrv8AyCL/AP695P8A0GsGb4meHbXxvB4SkublNfmG5IF0+4aM/Lu/13l+X91f71UR8TPD/iO+8R6DYXVxLqmmwTfaY5NPuIkXb8rbZGjVW+b+6zV4Edz3ZbFb4gaxpmh+BfD0+q6SNZtZNW0W3jgZtvlzyXtvHDN/2zkZJP8AgFdV4r/487P/AK/7X/0eled2/wAV4/FHgnT7zwLby63LBqmlWV3HcabcReXby3MKzyKsir/q4Wkk3fdXZXoniv8A487P/r/tf/R6Va+MX2TcooorMs88+Nv/ACKNl/2GtO/9KY6+U7PxN/wj9jPbrfaPPbWs1x/pLNfqu3zGZt220Zfl/wB5vu19XfG7/kU9P/7DWnf+lUdfFzePJF0vV/CqaXI23Tb2dr77dbKu1vtP/LPd5jfd/u/xV7eX/DI8bHfFE9SuvDPirUtPnt3s9D8i4haNmXUpvusv/XtXn11+y7HcW8EK6PpMCxxwx/u9Wm3SeSsiruZrT5t3nNu/vbV/u19B2f8Ax5wf9c1/9BqavRlKUviPOjGMfhPmi3/ZLjt7izkWzs/Ktdvl2zaxJ5Xy7f4fsn8Xlru/vV2vgP4W+JPAeiy6fa2+hz+ddTXckn9oTL80jfKqr9m+VVXbGv8AsqtexUVMfd+EqXvfEeff2D4v/wCfPQ//AAZT/wDyNXW/A/Q7zw/46023v2t/tkljrFyy2sjNGvmXlpJt3Mq7vvf3a1KyB480X4e/ETRL3XJbqK2m0u/gjNpY3F227zLRvuwxsy/d+9WGMlKVGXMb4WMY1Y8p9H0VxusfE3QNB8SaVoN5LejUdSEbWyx6bdSRHzG2rulWNo4/m/vsuKktviRoF541n8KJLef23Cu6SJtNuVhxt3f64x+W3yt/er5w+hNHVP8AkZNF/wB2b/0FazdHg8RL8RfEUt7MG8LvYWK6ZHlcrcK1z9pP97lWt/vf3a5+1+LfhvxH4gZ7C4vmTRYbiS98/SbqDaqr1TzI18z7rf6vd0o+G15aeLvGHifxlpGrXV3pF/a2WnR2d1ZXNo0Etv57SNsmVfvLcRfMq/8ALOrltEmP2js7H/kbNV/69LX/ANCmrbNYlj/yNmq/9elr/wChTVtmiQR2A9K+aP2kNsfiXUWe4s7bZYaPKrX1x5MTNHqM0m3d/ebbX0uelfM37R7+X4/s2G5tselNtX/r5u66MH/Gic+K/hSPP9N8W3GrXX2WyXQ7m52tJ5cevKzbV+Zm/wBXXMeKG0v4jNo1rftod5BDeeZHbR+IlVbppI5IfLbbH8yt533f4q0tD8af8J1JpWoJpOpaVB5d+sa6ksatJ/oUn8Mcjf8Aj22si1+IP9pW+meHTo+pQeXJp23UGVWtpPLmtt33W3L95du7738NfTSlL+Y+djGP8pmXv7LV5ebd9ncLtj27V1iP73/PT/U/eqO4/Zj17ydQaJriW+vJmk+03OsKzW+6SBpPL2wrtZlh2/8AbRq+pW+9RWJtc85XTfFEUaxp4ds1iVdqr/a33V/791U1zw54s1zR7nT/AOxbGD7Qvl+Y2qbtv+1t8uvUaKv2kjH2cTsPgk2/RNfb/qOXX/stej14r8EvH3hr+0td8KjX9O/4SX+1rqX+yPtS/a9u1W3eV97bt+au60j4seDPEH9rnS/Fmj6h/Y6NJqP2W9jl+yKu7c0u1vl+633v7tfK1P4kj6el/Didf/DWP4X/AOQXcY6/brz/ANKZawrX4w+Br7wveeJrfxhoc/hyzmEFxqsd/E1rDJ8vytJu2q3zr/30tZem/FzwRoXgy01zUfF+i6foupX159h1G5v4o4Lj/SJP9XIzbWqehf2i54XufEN38GbWfxdCLbxLJpDNqEaqo2zeW277vy121j/x6w/7i1w3hPS9X0P4K2NjrmqLrurwaMUutSWVpVupPL/1m5vmbd1rubH/AI9Yf9xaPsB9os183/sU/wDJl/hP/rz1H/0rua+kK+b/ANin/ky/wn/156j/AOldzSKPJV16PQbyJlvNFb7Rpenbo7nVltpYWW3X5WXa38LK1XJfGjW9vbXD/wBgpBdKzQyN4gj2ybW2tt/d/wALfLWLb+N/+ESuIrVdJ1TVZdQktI4/7PWH92y6ZaN83mSLtptx4mk8KzLfJY3Gpys2oxrbWzKrMzam38TMq19bTlKMY+8fKSjGUpe6clq3gHw/rC32oPdaXFLdX00kl2viSP5ZJo59sa7o9q7fMkkXb/Eu6qmjfAy18QTNa6Jq3nzq0d3NHY+IIWZvLZdrN+5/vL97+8zf3q6yXxust8vihNPvkiWFbtbGdVhuWVbe9+XbIyqrNt/iau4+G/iCTxV4q0/UnsbjT/O0e72wXM0cjbfOtvm3Rsy/+PVPKXzHNeA/hB4i8B6teXVvpdvPBJaw2lvBJq3+r2r+8kb93/rJGVd3+7XcfYfFn/Qv2f8A4Nv/ALXXodFXGpKPwkyjGXxHnei6HrFr4jj1LVLO3sYpr7Q7aOKG689maPUVZm+6u3/WLXe/t6f8mg/E3/sHL/6OjrM8X6pY6DptlqGpXlvp+n2uq6ZNcXd3IsccMa3sO5mZvlVazP24PiB4W1f9jDx1qNh4l0e+0zUrVbSxvLe+jkiuplmXdHGyttdv3b/Kv91vSvAx38Q9rA/wz6jHRaxvFX/INh/6/rP/ANKY6ytW+KngzQP7G/tPxfoWljWEEum/bNShi+3K23a0O5v3i/MvK/3l9az/ABf8RvClrrVp4Wm8UaPF4nmvbMx6LLqEK3r/AL6NsrCW3/d+b7tcMfiR3S2LfxE1q60T/hGPsmirrP2zW7W0l3wmT7JG27dcf7O3+9/tVs6z/wAhrQf+viT/ANESVxXiD4jR+IvEGmaD4E8S6Lq2t6frMP8AbunWuoW01za2KsyXHmR7ty7W2r/e3V2us/8AIa0H/r4k/wDRElOO7Bm3Xgf7Z3/JMvC//Y8+Gf8A0621e+V4H+2d/wAky8L/APY8+Gf/AE621QUbH7RHl/Y9C82aO2j/ANP3zzNtjjX7FN8zt/CtfPmjeMGW30/T4pPD89ztjto1XXl/eSfKqqv7v+Jq9x/aw/5FG3/69dU/9N89eB/8J9J4j1zUNF/suS2XS9WsI2uWvreTzP8ATbbb+7VmkVW3fxL/AAstfQZfzRpyPBx3LKoReMtZtfFGh6hod/daHbRSN5czQeIo1ljaORW+95fy/MtcHr3wq8N3FxPb/bNP0pW3M1tB4ij+VZIYFVfmjZvlWNZF3fxSM38Vddb/ABGuNJuLPw2mkyXi3XmL9pjvI1aPzJp/m8lvm8tVjbcy/wDfP8VO0Px43hWPTNNTSbzU5dSmVY2triGNY9tpafe8yRf738Nd8ve+KRxx934YnDt8LdJtbxbqXXLG5WS33W9pd+IofI8v9+sfyrD91WZtv+7/ALNes/DfTdatfBun2emw6f4hWzXyJtQXWlkaab70jN+7+8zNu2/7VcuvjlvAv2m6XTZtV85trRwTRxsqrcX7Nt8xl3N8vyr/ABV6z8J71tS0/XLqSGS2a41JZGgnX5o91lbNtb/aqY+7HmiEve92RWWz8WK3/Iv2f/g2/wDtdeh/s36RcaDeXum3nl/arPw/pEEvltuTerXqttaitv4Sf8j54q/7Bunf+jb2uLHSlKl7x2YOMY1PdOdu/wDk/jTP+yZ3f/p1tq9/rwC7/wCT+NM/7Jnd/wDp1tq9/r5894xLb/kbNR/687X/ANGT1tGsW2/5GzUf+vO1/wDRk9bRqpEoWiiipKEFY2vf8hLQP+v5v/SaatkVja9/yEtA/wCv5v8A0mmqo7iZs14H4q/5Ph+Hn/Yja5/6W6dXvleB+Kv+T4fh5/2I2uf+lunVIzr/AI2f6nwd/wBho/8ApDd1ytdV8bP9T4O/7DR/9IbuuVr2sF8B42M/iBRRRXonAFFFFABWn8Mf+Snal/2BYf8A0olrMrT+GP8AyU7Uv+wLD/6US1x4z+FI7ML/ABj2Ws7Xf+QRf/8AXvJ/6DWjWdrv/IJv/wDr3k/9BrwY7ntS2HaL/wAgmy/694//AEGqXiv/AI87P/r/ALX/ANHpV3Rf+QTZf9e8f/oNUvFf/HnZ/wDX/a/+j0q18Qvsm5RRRWZZ578bf+RT0/8A7DOm/wDpVHXwR4mutHs/EljbvodrLq91o+osuqNNtlVd12u3bu+b+L+996vvf42f8inp/wD2GdN/9Ko6/PrxVf6fb+ONMtVt7We+k0fUWkkZYWlhb/S9v3v3i7lX+H+7Xs4H4ZHkYz4j7Js/+POD/rmv/oNTVDZ/8ecH/XNf/Qamr0jzgooooAKveA/+Sr6X/wBgW/8A/R1lVGrfgP8A5Kvpf/YHv/8A0dZVy4n+DI6sP/Fie20UUV88e8YWqf8AIyaL/uzf+grW2O9Ymqf8jJov+7N/6CtbY71Utokx6mLY/wDI2ar/ANelr/6FNW2axLH/AJGzVf8Ar0tf/Qpq2zTkEdg7ivmf9o5PN+IVpGfuNHpSt/4EXdfTHcV8z/tIKrfECzV/uNHpSt823/l4u66MH/Gic2K/hSPnb4N/2CtxfW/h7SW0i2hutRjkja6km8xlsp13fMq7fu/w7qo6b/YNr8SIobXR2g1ySz0qW61D7VIyybpLT5fL27f4V/i/4DTvgfdafdalq62FvHHtvtR8ydVb/SP9Eudsm5pJFb5V+8u1fmqjptxpq/FyC3ihjlvv7P0pvtO1mZf31tuj3eZt/u/L5e75v7te/wBDwvtH2I33qKG+9RTAKKKKAOr+B8Ef9j69J5aiT+2rr5tvzfw16MlrFFv2xIu7721etee/A/8A5AOv/wDYauv/AGWvSK+YqfxJH0dL+HEr/ZIVhaMRII2+8u3isjwzawy6RKjRIyrfXm1WXp/pMlb38NY/hX/kF3H/AF/Xn/pTJU9C/tEniz/kWdW/69Jv/RbVdsf+PWH/AHFql4o/5FnV/wDr0m/9Aartj/x6w/7i0fYD7RZr5v8A2Kf+TL/Cf/XnqP8A6V3NfSFfN/7FP/Jl/hP/AK89R/8ASu5pLcb2PmT4nL4ft9HsbrXNHbVWXULCO123UkPkt/ZVs2792rbv9X/drX8dRaW3hPVZNb0/+0tPt7fU55LRZmj8zbqvy/MvzfernPjFcaba+G7GS/hju/8AiZWCrbSKzbl/sq23NtWSNvl+X5v4f4vlre+IjWsXgnXJLpVaJbPVWWNm/wBY39p/Kv3l3bvu7d1fUQ2PmXuS+FbPSdZs9ItXs/I0Oaxhja2kmZtsP2S7XazMqt93+L5a7H4I2/hu116C38KR7dFhsb9Y2WTzFZvtFszMrbm+X5v4q4fwVLb3Gj6U1lbxxQNp6+TAqsqr/ol78u1mZv8AvpqvfslxQ+XZ3Sx+VPcafe+d833mWa2Wr+yL7R9K0UUUgMzXFWX+yldVZW1rTNysv3v9Phqb9vCzt4v2P/iTGkKKsenqyqq9P30dR6v97Sf+w1pn/pfBVr9vT/k0H4m/9g5f/R0deJjv4h7GD/hnujafbSeXvt4m8sfJuQHbWR4qs4GtYZzDH5322z/ebPm/4+Y/4q6AdFrG8Vf8g2H/AK/rP/0pjrhj8SO6Wxpx2cEMzTJCiyt95lX5jWXrP/Ia0H/r4k/9ESVtjpWJrP8AyGtB/wCviT/0RJTiDNuvA/2zv+SZeF/+x58M/wDp1tq98rwP9s7/AJJl4X/7Hnwz/wCnW2qCib9q/wD5FG2/69dU/wDTfPXyzFdaPF8atesbPQ7Wx1NbjTpLjUI5v3txuu7Jvmj3f7X3tv8AD96vqb9q/wD5FG2/69dU/wDTfPXyXYX+nt8fPEdrZ29q0sdxpzSXMaw+arfa7LzI9y/vPvN91q9zB/wjxcX/ABR2uXWj2fjTwYs+h2tzqt0t75OqSTeXLDtmnXaq7l3f6xv71ad1pfg+48P2OoeK4Y5JbO8h/s/995crSfZ7Ztq/Mu77qt8392ue8R3+n2vxE8D2/wBltbm+mW73MywtLD/pDKrfN8y/xfMv92oPiVtbwf4ejeFZbabWoY5vmX7rWEH/AI7/AHq9Dm/r7jhOs1TRfCuraLrX/CZRxy6Vb7ZP3kjR/vPtd6q7WVl+Zt22vXvhHLDLpetSW6ssDagrRqzbtq/YrbbXgPxI/wCJb8N9cWCPdFDNaLt3fMq/b71fl3bvmr3L4E2cNh4Vvre3j8qCO8j2ru3bf9CtqPsh9o9Irb+Ef/I+eKv+wbp3/o29rErb+Ef/ACPnir/sG6d/6Nva4cZ/BOzC/wAY527/AOT+NM/7Jnd/+nW2r3+vALv/AJP40z/smd3/AOnW2r3+vBPcMS2/5GzUf+vO1/8ARk9bRrFtv+Rs1H/rztf/AEZPW0aqRKFoooqShBWNr3/IS0D/AK/m/wDSaatkVja9/wAhLQP+v5v/AEmmqo7iZs14H4q/5Ph+Hn/Yja5/6W6dXvlfNXjHxhoVt+3l8PtLn1jT4dU/4Q3VoPskt0qy+ZJdWTxoFzncyxyMq/xBG/u1Iz0j42f6nwd/2Gj/AOkN3XK13HxY8Pat4gstAbR7WG+nsNR+1yQy3Hkbo/s80fyttbndItcZ/wAIv42/6Fe3/wDBtH/8br1cLWp04csjysVRqSnzRIqKl/4Rfxt/0K9v/wCDaP8A+N0f8Iv42/6Fe3/8G0f/AMbrt+sUf5jk+r1v5SKipf8AhF/G3/Qr2/8A4No//jdH/CL+Nv8AoV7f/wAG0f8A8bp/WKP8wfV6v8pTvLy3sLWW4upo7a2jXdJPPJtVV/2mapfgn4o0vxV8SNdm0a8XU7a10yCCa6tlZoFk86VtvmfdZtvzVleLPhT438e2dno0ljaaDZSXsEt5ey3a3DCGNvM+WNV+Z9yr975a9v8AB3g/S/A+hQ6RpMPk20XzFmO6SVj96SRv4mb+9XDisRGUeWJ24fDyjLmkdBWdrv8AyCL/AP695P8A0GtGs7Xf+QTf/wDXvJ/6DXlx3PRlsO0X/kE2X/XvH/6DVLxX/wAedn/1/wBr/wCj0q7ov/IJsv8Ar3j/APQapeK/+POz/wCv+1/9HpVr4hfZNykpaKzLPPfjZ/yKen/9hrTv/SqOviHWfCWvakv9vRXEMWi2em6jHJB9qk3Sf8fPzeXt2/eb+9/DX3V8VtB1HxF4Xig0mCO5vob+0ulhml8tXWOZGYbv91TXgVx+z74xl0250+NNQj0+4WZGhTVLL5VkZtyqzWm7+Jq9XB1qdOMvaHlYujUqS907Wz/484P+ua/+g1NTo/CfjaKNYx4Xt9qrtX/ibR//ABun/wDCL+Nv+hXt/wDwbR//ABuuz6xR/mOb6vV/lIqKl/4Rfxt/0K9v/wCDaP8A+N0f8Iv42/6Fe3/8G0f/AMbp/WKP8xP1er/KQSyx28LTSyLFFGu5pJG2qq/3qp/Crxdo/ij4vQRaNfx6obLR7sXMlorSRxeZNbeXukX5fm8uXb838LVV8YfDfx34y8N3WiW+j2GmfbmjhlvbjUPOWKHzFMmI1Xc3y7l2/LXsPgD4f6b8OdDTTtPRmdmEl1eScyXMn8UjH/2X7qj5VrixGIjKPLE68Ph5RlzSOvoooryj1TC1T/kZNF/3Zv8A0Fa2x3rE1T/kZNF/3Zv/AEFa2x3qpbRJj1MWx/5GzVf+vS1/9CmrbPSsSx/5GzVf+vS1/wDQpq2z0pyCOwhr5o/aQbZ4/s2VdzeXpXy/3v8ASbuvpf0rwX44fDvxD4q8VC60vTLy5h+y2ZS6s3tf3c8M077WSaSPcu2Ra2w0owqxlIwxEZSpuMT5u+HPhXWvCt5LHrMcMH2qbUZ7eOCbzNq/Ypvl+9tX/gKr/u1n2HhTXIvFFtr0tvbwaLNDpUEe2b5mZZrZd21W2/Nt/iXd/tV7db/CXxr/AGlDd6hpGsXywxzRrEi6dD/rI2jZt32v+61VIPgz45SzsbOfT9Zns7WS2byli0xWkWFlZV3fa/8Apmte59YofzHi/V6v8p6E33qKT+yvFf8A0JOqf+Bdj/8AJFH9leK/+hJ1T/wLsf8A5IqfrFP+Yv6vU/lFqtf6la6XbtcXt1b2cC/ekuZFjX/vpqsf2X4r/wChJ1T/AMC7H/5Irn774J6/8TvHGjt4i0uTQfC2nW8jTLNPDLc3U0jL8sfls3l/KvzSbt3zNt/vLEsRTjH4io4epKXwnof7PeqWmteFNYv7C4jvLC41m6aC4gbfHIu5V3I38S7lavVe1UdO0y00XT7eysbeO1s7eNYooYV2qir91VWr9eDKXNLmPcjHljYaelY/hX/kFz/9f15/6UyVsfw1j+Ff+QXcf9f15/6UyUugfaJPFH/Is6v/ANek3/oDVdsf+PWH/cWqXij/AJFnV/8Ar0m/9Aartl/x6w/7i0/sh9os183/ALFP/Jl/hP8A689R/wDSu5r6Qr5y/Yfga6/Y58HW8Z3SS29+i/7zXlxSGfOfjDwrrni3T4LfQ7e3aW3urKeSSeby9q/2ZaLt+Xa38X8Lfw1o+JtG1DxBot9pulwxz31xDqccfmSbVj/4mf3q9OsfhB49tYxJDpGrWLSw2/nwBdOnVZI7aOH5Wa7X5f3dOi+DPjK1+zSWuma1FdxrcLNKy6YyTedP5zfL9r+Xa1fRxxFH+Y8D6vV/lPJbLRtasIbPS1+zrrkdrDBtkbdFu+z3fy7m3f8Aj26u2+EGiTeH/FS28tjHpiyWN7PHaRzed5MbTW21Wk/ib/2Xav8ADW+3wV8aSXn246drX9orIrLP5WmbdqxSR7dv2v8A6aN81bXh/wCG3jXRtc/tS80LWNTl+ytZxx7tOhVVZlZm+W5/6ZrT+sUeX4iPq9bm+E6uik/srxX/ANCTqn/gXY//ACRR/Zfi1PmHgfVGb+79rsP/AJIqPrFP+Yv6vU/lOd1/xNpNpq+g6W+pWq6nca5piw2KzK00m29gZtsf3vuqzf7qtW5+3p/yaD8Tv+wev/o6Or37P/wL/wCFf2MOveJI7e48Y3StLO0Q3RWbSNukWNv4nZm+aT+L7q/LVH9vb/k0P4l/9g9f/R0deLiKntJcx6+Hp+zjynvo6LWN4q/5BsP/AF/Wf/pTHWyOgrG8Vf8AINg/6/rP/wBKY6wj8SN5bG0OlYms/wDIa0H/AK+JP/RElbY6Viaz/wAhrQf+viT/ANESVUQZt14H+2d/yTLwv/2PPhn/ANOttXvleB/tof8AJM/DH/Y8+Gf/AE629QUTftYf8ijbf9euqf8Apvnr5yl8Ja9Z/ELUPEF7cQ/2VeXlhHb20d1JIy7b20VW27VVflXd95vmavqv48eD9Q8aaXpVvYabc6pCWuYbqK0lhjlWOW1ki3L5zKv8deU/8Ki8WSy2wutO8WXUUNxDc+S0+jKkjRyLIu7aytt3Ktezg61OnTlGZ5GKp1JVOaJ4/ceEte1nVNB1i1uIYNI01bvzo/tUitNumkZv3e3b/wCPVF/wjOqeJNJghs7G1vrZWj2/aZvL+yzfZ7TbM3y/vF27laP+Ld/3z7AvwX8VW9vLb2+neLILaRpGWFbjRm272ZmXczbv4qjs/g5410priPTNL1q2s5GVlglXTJmXbEkf3vta/wDPOu76xR/mOP6vV/lPKLrRr7Xre+t7Oxh1OBm/fWklx9mZv9Iv/LZZNvy7W2t/na3rfwgtZLDSdat5fL82HUFjk8hdsW5bK2X5V/u1HYfBHxTpvMGmeKILho9krQzaRtkbzJJN21pG2/NM3/jtdL4X8B+J/C9rdxr4V16+lurhrmaa8utM3s21V/5ZzKv3Y1/hqfrFHl+IPq9bm+E2ZZY4I2klkWKJfmZpG2qtXPgh4h0zxB448Xy6XqFvqUUFjp0MstpIJEWTzLttu5fl3bWVtv8AtLXJeMfhj4z+I0OlaGNBk0Gwkvo5r++1Oa1mWOGNWb5Y45G8xvM8varfL/er3jwV4L0r4f6Bb6No8Hk2kR3Fm+aSWRvvSSN/Ezd2rzsViIzjyxPQw2HlCXNI8juv+T+NL/7Jnd/+nW2r3+vn+6b/AIz40v8A7Jnd/wDp1tq+gK8s9MxLb/kbNR/687X/ANGT1tGsW2/5GzUf+vO1/wDRk9bRqpEoWiiipKEFY2vf8hLQP+v5v/SaatkVja9/yEtA/wCv5v8A0nmqo7iZ5RD448Y6hd6lLb6tpdrbxaleWkULaY0rLHDcSRrubzl3Ntjr49+Lnx4ufCv7U3/CQ3eh6Tqfjrw2lroek6gbRo1uLW6VZbmZl8z5WtllVV/vfaW/vV9Y6H839rj/AKjWp/8ApfNXmOreJvhbeXlzq2u6DateSbpGvp9LaZpFb5Y28xV+9Itku1fvfu1/2a+YeMqxrSifTrB0ZUYyPO9D/by+KPiPQrO507RtDvru8uLKGOO00+/nWNri2nuPLZVj8xpFWFW/dxsu2RW3V9RWPi/x7cWNtJc63pMU8katJGukMyq235l+adW/8dryO38YfC/S9QtrhdHjs77SV+yQzwaPJ/ocdus6rHu8v5fLj8/5f4V3V6bb65HceIL7SWjZbm1hhud275ZI5Ny7v++o2WpqYys/h901p4Gil72p6h8MPEF94m8GwX+qNDJe/abqCRreLy0byriSNTt3Nj5Y1/iNdePvGuC+Cf8AyT6L/sIaj/6XT13vpX0VP3oRZ8xU92ckOooorUzCiiigArO13/kEX/8A17yf+g1o1na7/wAgm/8A+veT/wBBpx3JlsO0X/kE2X/XvH/6DVLxX/x52f8A1/2v/o9Ku6L/AMgmy/694/8A0GqXiv8A487P/r/tf/R6Va+IX2TcooorMsKKKKACiiigAooooAKKKKACiiigDC1T/kZNF/3Zv/QVrbHesTVP+Rk0X/dm/wDQVrbHeqltEmPUxbH/AJGzVf8Ar0tf/Qpq2zWJY/8AI2ar/wBelr/6FNW3TkEdhaKKKgoKKKKACiiigAooooAKKKKAG/w1j+Ff+QXP/wBf15/6UyVsfw1j+Ff+QXcf9f15/wClMlPoT9ok8Uf8izrH/XpN/wCgNXMePPF194P0nQW02yt7251C6Fooupmjjj/0eWTdlVb/AJ5bf+BV03ij/kWdX/69Jv8A0Bq4T4uf8efgf/sL/wDtjd1lWk40ZSibUIxnXjGRh634y8SeJNF1DSdS0Dw9d6ffW8lvcQtqFxtkjZdrr/qP7rV8Jfsz/thWv7OPwd0Lwh4c8CWF3u86/vrrUNeaARzTXywR+e/2dtu6No5N38Mar/er7V17xNY+GVtmv5PKW4kZVbd8qqsbSSSN/sqqs1eU2/hX4IeH7iC4TSdP0+e3khuVZre5jaOSHy/I3bv+Wi/Z49qt8zeXu214FPH1ftH0dbL6P2S14H/bo8W+OvFmhaFZfD7SUOqW/wBrN6NbuJIFj8+eHzI3WyZZI2+zsyszR7lZdte5/wDCzPGX/QH0D/wYT/8AxivHvC/iT4W+Fb6e40O4tdMudQXbJthuF3L50kjfKy7Y41kmk/uqrMy16Da6xDdaxqOmhWW5s1jaRW/iWTdtZf8Avll/4DU1MfX5vdKp4Chy+8eqeAfE9x4x8K2uq3dpHaXEks0TwQyeYqtHM8fysyrn/V7uldR61wnwRP8Axbq1/wCv2/8A/Syau9r6GnLmjGR8xNcsnE8l+OXxE17wLJ4eg0KSygl1CaZZpL22af5Y493yqsi15r/wu74g/wDQT0X/AME8n/yTXVftNf8AIS8Ff9drv/0UK8kr82z/ADTF4XG+zo1OWNj5/GYirTq8sZHY/wDC7fiH/wBBLRf/AATyf/JNebftBWuv/tGfDLU/BPiXU9LisLySOeO5t9LYTW8kbblZT5/+8v8Aus1eS658KNf1DVvEEkWj2cl9eXjXMfiJtUkWSS3a4gkW3aHb/wAs442X5vl+X5fvNXV/A/4Wt8M/C7R3kiy6vebZLzbHH8rfN8vmKqtJ977zbmrzKmb42NP2n1j3vRHPLEVox5vaHsvhf4k+MfCPh3StB0q80O20rTbWO0tYF0eT93HGu1V/4+f7q17r4d1668V/CvwprF8I1vdQj0y7m8kEJvaSFm2j+7mvm1fvJX0J8N/+SEeAP+vLSP8A0KCvpuGMwxONqVPrEublsduDrVKvNzSPUB0rE1n/AJDWg/8AXxJ/6IkrbFYms/8AIa0H/r4k/wDRElfexPYZwXijx94ntvGWq6VpDaVBaWMdud17bSTSO0is38Mi+lfLX7eBPjb4aeFIPHMek3Omp4qsNtzp9nNHJar8zTszNN/q/KWTd/31/DX0f4i/5Kb4q/652X/otq4DxxP4H8XLP4f8V28N9Z29w0fl3MbNF5nk7ZPu/dVY7hVZm2qvmV85WxlWnXlH7J9LRwdGph4y5fePKvCn/BQ7xBrmraVo2n+HNBt4Li4jtbWFty3MkbXDW8bQW/mfvPlXzGXcu2OvVPgd+0149+NHhufWl0zQtDs8qIUltbqV5Ny7urNGv/fO5f8AarlrWz+Culxyw2trYwNdSW8rRwW9x5m6OTzLZtqrujbdIrL93duXbu3V2vgvxR4SXRV0fwjNHc2ek2e23sbRW/1cf8MbN8rfwr975dy7qipjqvL7pdPAUeb3juo/iP4vsdS0sXsmiXFnc39vaOsFnNFJtkkWPcrNM397+7Xs3rXzs+oW+tWnhe/tJPMs7rVdMmhf+8rXEbLX0T3r08DVqVafNUPKzCjToVFGmLXzV4k+NXja38WeILOwvNIt7Gxv5LSGOXTmlfau37zeevr/AHa+lO5r448Sf8jx4w/7DNx/7LXicQYyrg8JGpRlyyv/AJnz2NqSpU+aJ0v/AAu74g/9BPRf/BPJ/wDJNH/C7fiJ/wBBPRf/AATyf/JNeVfEjQdQ8S+B9X0vS5FivriNVXdI0ayLuVmjZl+Zdyqy7v8AarxnWfgNrHii90yJNHs/Ceg+Yvnabb3y3v2eP7RJJ8qyK0f3WX5du2vh8Pm+NqR5qmI5fuPGjiK0viqHsN34T1C7/aOtPjNJd6X/AMJXa6W2nKv9lt5LN93ztvnf6zy2aPd/dr3LwL8YvGWq+PvDulapeaVdadqFzJBMkOntDINtvNIrKxnb+KNf4a8r0nTYdH0mz0+3/wBRawrBH8qr8qrt+6vyr/wGul+Hv/JVfA//AGEpv/SK5rbL85x1bG06UqnNFyLo4qtKtGMpH1Dbf8jZqP8A152v/oyeto1i23/I2aj/ANedr/6MnraNfr8j6NC0UUVJQjVj69/yEtA/6/m/9J5q2Grn/FFwtrNo08pfyYbzdIyxs2B5Mqj7v+0y1UdyZbHjGj6laxvq6vdQqy61qfytIvy/6fPXIQfCjweuoXVxdTLqEUyrHHbT3n7iFVadl2qrbfl+0SKrN8yrXvd1Y+Br24knuND064nkbdJLJpW5mb+8zeXUX9j/AA+/6F3TT/3Bv/tdePLK6kpOXN+B7cczhGMYyj8J5DL4F8F3H2zfa2LfbJJpLj/SP9Y0iyLJ/F/Eskn/AH1WF4m1C/0zxjp+neDo7fWfE/iCHy41uWaZbW2t/wCJtrfd8y43MzN/318q175/ZHw+/wChd0z/AME3/wBrq9pc3hPQZJH0vTrbTpJFw7WmnNGxX/gMfNKOVz5ryHLNVy+7El+GvhS58GeDdO0q+vV1K/jMk11dxw+WrzSSNJJtX+Fd0jbf9mus59Kw/wDhLtK/57Sf+A8n/wATS/8ACXaV/wA9pP8AwHk/+Jr2VTlH7J4ftIye5tfhR+FYv/CX6V/z2k/8B5P/AImj/hLtK/57Sf8AgPJ/8TR7OfYOZG1+FH4Vi/8ACXaV/wA9pP8AwHk/+Jo/4S7Sv+e0n/gPJ/8AE0ezn2DmRtVQ1z/kD3//AF7yf+g1U/4S7Sv+e0n/AIDyf/E1S1bxVp1xpd7GkkzM0Miqq20nPy/7tVGE77ClJWNrRf8AkE2X/XvH/wCg1S8Wf8eVn/1/2v8A6OSrukK0elWSMu1lhjVlP+7Wf4vkEemwOVZlju7d22qzbVWZSzfL7UR+MUvhN38KPwrF/wCEu0r/AJ7Sf+A8n/xNH/CXaV/z2k/8B5P/AImp9nPsVzI2vwo/CsX/AIS7Sv8AntJ/4Dyf/E0f8JdpX/PaT/wHk/8AiaPZz7BzI2vwo/CsX/hLtK/57Sf+A8n/AMTR/wAJdpX/AD2k/wDAeT/4mj2c+wcyNr8KPwrF/wCEu0r/AJ7Sf+A8n/xNH/CXaV/z2k/8B5P/AImj2c+wcyNr8KPwrF/4S7Sv+e0n/gPJ/wDE0f8ACXaV/wA9pP8AwHk/+Jo9nPsHMja/Cj8Kxf8AhLtK/wCe0n/gPJ/8TR/wl+lf89pP/AeT/wCJo9nPsHMhNS/5GTRPpN/6CtbnauW/ta31bxFpf2XzZPKWYyMYZEVflX+8tdR3NE9LDRiWf/I2ar/162v/AKFNW3+FcvJq0GkeKL9rnzI0mtbcIyws4O1pd33V/wBqr3/CX6V/z2k/8B5P/iapwk9kTGSNr8KPwrF/4S7Sv+e0n/gPJ/8AE0f8JdpX/PaT/wAB5P8A4mp9nPsPmRtfhR+FYv8Awl2lf89pP/AeT/4mj/hLtK/57Sf+A8n/AMTR7OfYOZG1+FH4Vi/8JdpX/PaT/wAB5P8A4mj/AIS7Sv8AntJ/4Dyf/E0ezn2DmRtfhR+FYv8Awl2lf89pP/AeT/4mj/hLtK/57Sf+A8n/AMTR7OfYOZG1+FH4Vi/8JdpX/PaT/wAB5P8A4mj/AIS7Sv8AntJ/4Dyf/E0ezn2DmRtdqxvCv/IMn/6/rz/0pkpp8XaX/wA9pP8AwHk/+JpvhFhJpDuA2HurqRdysp2tcSMvX2NPlcY6k8ykyx4m/wCRZ1f/AK9Jv/QGrhPi5/x4+B/+wv8A+2N3Xe+JI2k8P6oiKWZrWRQqjr8p4rmNcXwz4w0u0tNYhkuobdlnjXypo2STYy7lK7W+6zL/AMCqKlOValKMTanUjTqxlI8u8V+DbTxhHZx3qt5VvJJuXb/rI5I2jkj/AOBK33v4WVayrj4QaDf3C3F7/aV9L5izs1zfSN5ky/dkb/aVW2/7temf8ID8OP8Anxuv+/15/wDFUn/CA/Dj/nxuv+/15/8AFV4X9l1/5j3v7Vpfynk158D/AA/da1Z3y/bIIo7ea2mto7htt1HJJ5m2T5vu7mb5f4t3+zUXirXLjwL4mgXTdPm8S+JfESrbWdk03l/u7df721t3zTM27/a+baq169/wgPw5/wCfG6/7/wB5/wDFVc8PeG/AnhXWP7V0ywaHUvKa3W6liuJpFjZgzKrPuwrFF+76L7VpHK6vNeZnLNYcv7uJrfCvw/qPhfwLpun6uYG1ZWmnuVtSxiSSSZpGVWb5mC+Zt3H722uz59KxP+Eu0r/ntJ/4Dyf/ABNL/wAJdpX/AD2k/wDAeT/4mvaVNx+yeDKpGWtzxv8Aafnjt7/wW0sixL5t18zNt/5YivIf7Stf+fq3/wC/i19Y6tfeGPEEKxanaQ6jFG25Vu7BpFVv+BLWX/Yvw+/6F3S//BN/9rr5HNOG55jX9tzcvyPNxGFjXqc3MfMX9pWv/P1b/wDfxaP7Stf+fq3/AO/i19Pf2N8Pv+hc0r/wTf8A2uj+xvh9/wBC5pX/AIJh/wDG68b/AFMn/wA/v/Jf+Ccv9nr/AJ+HySZvE3jDxxp/hLwTHZz6lNb/AGu6vrmNpoLGPdtWRtrL/db/AHtu1a+vNO8Mjwd8PfD3h4XMl8ulnT7QXMiKrSCOaJd2F6fdq5pN54W8PrIum2dvpqycyLaWDR5/3tqUa5r1lqVrBBatK8zXtqwH2eT+GaNm/h/urX12U5TDLIcsVeXVnfRowoQ5YyOsPQVi61/yGtA/6+JP/RMlbR6Cue8T3SWd9olxLv8AJjuZN7KjNt/cyf3a9uO52y2PM9fVm+J3irC8+XZ/+i2rk7r4Y6fe6xfahO11uvJGZlhkaP5ZI41mjZl+9HJ5Me5f9n/ar1nWNI8BeJL9r7VtCsNSvmVYmuLzSzJIyr91dzR1T/4Qv4YH/mVNHH/cHH/xuvGrZbVqVJVIntUczhTpxpyieV2Hwd8O6bcfaEtbqW53Qs0891JIzeSytH/3z5ar/urUHg/4O2PgW1nj0m6vln/fLZtPI0i2ccjbvLVd33flj3f3tq163/whfwv/AOhU0f8A8E4/+N0f8IX8L/8AoVNH/wDBOP8A43Wf9lVf5vwNP7Vpfynjnwqs9c8da/Y6RodpZ2XgbwrqMdvLqk2+We4azkVVjj+6u5mj+b721f8AabbX1fz6Vy+j6p4c8PadDYaZDHp9jAu2K2tLJo4k/wB1VXirv/CXaX/z2k/8B5P/AImvWo4Z0Y8sYnkV8T7aXNI2en1r408TXtvH468YK9xCrf2zcfK8i/7NfWf/AAl2lf8APeT/AMB5P/iawL6z8D6rdyXN5othdXMhzJPcaVuZv95mjry81ymeZUPY/DrfY8/EU4148vMfLn9pWv8Az9W//fxaP7Stf+fq3/7+LX09/Y3w+/6FzSv/AATf/a6P7G+H3/QuaV/4Jv8A7XXyP+pk/wDn9/5L/wAE8z+z1/z8PmH+0rX/AJ+rf/v4tbf7M/hzxP8AEnxNpfjq7a30rwdYTzzadGlu3n6izJLCr7mb/V7ZGbcF+Zvu/Ku4/Qf9i/D3/oXdL/8ABN/9rrdh8SaLbwxwxSPFEi7UjW1kVVHp92vXy3hmOBre2nLm+R00MHClLmlIntf+Rs1L/rztf/Rk9ba1zmi30WoeI9RuLcu0P2W3j3tGy/MrzZHzf7y10a19jLc9OOwtFFFSUFFFFACUUtFABRRRQAlFLRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACUtFFABSUtFABRRRQAlLRRQAlFLRQAlLRRQAlFLRQAlFLRQAUUUUAFJS0UAJRS0UAFJS0UAJRS0UAJRS0UAFJS0UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH//Z" /><br /> +<br /> +23. November 2021</p> +<p>This User Manual consists of 3 Parts:</p> +<ul> +<li><dl> +<dt><a href="#user-interface-overview">User Interface Overview</a>:</dt> +<dd>Gives a short overview of the UI. +</dd> +</dl></li> +<li><dl> +<dt><a href="#create-a-new-job">Create a new Job</a>:</dt> +<dd>Describes how to create new job for the +<ul> +<li>General Case</li> +<li>Special Case I</li> +<li>Special Case II</li> +</ul> +</dd> +</dl></li> +<li><dl> +<dt><a href="#create-a-step-input-file">Create a Step Input File</a>:</dt> +<dd>Describes how to create a new step input file. +</dd> +</dl></li> +<li><dl> +<dt><a href="#airdrag">Airdrag</a>:</dt> +<dd>Describes how to load an airdrag component. +</dd> +</dl></li> +</ul> +</div> +<div id="user-interface-overview" class="section level1"> +<h1>User Interface Overview</h1> +<p><img src="data:image/png;base64,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" style="width:70.0%" /><br /> +<br /> +</p> +<p>The main UI consists of three tabs, which are descriped in the following chapters</p> +<ul> +<li><p><strong><a href="#jobs">Jobs</a></strong><br /> +Add, simulate and edit jobs and input files.</p></li> +<li><p><strong><a href="#settings">Settings</a></strong><br /> +Simulation and GUI Settings.</p></li> +<li><p><strong>About</strong><br /> +About VECTO.</p></li> +</ul> +<div id="jobs" class="section level2"> +<h2>Jobs</h2> +<p>The Jobs tab shows an overview of currently loaded jobs and allows the loading, editing and simulation of jobs. Note: Also jobs that cannot be edited with the GUI (i.e Primary Input Files), can be loaded and simulated.</p> +<p><img src="data:image/png;base64,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vI71n9IMpzPtkchCVBmyI6KQnJCPRnGcY72AiIiIiIiITiaO5x7e8do+J3M7f+0Fgy5tL+o6m2Aesn+2nej40MHiuMRJQkSe/SaqPH59I1j7atGV6wvvuHyElaiP08Ap2Y1CUxKE9GAPOPkUoLB1QDmjiJv41GRqL0d9/HZ4hGcgrKjv8JdYIyIiIiIiIiKagq+9YGAdsWLIar+YCNHxI2+iWo7UnXsRE5yNwoHJbqJKX4shHYbVdahp6UZ9t4mD2UdFbjUzBlorUZsei5TEeMQlJiI+Lg7B7t4IDo5HUqManeaJl0WjU8nwYC80zSWoaulBs7x2GRERERERERHRMfraCwZEJ4YeQ8YGFIfFITulHDUGwMiRaTplyMZsQG9NFvICd8F3twfcPNzh6bUbbm4JiMtuRreY4qBbTxARERERERERER0GCwZ0ipI3erZiyGiCxTwEeS9e1gvo1GLDyLAFFoMeBr0e+n0xwWSxyjtGEBERERERERERTQsLBkRERERERERERERExIIBERERERERERERERGxYEBERERERERERERERAILBkRERERERERERERExIIBERERERERERERERGxYEBERERERERERERERAILBkRERERERERERERExIIBERERERERERERERGxYEBERERERERERERERAILBkRERERERERERERExIIBERERERERERERERFNsWBw6aWXYv369coLRkZGYDabGYZhGIZhGIZhGIZhGIZhGIY5BSLH/SVZB5hSweCrr76CyWSCwWCAVqtlGIZhGIZhGIZhGIZhGIZhGOYUiBz3l+P/X3755dQLBrLSIF84MDDAMAzDMAzDMAzDMAzDMAzDMMwpEDnuL8f/p10wMBqNk86QYRiGYRiGYRiGYRiGYRiGYZj/vchxfxYMGIZhGIZhGIZhGIZhGIZhGOZbHhYMGIZhGIZhGIZhGIZhGIZhGIY5CQUD3SD0JjNMliEMDR0Ys1EPw6CcxgCDSSyIxQiDbgC6AR0GBuXNFUTENLrJ5nuyo9MfYj0s9vXQaSd/nRIddHqxjmYTDPpBDCqPia9GE4xyW+p10B/29QzDMAzDMAzDMAzDMAzDMAxzYsMzDBiGYRiGYRiGYRiGYRiGYRiGOZEFAx0M5j70duYj1WkJ1sx+DM888Tgee+xxPPLwg+Lro1jsnAT/4n5oa4MRuGojlrziipC6TrQY69BXGogtX/phq3sWanQDUBvGPpl/sjMIg7Ebva1ZSNj8DlbNegxPK+vxmFiPR/HYo89jqUsCgquH0avRwSjPmBj32oEBrdhWTajJCIfv8i/gH1OMnB49BrQVyNr1CVzeWYAtcc1IaxmCUT8I0/AozEPDsBgGMKjTQnvAsjAMwzAMwzAMwzAMwzAMwzDMickJKhjoRAZhsnajqzkani9cg+cv/TMuuOF2XH/r7bjt5htx2223Yta6GOzOV0Nb7QPvpavwxiOb4VvbBdVgHrqSV+H5h5bjpUWByNfp0GM2QD/pe53IyPXQw2xpRVddMFyeuQ5PXfxXXPzv23GDsh634rZb78PcDVHwqbCip18Hk3786/UiGljM5cj1XY/lN9+Plc5xCG43QaspQfrWd7Dh9ZexJqIJSS0j0Gt70FGZjZqKUlS269DdP4hB3fj5MQzDMAzDMAzDMAzDMAzDMMyJyYktGAx3oqs5AZ4vPYaV8z7GupxeFKn6oO7uQGdnJ7p7+9GnEdNr1FD39KK7S3zVGWHpzkJH2lrMfOZzzF4aikKdDr2mr6tgINbDrEJXfRRcXnwBK+Z/BqeCHpS0yvXo3Lceao2cduLr5RkGGrG9KlEQtBWf3/MU1uyMR2irFWqtBoPqHvR2d6NXrYXObEJfeyXilt+HDcsWYWWyASXtJuVMg4PnyzAMwzAMwzAMwzAMwzAMwzDHNyehYJAIjxefxOeLv8COOkBlAmAbgdVqxZBJr1yGZ8BgxQhs4olR8ZgFI52ZSsFg1jOr8ebSMEfBQA+9To9BkxXDVjmtmI38Z2QYoxaDeE4HrXayZTmWjBUMWpSCwfYXX8GqJZuwuxloN8sFsCrrYTEZYByUNy3WQjtoVJZxZNS+jHJdgXpUhjth9b2yYBCH0NYRqLVGsc72dRg168Waj0Crbkbi+zdi3dI5WJYB1GnFkyMG+6WYjvu6MQzDMAzDMAzDMAzDMAzDMMz+nKSCwRNYtegzbCu3oE4zBKsc/NfrMTgo70vQD526FaqmFtTUtqNLY4ClJxudEwoGfUMW6DV90LRVoa6yGPn5BSgsyEd+eR1Km3uh1mhhOOD+AccjBxYMXF58GZ++vRbuNWY0aocwrKyHvGyQDjqRAd0g9P1d6G+rQXmpXMZCFBYVoKI5G9Fem/HFfU/hq10JCG0bRr+2F32qJjTXNqC1V4PuvnY0FkbAc96NeG/2C5jvWYqQnBY0tnahVzsArZz/pMvIMAzDMAzDMAzDMAzDMAzDMMeek3aGwerxZxjAipGRIVgsQzD3N8FU7YHtqzbitTd9kNDYC60uH11pa/G6UjCwX5KoX7xK31qGRs8X8NYTV+Ov5/0DF/zj//C3B97Cf9bmoaKlV8xW3jNgsuU52hxYMBg7w2CPPMPAIhbIJtbDKtbDOAi93gCdUXxfH40az1l44DaxjOf+FRddfgUuf+szPLnwM6y7/yls8UpGeIcBWk0hkjatwobZS+FZ0IrQ4K3wePVvuO3SP+OcP5+L8y+4FOfd+QFeXpeM4n4N+s2OMw0YhmEYhmEYhmEYhmEYhmEY5gTkBBcMutDVEg/vmXdj4f134fFFK7H440/wybJPsXz5NuxOrEVJqwqG0k1Ys+hj3PngdoTVdKNfX7i/YPBhJAp1A+hoSEVRpBM2bfkCK1etxCefrMSnKz/F3LfmYebiRfBIqkVZhxU6Me3xu1HwWMGgFV31Edj1ygOYd999eGbxJ3jn4xVYsfxzLF+5E3uTq1HWrYWmNRfZzh9j9VP346FXFuDJee/jvfeW4MPPluCNV1/Dw9c9hQ92pCGmS48BTRbCPl6ID+9/BRtSmxCRnYSkLTOx4L6LcOet/8adryzFa5/4wiWiFA0aMW/DIHSTLiPDMAzDMAzDMAzDMAzDMAzDHHtOcMGgB90tcfB982a8eNlZ+Ov5/8B55/8fzvvrxfj7+Q/g9U0pCG/ogq7MGZs/+AwPP+2GqLoeaAYL9hUM5i6LReGAFjUhC+G+7FHc+mkidqY0wzCgQb9Wj8I978Dt9b/i9W1pcModhX5w4DhemmisYNCO7vpweM68Gc9cfBb+pqzHeTjvvMtx/oXPYJ5zJmIb26HO+RJfvfoibr12ETYmtaF8SN6fYBDIW4vd7zyG8/75FGZtSUN8tywY5CLqs3ex8ok3sTm5GfkGYFDdiORld2DjxwvxSboN1X2jwJC8bNNky8YwDMMwDMMwDMMwDMMwDMMwxy8n/gyD5gR4vfIwPnplLj7wz0ZIcjZyMjORkV6AssY+dHY3wVTuhPXvH6JgsDxeKRjke8/CV0/9Af93yVW44Mp/49ZbbsEtt9yKa/71R1z2rz/jqsX++CKxF4ZBHUx6+f6TLdd0M1YwUKGrPhKuLz2ND15dhJVBWQhLkeuRhfTMYlSoNOhQVUMT8S7Wie3zzNpM5DX2wzA0AqNBhxFtFjI9P8ei/zyFT1yTEdWph1YpGLy3r2CQNwgMdNcg4aPbse6D+ViePITyriGMmHQ8s4BhGIZhGIZhGIZhGIZhGIY54TnBBYOxexg8hdXvfImdjUD7kLyHgU1kBMPDVgz118Nc4YS1hygYzHMUDNJ2Poe1z52L/zz6Gh54+nW89vKLeOklmZfx+sL38b5HOsJKupUbEOsHj3fBQN7DIBrbX3gVn7+7BXtbgS7r2HpYMTI6isGmfDS5vojPtzlhVlg3Wrq1gEmPAZ0W5tEmlEXtxJYHn8J6tySEd0xSMNABmo4KxH5wO758fy4+TjCguN2MIcNky8UwDMMwDMMwDMMwDMMwDMMwxzcnpWDg+eIT+OytldhSYkB1n3hDvWM6vRmGvgalYLDuSAUDlyew/Z07Md+/B3H1NoxYDGIZDDAY7JFFguN374KxjC8YRMHlxZfw6aIvsavSgDq1ESbHpY/0Fgt66rOQv/5hfPTZ53htdz2q2/sxbDZCN6CBxVSO/MAt+Oyep/DFziREsGDAMAzDMAzDMAzDMAzDMAzDfMPyjS8YzF0WpxQMKvxfx7b5d+DSWeHYkqmF8gH/8YbEfAe145bheOTQZxh0T1iAoZ4KdMYswcezluDuJ/citk0HnXxixAJU70TIJy/h6kuewrytqYhTbno8WcGgHJFLbsaXSxfisxygcUC+3gC9XBbtxGVjGIZhGIZhGIZhGIZhGIZhmOOXE1swsMqCQTzcnnkYn8xdho3FBlT1TiwY1MNcvgVr3lmB+x5zRURtNzSD+ehM+QKvPP4pZr0fiQLdANpLvRGydg5uv+cVvL58HVwjwxEQHIQg/zCEhacit64LLf0G5Xr/x++a//b1MMt7GNSFY/tzD2HRk6/i7R2h2CnfNzgQQUEhiMquQVF9M3T1IfD+4H28fOssLHX1hHNMDEIC/RG563189NrjuOJfj2LulhTEKAWDbESseBvLHpqJDUnNyB4ABrpqkP/VI/jqrafw3Bdh2BRYgKyyFnRotdAO8l4GDMMwDMMwDMMwDMMwDMMwzInLSTjDIAHuzz+KlfNXYPOhzjAo34qvlqzEA0/sRGStPMMgH12pX+K1p1bh9fdCUajTQQOgvTgGoYv/jsevPwO//9Nf8Je/nIs/nHkhLrjsebzrX46kzhHlskT643ZporEzDNrRVR8K91dvwJP//B3OOfevOOcvf8G555yDv5x7Pq6fvQkfRnegS6NBT+pm+C66Ctdcch7OOPNs/PX8f+D8mUtx36wP8emdj2O9e7LjHgY5iFz5DlY8+jo2Jjchsx8wqNthTFgBp9nX4Q9/Pg+/vX4RnlqdgMJ+DdRmAwYnXUaGYRiGYRiGYRiGYRiGYRiGOfacoIKBjA6DBjX6extRHheFnJRsFLYPokszuH9AX6eHTtMNfUcx8tNzEBFdirrufmh1rVA35yMhJheJ6TVok9MO2TDQo4Iq0x2R3luxdasTnJ2dsHXLTri6hSKhvB31annPgON5hoGMWA+9WI/uWpQn+CPS0xk7tjuL93aG07ZtcHZygWdUDpJr+qHWGaFvL0Z9hjf2uLlgy6YtcHbZAZeYDAQn5KAoIhrF5U2oVeswoFWhLicd2VGJKGzqQYvWjEFtP4yqfJQk+cHVZTu2eMUhOL0OKq0WGv0gzzBgGIZhGIZhGIZhGIZhGIZhTlhOYMFARKuDTmeAcdgK85BZuUmw/JS8dt808p4DOmgHTTBbzLAOm2BQigmD0OnNGBoWsTg+Wa/VQjdogMFig3VU3hzABpvNZv86OgyLURYijvc9DOzR7luPEQyLt1TeV0R5d/F1dMgEi8FxySC9CUbLKEZH5bP2523DFliHLDBbh2Ey6h3rKL6aLbBYh2DS66B3bAt51oVpaESZv5gxrGNnFvAeBgzDMAzDMAzDMAzDMAzDMMwJzIktGIxFJwfcD3cNfsfzB1xKaLLHRMbmNTHjpzlRmex9x7JvOt0Upxs3v/GP7VvvsYx/jmEYhmEYhmEYhmEYhmEYhmFOTE5OwYBhGIZhGIZhGIZhGIZhGIZhmG90jrpgYDAYJp0hwzAMwzAMwzAMwzAMwzAMwzD/e5Hj/tMuGJhMJuWFWq2WYRiGYRiGYRiGYRiGYRiGYZhTIHLcX47/T7lgsH79euVGvlarVXkhwzAMwzAMwzAMwzAMwzAMwzD/+5Hj/nL8f926dUcuGMgJNm/eDCIiIiIiIiIiIiIiOjVt2rQJF198MQsGRERERERERERERETfZiwYEBERERERERERERERCwZERERERERERERERMSCARERERERERERERERCSwYEBERERERERERERERCwZERERERERERERERMSCARERERERERERERERCSwYEBERERERERERERERCwZERERERERERERERMSCARERERERERERERERCSwYEBERERERERERERERCwZERERERERERERERDTFgsHFl1wC523bHC8hIiIiIiIiIiIiIqJTzZTPMNi4aaPjJcDwyAjDMAzDMAzzP5CR0VHHb3BEREREREREhzelgsF1V12Fu2a/hse9tuMul/W4besa/GfblwzDHCayn9zpvBaPuW3Fkx5OeHTXFvzX6Sv2H4aZahx95UHXTUofesJ9G+512cA+xDBTiOwnt4uvd2z7CutSYh2/9hEREREREREd3pQKBjdfex3++NDdmLH4NVyydrnyh+jNm1czDHOYyH5y6ZfL8N23XsGMOc/iR4tn4Zr1K8XjayadnmGYA3Pr1i+Ur7/7YJ7oQ89hxvwX8beV7yqFhJu3TP4ahmHskQWDGzZ+hhnzXsADrvvPEiUiIiIiIiI6nCkVDG665lqc/eBd+NOnS5CpalReaLFaGYY5TKSMpnr8afnbmDH7aVz25TLU9/Uoj082PcMwB0YaGrHi+d07MGPuc/jR4pnYkp6oPG4dHZ30NQzD2COpDXpcte4T3L+DBQMiIiIiIiKamikXDM568C78+bN3UdHT6XgpER1JeWc7zlmxGDPeeApXrF2BPoPe8QwRTdWrPm7KGQY/fHsmduWmOx4loiOx2Wy4bsNnuG/HBscjRERERERERIc3rTMMzvn0XeS3tzheSkRHkqdqwjkr3saMN57G5V8th0qjdjxDRFP14h7XfWcYOGcmOx4loiMZtJiVS+HxDAMiIiIiIiKaKhYMiE4gFgyIjh0LBkRHhwUDIiIiIiIimi4WDIhOIBYMiI4dCwZER4cFAyIiIiIiIpouFgyITiAWDIiOHQsGREeHBQMiIiIiIiKaLhYMiE4gFgyIjh0LBkRHhwUDIiIiIiIimi4WDIhOIBYMiI4dCwZER4cFAyIiIiIiIpouFgyITiAWDIiOHQsGREeHBQMiIiIiIiKaLhYMiE4gFgyIjh0LBkRHhwUDIiIiIiIimi4WDIhOIBYMiI4dCwZER4cFAyIiIiIiIpouFgyITiAWDIiOHQsGREeHBQMiIiIiIiKaLhYMiE4gFgyIjh0LBkRHhwUDIiIiIiIimi4WDIhOIBYMiI4dCwZER4cF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" style="width:100.0%" /><br /> +<br /> +</p> +<div id="simulation-and-job-commands" class="section level3"> +<h3>Simulation and Job Commands</h3> +<div id="simulation" class="section level4"> +<h4>Simulation:</h4> +<p>Starts the simulation of all jobs that are marked for simulation. To mark a job for simulation, tick the checkbox in the left column of the job list. (see <a href="#start-simulation">Start Simulation</a>)</p> +</div> +<div id="stop" class="section level4"> +<h4>Stop:</h4> +<p>Stops the current simulation, this operation can take some time and lead to error messages in the message view.</p> +</div> +<div id="up" class="section level4"> +<h4>Up:</h4> +<p>Moves the currently selected job up</p> +</div> +<div id="down" class="section level4"> +<h4>Down:</h4> +<p>Moves the currently selected job down</p> +</div> +</div> +<div id="joblist" class="section level3"> +<h3>Joblist</h3> +<p>The joblist shows the name, type and file location of all currently loaded jobs and input files.</p> +<div id="adding-jobs" class="section level4"> +<h4>Adding Jobs</h4> +<p>New jobs from existing files can be added to this list with the buttons in the <a href="#file-section">File Section</a>, Drag & Drop or using <strong>File -> Load File</strong>. New Jobs can be created using <strong>File -> New File</strong> (explained in more detail in the <a href="#create-a-new-job">Create a new Job</a> section).</p> +</div> +<div id="edit-jobs" class="section level4"> +<h4>Edit Jobs</h4> +<p>A job can be edited by double clicking or using the <strong>Edit Job</strong> button in the <a href="#file-section">File Section</a>. It is also possible to show the source file of the currently selected job in the explorer or in the default editor using <strong>Edit -> Source File -> Show in Explorer</strong> or <strong>Edit -> Source File -> Open in Editor</strong>.</p> +</div> +<div id="start-simulation" class="section level4"> +<h4>Start Simulation</h4> +<p>By ticking the checkbox in the first column, a job is marked for simulation. When a job is simulated the jobfile is loaded again from the disk, therefore only saved changes are considered in the simulation.</p> +<p>If no simulation is possible, a small icon is displayed instead of the checkbox (as shown in the picture below). There are many reasons why a job cannot be simulated, clicking the icon shows additional information.</p> +<p><img src="data:image/png;base64,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BgLt27fXqpUrlZ+bq9zsbGVmZBARERERERERERERUSkvLydHys+Xq4uLKlepIgcPDw8d3L9fKQkJSo6PV2JsLBERERERERERERERlfLSkpKUmZKiUc7OMs8n7FC/fn1NnTJFGcaFaYmJSoqLIyIiIiIiIiIiIiKiUp5lIJCaqtG2gcAzzz6rEU5OykpLU3pycrHvREREREREREREREREpav0ogOBqlWrWv7DvNCcFhT3TkREREREREREREREVLpiIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA5iIEBEREREREREREREVA66ZCBQ2fh/o6wDAfONxb0TERERERERERERERGVri4ZCDz33HMaOXy4ssyBQHJyse9ERERERERERERERESlq0sGAu3atdOyJUssw4DUxMRi34mIiIiIiIiIiIiIiEpXlwwE5syZo4MHDliGASkJCcW+ExERERERERERERERla4uGQg0aNBAU93dlZGSwkmFiYiIiIiIiIiIiIjKSJcMBJ559lmNcHJSVloa5xAgIiIiIiIiIiIiIiojXTIQqFq1quU/zAt5hQARERERERERERERUdmIgQARERERERERERERUTnokoHACy+8IOcRI5RlXGi+sbh3IiIiIiIiIiIiIiKi0tUlA4FKlSpp1MiRlgsZCBARERERERERERERlY0uGQj0HzBA69eutRwuKDUxsdh3IiIiIiIiIiIiIiKi0tUlA4EpU6Zoz+7dlmFASkJCse9ERERERERERERERESlq0sGAjVr1tT4sWMtF3JSYSIiIiIiIiIiIiKistElA4HnnntOI4YPLzipcHJyse9ERERERERERERERESlq0sGAlWrVrX8B68QICIiIiIiIiIiIiIqOzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBzEQICIiIiIiIiIiIiIqBxU7EHAZPVp5WVnKTk+3bEBERERERERERERERKU7c83fXPs3ZwCFA4GxLi5Sbq7lDea0gIiIiIiIiIiIiIiISnfmmr+59u86ZowqmwOBV199VT/+8IPlgjGjR2uUszMREREREREREREREZXyzDV/c+3fnAGYswCHmjVrWv7FfKUAERERERERERERERGVrcwZQM2aNfV/LmhNFJClRvUAAAAASUVORK5CYII=" style="width:70.0%" /><br /> +<br /> +</p> +</div> +</div> +<div id="file-section" class="section level3"> +<h3>File Section</h3> +<ul> +<li><strong>Load File</strong>: Load a new job from a .xml or .vecto file.</li> +<li><strong>Edit</strong>: Edit the selected job.</li> +<li><strong>Remove</strong>: Remove the selected job from the list.</li> +</ul> +</div> +<div id="messages" class="section level3"> +<h3>Messages</h3> +<p><img src="data:image/png;base64,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" style="width:100.0%" /><br /> +<br /> +</p> +<p>The message section display status messages from the simulation. Warnings are displayed in yellow, and errors in red. When a simulation is completed the result files can be displayed in an editor or in explorer.</p> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9cAAADBCAYAAADFEEMyAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAFCsSURBVHhe7d0PeBXlnTf8b+yu28YK+G+flFJyiK1ADMS1FgOokLxd9DGI0IIloW3wsUhAobtvWRP2hc1mk3cJ1vXpxj+BKhdJVzArsSAF38K64c8qiVV8yJ+GQJfkQG1K16IBW+zjrs9573vmnpl75szJmZOThES/n+uaKzlnzszcc98zc+Y3v3vmpPT29kZARERERERERP12mfpLRERERERERP2U8sorrzBzTURERERERJQEZq6JiIiIiIiIkpQSEdT/RERERERERNQPzFwTERERERERJYnBNREREREREVGSGFwTERERERERJYnBNREREREREVGSGFwTERERERERJYnBNREREREREVGSGFwTERERERERJYnBNREREREREVGSGFwTERERERERJYnBNREREREREVGSYgTXPdi55BqkzH8e76h3dC0bJ8YcR0RERERENLR+gaenpyAlxTtMx9O/AP7loRRMl/8QDaI+Mtc3IOc3L+MVbwTdsxOP7roaOVeq10RERERERJfUl7CyKYJIRAz7VwIr95v/R5qw8kvAnz8VQZP8h2gQ9dkt/Is3n0P1k6/jd+q11PN6Ay5b8C1kqNdEREREREREn3R9BtcZcxYjY//L+LkdXbfgn0p/j7v/7H28+b56S2rZiIlW14vJZXjd+LzqWq7en/+8mQI3upSr9yaXmYG7/p4zvdSCjRPV+ynz8ejTSzBdTRNr/kRERERERDrZLfyhf5H/ye7j0/H0vzyN6UYc4XQbN+OKh2B8THHeZ7dyiq/vB5qlfQ2PzK/Hhp+owLXlpzi0eC3u+VPzpUEG1mXj8arR7SKCX/39v+Mvvi8C4JZ/Qunvn8R/qPd3FVynupQvRvP75nvHy2/FZ8UssktOqG4bERxbai1PBs95qF3cjPeNceWI/ON29BoLleO+jmOrT6vpjmH63y4D42siIiIiIupbMx76G+BHMo7YfzMeuiEFu+abscj+lU/jb1QQLQNr6/1I5CS+9U/fNgJxolj6Dq6F7Lv+B47/8yt4Rwa0j+7CV+6+0QiILT1drfjtS4X4U3VF5/Nf247mli58cN0NuOXfCnGH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" style="width:100.0%" /><br /> +<br /> +</p> +<p>The progress bar on top shows the total simulation progress. The status bar shows the progress and duration of the total simulation and the progress of the individual simulation runs.</p> +<p>When running a chained simulation (Special Case I, Special Case II), it’s possible that another simulation is started automatically after the first step has completed, therefore the progress is not one hundred percent accurate.</p> +</div> +</div> +<div id="settings" class="section level2"> +<h2>Settings</h2> +<p><img src="data:image/png;base64,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ggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAAABRAEAAAAAAAgAIIAgAAAAAAUABBAAAAAAAACiAIAAAAAABAAQQBAAAAAAAogCAAAAAAAAAFEAQAAAAAAKAAggAAAAAA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" style="width:100.0%" /><br /> +<br /> +</p> +<div id="default-directories" class="section level3"> +<h3>1 Default directories</h3> +<div id="default-input-path" class="section level4"> +<h4>Default input path</h4> +<p>Specifies the initial directory for loading and saving files. Note: After loading or saving a file, the filedialog uses the last used directory as initial directory.</p> +</div> +<div id="default-output-path" class="section level4"> +<h4>Default output path</h4> +<p>Specifies the output directory for simulation results.</p> +</div> +</div> +<div id="simulation-settings" class="section level3"> +<h3>2 Simulation settings</h3> +<p>Various simulation settings can be found here.</p> +<div id="serialize-vecto-run-data" class="section level4"> +<h4>Serialize Vecto Run Data</h4> +<p>???</p> +</div> +<div id="modalresults1hz" class="section level4"> +<h4>ModalResults1Hz</h4> +<p>If selected, the modal results (.vmod file) will be converted into 1Hz after the simulation. This may add certain artefacts in the resulting modal results file.</p> +</div> +<div id="validate" class="section level4"> +<h4>Validate</h4> +<p>Enables or disables internal checks if the model parameters are within a reasonable range. When simulating a new vehicle model it is good to have this option enabled. If the model parameters are from certified components or the model data has been modified slightly this check may be disabled. The VECTO simulation will abort anyways if there is an error in the model parameters. Enabling this option increases the simulation time by a few seconds.</p> +</div> +<div id="actual-modal-data" class="section level4"> +<h4>Actual Modal Data</h4> +<p>????</p> +</div> +<div id="write-modal-results" class="section level4"> +<h4>Write Modal Results</h4> +<p>Toggle output of modal results (.vmod files) in declaration mode. A Summary file (.vsum) is always created.</p> +</div> +</div> +</div> +</div> +<div id="create-a-new-job" class="section level1"> +<h1>Create a new Job</h1> +<p>New jobs can be created via the file menu.</p> +<p><img src="data:image/png;base64,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" style="width:70.0%" /><br /> +<br /> +Three different types of jobs can be created with the multistep tool:</p> +<ul> +<li><strong><a href="#new-interimcompleted-job---general-case">Interim/Completed Job</a></strong></li> +<li><strong><a href="#new-primary-job-with-interim-input---special-case-i">Primary Job with Interim Input</a></strong></li> +<li><strong><a href="#new-complete-job---special-case-ii">Complete Job</a></strong></li> +</ul> +<p>They are described in more detail in the following chapters.</p> +<div id="new-interimcompleted-job---general-case" class="section level2"> +<h2>New Interim/Completed Job - General Case</h2> +<p>The general case is applicable to interim manufacturing steps and completed manufacturing steps. Required inputs in these steps are the VIF from the previous step and the input parameters of the current step. The latter can be entered via the graphical user interface.</p> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAhEAAAEiCAYAAABHmICMAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAP+lSURBVHhe7J0HfBTZkf995wu+O6fz2evz+W+f8zmuN9m76805wu6SliXnnHPOOeecc845iCwJSUgCJIGEhEAgQELkDLuuf31rpsUwO4IZSSCxdOlTn251eN1T9are79Wr9/prLrnkkksuueSSSy659CjQPwTgfwyB/e91KXTylyEcSNZ5sf+9LoVG/vKDA8k5L/a/16XQyV+GcCBZ58X+97rkkkv3mXwNztcYvx4i+97rW6ZL9yZfefnKMZCc78a+9/qW6dLdyVdWvjIMJOO7se+9vmW6dG/ylZevHAPJ+W7se69vmS655NJ9IF+j/fqKb77y/fnffPEH8Iz/eP6xUJn7tJx/oixvma4B35tcHRQtufIvenJ14JJLDyHdYbjK/5z2w7d7HPvv96QgTBmU5S3TNeC7k6uDoiVX/kVPrg5ccukhpTsMV/kbKT98qxcGmPnTEiGzY7yUQVneMn0N2KUvk6uDoiVX/kVPrg5ccukhJIwJzjVc5W8mPvZGXwzwwnsNRDoMCom5h3spQ8v6D+V/9ZbtGnBgcnVQtOTKv+jJ1YFLLj2khCFhUIwb/osyxvbd+MdeH2DG+64ab/uBITH3cC9lUJbyvytjwDzDNd4vk6uDoiVX/kVPrg5ccukhJcd4HfT/beXvx/zgtcG5xttOjTIEdoyXMihL+VvK/6bs9AJc472TXB0ULbnyL3pydeCSSw8hYUSO8YL+Qer/qfzfu3/w6lCP8dZXgxwQEnMP90b+4JVhlKVML4CeBc9wjfdOcnVQtOTKv+jJ1YFLLj2k5BguBkWYDwP7L+Ufh//gleG5xttWjTIEdox31/dfHkFZyt9T/qYyz+BZPNMlD7k6KFpy5V/05OrAJZceUvI1XktkUmZe9U93fv/lkWa876jxtu4fEnMP927//sujKEvZCSVivO545J3k6qBoyZV/0ZOrA5dcekjJ33gxMIz3f7d9/6XRZrxv1RNp2S8k5h7upQzKUsZ4GePkGa7x3kmuDoqWXPkXPbk6cMmlh5QCGe9jyj+7w3hb9A2J/Yz3Z8o4BNd4A5Org6IlV/5FT64OXHLpIaV7G++bdUWa9QmJucfHeH+u7Bpv3uTqoGjJlX/Rk6sDl1x6SMnfeDGwHyr/PNd436gj0qRXSMw9fsaLQ3CNNzC5OihacuVf9OTqwCWXHlK6t/G+rsbbqGdIzD3cu/X7L42hLGXXePMmVwdFS678i55cHbjk0kNK9zbe12qLNOgREnOPa7xBk6uDoiVX/kVPrg5ccukhpXsb76u1ROp2C4m5xzXeoMnVQdGSK/+iJ1cHLrn0kNK9jfflmiK1uoTE3OMab9Dk6qBo6ZGS/9+/9rVmyjvla18TWPcvKK9VLu29JJc45r2G69/0bp17xnsvKwxybcAllx5SurfxvlRDpEankJh7XOMNmlwdFC09EvLXRv8nDgjwAoEM/mfrc2ye93Ij/d8BEQnKAAfY7lEe5L2sMMi1AZdcekjJMV4Mig/TfNl4X1TjrdoxJOaeAMb7HeWicqClleltXfBxmDjDZt5L7iDOea/hvkHKdp9uE3T7pveywqJHRQc0YsgSGfo2ZPOUn/Jelktc672Ge2ooW2PHVjmg3vJJj4r813rlBxC4I+qg/3fx0UkX72GOG4jwkftPvKdMn97dwqBHQgcuufRVpHsb79+qi1RqHxJzT5DGe98NWJ3deB9H6PSkfBsyell3OESu8Z5ztlzDfdxfmM4T+srrQGVIKNy3x5srT59jdwAD/d8BEY4OnJ7zlxrBAtJXXv4qr6d85BxQdnrckfcF7yGO+YKIXHBxH+grrwOXXPqqkWM4GBEhRD6Ny5fzMDC+dvcLDM+M97mqIp+1CYm5x8d4f6GMQ+ALejgI5wt6vgZ8X4wYx5eXE8RBKjsRhrXew0b6v2/Y17dnVti9r0dBB0QgnCgC4CE36uA9N8+RtXJulEePW6PmvS9XP9zj3S0oPRLyhxxZ6jbDe+hLhFx95G1Ag63/sUKmR0YHLrn0VSJ/wwWRY1B8OQ8D+5HyL8O+/+JYM95n1XjLtg6JuYd7KYOylHEIfNoXB+F8/Oa+GzBO0+sAA47f+jpJZd8GzOn95vbKCpkeJR00c2SpHBAA+MjbFyzkggjl+zGE9EjIH1JZGlDzlW8g0vMWoUP23v9z7cMuKFx6pHTgkktfBco12vBvv/29Fd985fvzv/niD2b8x/OPjfr3v/x3x2/84Sf1//XXvyjzLz/9/dv//KOnc433mcoin7QIibmHeyO+/8qsN//pv5/59F/+93e1//VXv+QZQ/79qR/xTJ7NO+j7+BtxoZCvA9T9L425O+TvOCHddxq1nd5DhUWPlA4gH1nekbTnS3quhqMr7yGO5YII76HCoEdO/pCPDu6aDOl/nW7vB4h4JHXgkksPO+UarjLG8k9HfvjuNgzsXnzh6UoiJZqGxNwTqCx/PvrDd+MDGHChkDrA3B6w91BA0vOWM6HbXMDAvvfYXZ1uiPTI6QBSGTrRoDzH1PVcoFC6E4IvLCD3SMofUhkWl0jEI6sDl1x62MkxXjNcZcKG/5b+w3e3O4aU+eMPAvKFJyuKvN84JL6kPYBAZfka7pEfvrOXnof3XXgnx3gLxYBxhF6HeNdGKNB17HuP3Q8Q8cjoAEKOXlnedUzd/zpk7/2/sEHEIyV/yEeW+c6JsIsKTo+sDlxy6WEnDALjwHjNcJW/qfzd1B++s8sx3psv1RJ5q8F94Vuv1JETPy1hhnv4sXf2t/zG7/i+P++QV5JTgUgdYHGMRDxSOoBUhsUpEvHIyR9SGRZ4dob3UEHpkdWBSy497OQYL0ibhCInA5oQ3v8k//DtiFwDfr6GyGv1CpVvvVhLTvzEY7ipj72dWPFffvZ/3mfzDv5JToVivL4OUPfzmxNxP0DEI6MDyEeW+cqJ4H7voYLSIyl/h1SOwa4T4WsH9wtEPJI6cMmlh5UcY8B4mULFHGmQN1nKTHn6qfKvkh57K8oM+H/UgP9aTeSl2oXCt56rkWu4KY+9deCdf/4RDTpZ+jybd+BdnHnbhd2AFXR2RmGBiEdZBwWancE576GC0CMrf4eQvSNnr1yddTfMRrzHAq5YCXsPFYQeeR245NLDSo4xYBi+xvtfykyjYhGW3yr/ef9jb+7JNeCnKouo4RWEbz1TVU78vw/NcA889lbKC//0gxe9z/qZMs/+nvJ9M151gsGuE3FHQ8X/3uOFDSIeRR0EvU6E7uf2kHX/foCIR07+/qTyDPnbGbD3UEHI1YFLLj3EhDH4hhGZi+30ABgTJKz3Z+Vn9z72RpzHgN+Xm49XFHm6ar741hOV5MSPPYab9Nibh575+vfo6fMMnsUznTnbvIsTRuQdC9V41REWZMXK+zmc8cjoQGVZoBUrvYcKSo+s/IsRuTpwyaWHlHyNl+Qhxv9Y0IVlYAkj/kbZjFf5lbgfvLHXDPhHasB/KC/y50oh8a0/VlDD9WRBJz72Zuqfv/7dD7xl8wyexTN5Nu/gjEWC/h3jLVTShii/3864XyDiUdQBUYf8fDvjfoCIR07+xYRcHbjk0kNKGASMgTihxG8pE8YjnEdY73fKOPO/Kb92hwH/X1mR36sRB8G3fltOTvyPx3ATfvBm2uNf/24Jb5lPKvMMwpb+IUTeCcP9qjtQVwdFR678i55cHbjk0kNMGAXGgQHTC2BKEx+6ITv5x8osC/tH5WeUGTN8I/YHr+/LNeBflhb5tRrxXfjWL8vcYbh//Pp3PvaWRZmUzTN4Fs/k2bwDhss7PQqG6+qgaMmVf9GTqwOXXHpICcNwDJhwIqE7QnhMb/qB8v9T/pUyRvYX5ZeU38w14P9WA/7pxyL/Wyog3/rpJ3JCjdwx3D99/bsfecugrD8pUzbP4Fn+U6ocw/2qG6+rg6IlV/5FT64OXHLpISZ/A6YnQEKRvwFjbAEM+D25+T8lRP6n5B18S4+dUON2DNeL/P0Nl+RF13BdHRQ1ufIvenJ14JJLDzE5xkvoDuPBiDAmkoswLozs18p5G/APPhD5vodvKZ/4oWcJ2TwMl7IokwQmDNc3C5p3eBQN19VB0ZIr/6InVwcuufQQk68BMxaIMTk9AYzs7gasxnrzP9+RW999516G64v8cQ6+hsvzH2XDdXVQtOTKv+jJ1YFLLj3E5BgOBowxYVT36gncTnJSoz3x2Lv3Qv6EJQMhf9dwPeTqoGjJlX/Rk6sDl1x6iAnjwZDgvHoCoHjHgC1b2pl25Rjun77+3ZLec47h+iN/nIJjuDgL13Bvk6uDoiVX/kVPrg5ccukhJseQ/HsCGDDG5yQ5kS3NFKkXlF+Jf+yNeBZwefzr3/3Qe8yZPsW13MO9lIEzIHGKsnESruF+mVwdFC258i96cnXgkksPMWFMGBYG7NsTcEKKGCNzq/+gzEIwf1V+3ruELPss4MI5X8N1kX9o5OqgaMmVf9GTqwOXXHqIyTEsjBhjw+h8ewIszuJ8JAek/4Qyy8eyzzHO+S7gwr0u8g+NXB0ULbnyL3pydeCSSw8xOcbr3xPAgDHK/1HmozW/UCZhCaZnwDGWkOUarsVwuRfDdZF/aOTqoGjJlX/Rk6sDl1x6iMkxNIwO4wPFY4zOGvckOvHlO9A+xozRcowv4XENS8i6yL9g5OqgaMmVf9GTqwOXXHqICWNzegKOAWOUfKgGhI+h/peXMWiOcc7XcLnXNdz8k6uDoiVX/kVPrg5ccukhJsfwMGKM0QkrYqD0CDBWQowwxzjHNVzLPa7hFpxcHRQtufIvenJ14JJLDzH5GrBvbwDGWGHnf85xjWu4hUuuDoqWXPkXPbk6cMmlh5h8DdgxYseQHYN1jNY13PtDrg6Kllz5Fz25OnDJpbuQU+HzYscwipIdI/U1XF/jdTjQvUXJgeTpy74U6LwvByr/QbKvnB8mHcCB5OmwQ4HO+XKgch8k+8r4qyR/2JcCnfflQOU/KPaV88OmAziQPH3ZJZdCJqfy+FY0f4MoLuxrtP4c6Prixr4yhn0N92HRQyDZOxzo+uLEvrJ12FfurvwfDPvKGHZ0APnqw+FAZRQlB5K9w4GuL67sK2PYVw8uuXRP8jXWr2/81hv/Ff2D134Z/oNXfuXLW7//8q9dzj/7yxNGzsjch00HsKuH+8P+8vTqwN/x/5Mr//vD/vKEXTt48OwvT9hPD4HBxN///vdfueyyw9evX/81fOHChd+cPn36/9LT03+b8atSm5yPybj8APjHHx5PTk7+XWZm5m8d5n9XDw+Oj3p1oPXf2JV/EbBrB8WDVQ8KFRxA/WUgIS655EMKJOSLL76Qzz//XG7evCkKKHIrU+bTVVy+z+zI+tq1ayb7Gzdu2Jb/XT08GEbGGcpXr141ubOFXfk/OHZk7dpB0bIja4UKzDJheuqXgYS37Xjo6Att7G7e+sLlAvKtz/+uwMEjU38AgcFeuXIltyKdPXtWTp/OkVNZp+/gLDjb5WDZX36nsnMkJ+eMyRc504BdunRJLl++bPKH+d9XD9l6j385rh5CY3/5ZWvdRrbI/+h/vysXL140RvZsfeV/5swZu973flf+obGv7Hw5R2UbrB2czsmRzBPZctzhk7582uV7so+8VH7HfBif5MhaoQLrXnxD2R9IPLwgIvnYJdkSe1q2781xOZ+8LT5Hdu5Tx3nxhgEIB0TcunXLUD9G6+s8T2Vly46YNFm6+YAs33LQeAW81eFkl+/JXpl55Qcv3pwkcUlHFRio8aqccZ7nzp2TCxcumNNke/78+Vw9ZBw/KWu2H5Rlrh4KwL46OCDLwpJkw65kOXUqOxdEABTQA40V7Mg/KyvLOCzykN7n0YEr/1DZK7NcHXj0sERtIWrfkaDsAHtJSM6Q4XP3yKj5sTJmYfxtXuRyUOwrM+M4Gavce3KU+SRH1goV8vpg2MMLInrNOChjlh2WRduOy8KtLueXu0xOMiDhgAjfKASGixE7FelIRqZ0HL1T+k6NlMnL4mTikjiZtBSOdzlk9shvisqx9fAdMnp+jJw4ccIcJ3z69Ok7GrEc7XE5eohJOCx1+4TJhEWxWgbs6iG/7JFdrDZCMVKv72ZJTc8w+R9REAFQQA80Vg7Ag9HT8cxMaTxwizZgMXq/K//8s8cOPPU4VnpOipBu4yOCsoOTJ0/Ktt0p0mNCuHZuDklEXJqEK0fEHXY5JFa5xXp4155UBXFp0mn0DuuoOLJWqOB89+PL0Qhvm/zQ0eD5hyTr7HXvfy7ll1ZHnJLwhDN3RCEYfyQKAer3Ndq0w0dl6MzdEpuQZo4UIz516lQuOz00l/NmR1bIDkaOK7ckyvhFMXLs2LFc58k1NFzIH0fK/44eovamSv9pEZKpDZmrh9DYV06wo4OMY8elx8SdcjAlPRdEcNz3Gkf+6OnI0QzpNXGXHD5yzJV/PtiRFbJz5Hv8+HGJ3ndI+k4JD8oOuH5r5EEZPS9aMl07yBc7svLXw/A5u2X1tsRcWStY8P366J3RCG9b8tDRIAURx09f8/7nUn5p6fYTXwIRDGUwDgn69+2BpaUflSEzdkv0/sNWATmHYWPgLofGTg8XA14elqQgYo8ZL46TUDrG7MiYLQbu6AEQ0XdKxB3XuHoInX11kHbkuPaAd0nyoXSTf7oyIM2XHfkDIo5mADoiJOXwcVf+BWBfHVCfd8akSJ/JHhBxLzvAXrbtTpaRc4niecCGq4f8sb8ehs2J8gcRP1D+rjLfASHJ0gURLnkoLxDBUAbhQwzXqUhp6RkyZGaU7Ek4YpXOCTMSsXA5NEZuyA85rtxyUCYsjr0DRNBo4TCRP0YNO3oARPSbEmkG7+ohf4y8fHWQnnFCuk8Il+TU2yACsHAHe+XPfsaxTOk5abeCj5Ou/AvAvjqgPu/ac+gOEHE3OzAQEZUio+fH6nnXDgrC/noYPjdaQURSrqwVLDifMgdEMKThggiXPOQPInzzIfxBRPqRYzJsdozEHzhmlc5JeCJq4ZtB7XLe7MjKSRRDxqu3H7LxYRykv/N0ega+zjNm/2HpPy3KDN7VQ2jsyMhXB8gwIzNLekyKlENpR+8JItDN8cyT0ntKtBw5nu3KPx/srwPsgPocEZ8mfRUgB2MH7O+ISZUxC/dqb/qsq4d8cF56GDlvj6zdfiBX1goWHBDBl0ldEAExq5Fpog6x6/Nvvoj7v/iigIU8YAoFRJBYOXxOrOxLOWHnqYRcS+QCJpciVL5+3cN5/Z8fvlYIZdwvdmTFugPIj9kva3emyeTl+81ZBuM89ySky8AZMaafwtDD/dBBYZRxPxk5ITNHB5mncqTn5ChJTT92TxCBXk6ezJK+02Ll2MmzhWIHsL/MCkOG1+ydAp8rSnZk5WsH1Ofd+45Iv2m7g7IDju+KPSzjFu/X3vTFQtODv/9Ahr7n88OmhwDHi5rz0sOoBXGybmdyrqwVLLggwp9OX7gh+9MVeV28af8fy74mBzIuyfWbn9v/oRKA5MipK5J6/LJ8fg8gwdnLV2/JlWv5e1Zh0r1ABONkTkU6euyEjJgbJwmHThl65ToqIvcwDBIqX79xU5KOnJeDR8/b/xevXJd9aWflZM6VL10bLJ+/eE2S0s8FVcbV6zflzIWrcuNm4PP3i5EXckN+yHFdeLpMWZFgjjIY5xmbeEQGzdxjYciC6uH6jVuSmnlREg+fM31cVeeZoPvpJy7KzQDXB8MXLl83HWRmXwp43pd55umz6CB/dSi/jKycuo4MT2afkV5Toi034l4gAp2wnkG/6XGSmXW+wHYAo4fkDGzhglzT/QuXrsv+w2clI+veMsyL0UOi2lP2masBz/vylWs35PS5q/obAp+/H+xvB9Tn6P1HLcoWjB3QwYmIOyLjlyRq41dwfwSfv3RN9qaeVV/ukTt+ZG/qGTl38fqXrg2WT2kZ2AP+LdB5X+b551X3gc7dLw6kh9EL42X9rpRcWStYcEGEPy3Zlikl20fIrI0ZarRfSLepB6Vqnxg5qkDg+s0v5LI28NdufG7RBf6/ev1zO8YCTRzjHFEH/uf80ZNXpeGweJm4Kl0uXLlpAOGK3uMACp5h93/+d60kN2WIvv+e5PN2r1Mmz6DMq1o293OO+3PfRcvhWq6DuaegFAqIYH2CkfPi1TFlGXKl4lEJmRbKvaHy+Us3pNaAWKnaO0YN7IZsicuWj1QnC8Iy5JaWeenqTWOAHf9f1v3L15R1e+vW59rwqFyu37KyOHZdHeDircek0bA4Cd9/WmV4U8vV36NOmWtu6j38z7Xsh8VmyZilqXKJY3otz8CZX9UyKZvrOMe1HLt4WY1Nj3+uZV25dsvezXl+KIy8kBvyA/2vjzgiU1cmmlMMxnkyf3vQrFgLPxZUD/yGLpMTpVzX3Qoezit4uCSfdo2SPrMO2m9GBsgMuXz+uUfOyIr7kAuMnDmHTLhuxc5MqT8kVrbGZdkxdHtVtzwPvTl65d49B89Iv9kH5Mz563Yt569b/VfnpvumA2XTtZbtvAtl8VzOO2WHwr46QIanTp+T3lNj5PDRzFwQwZh7IBCBnrKyc6TfjHgFHxcKbAcwMm0yPE6qqA/KPH1Vdu09LZ90jJBxy9OsXl7U34kcqePIyPTgZU+99dRRynL0MHdzhjQYEiexyWdNVmYL3muQba4tqGw3xZySYQtT7LrberhtC6YzvZ7jd9iC6d2jI+f5wbK/HVCfYxIypP/06KDsAN8UGX9UJixNUn91pVD0sD/tnMm9y5QEk+uoxYesnUCG/N6Ll294ZKZy4H/2kQsyQxbIALk5/uq8Xt9zepL0mJYox7OvmJyQO/fyPK5FltRhfPyElamyKvyEnfe1K/5Hd9xPB9TXjrjG31b8f9fdOJAexizaKxvCD+XKWsGCCyL8afq6DHmt2Q5pNz5BkeZ5+bR7lJTqHCkHjl6UNZEn1XjTZeLKdItYzN9y3PbHLT+sCj6pirolExQsHMu+aos2zd18TBZtzZR3W++SVREnJTzxjIxfcVhGLUnVnvZFBRW3ZOb6DBm5JE127s+R7fGn5Z1WO2Xa2qNW9uY92bbg04jFqVbmWH3OeOUd+85IzMFzWla6zFh/VE6f14ZW7x2xOE2W7jhhIKWgFAqIOJapIGL+XklKy7ZruNYxWO4PlQFTpTpFyoftwg1AjFiUKq823W6/NfvcdZmkMh6lMtkUk6WO9ZoMVyc3c8NRve6QpB6/JNHaAK1Red9QsDVSj/F/y9F7pc7AWNPpvE0ZBhIWbjlmTjbm4FkZq/9PUl0ezLgondRRVOkdLbsPnLHrTmiPbZvKd37YMXMag+elyOyNR7VxvWDHxi5NU3CSY8Y6ZU263pOmQPBcwN92N3YMF/nRgG2IOCrTViaZrIMCEQcyZPCsOAs9FlQP1OUmw/fK+2136W/NkAUqq/fa7JT2ExLkyMkrMn3tERmt9Xi11vvz6uyGLzyk+jlieolNOaf1+4Jdc06d5fR1RyUiIUfajtuvgDxa4g6dk2U7Mk1uU1Yf0Z7xTe1dn5exy9Jkwoo0OXTskgyYlywfd4qQtbtPymTVNw3ojn05MkNtg6jekAWHZPLqdNMn4ASZr9t9Sp3u51qmx0Z37jsd8LfdjX11gAyzcs4riNgj6XmACNv3yh8QkX36jPSfsVdOnr5YYDuAL2tDUbVvjLzRYods1TrIb36x0VYZqr+fqez8VmS+URt7OjojtXGbqXYyUm0GW2CtlwVaR2lQsJtt8dnSZES8VO8X47EFBRTU8QVhx7XB+cLq9zjVw6SVhw08tp+wX8r32C0xehw9HNMGD5tcsu24xB86L4MXpMiMdUdMZzwHHe5QuV9QGx6vQGes8i61jUC/LS/2twPqc0ziMRkwPSZ4ELE3QyYuO6A9aKIoBddDnNbpV5tusw4lcqVDgk+KTDoj8anqi/V3jlI/nph+QXbrsRHqk6arXCZrPTyjPnyxdk63q1wyc66qnz5kMvy4Y7gMmJ0s+1QPk9DjkkNWZ9ED7QV1GpnGqZzLdo2UrlOSzFeh84u0HRsyJFLblNURJ7Q+pOj2pNrRBdPTRG0nDp+4IofUVkaobeLbMrKuBPxteXEgPYxZvM8FEfeiGdqoV9YecPNR+8wRtR67X+oN1l52+kVr1GngP9EGblN0tjnUzpOS1CGeUEPfI6mZl7UHvUcS1YFO1QrEvdHa2FfqFSMJWrkik85aZaL8UUsPWwVpNWafOcdp6mj3aEWt1DPGAEiP6QdljFaEE/pbympvcP/hi1K+226ZvOaIpBy7LLW1pz574zF1zAkySyvTeDV6ehecowIUlEIDEac8IOLwnSDCqYyh0oXLt6S8grf2ExK1N5os3acdkNqD4ux3nlLHuUTfrZseqzc4VqJUpqUV5K3QxoxGD8NavivTGhmiPGU675Zt2nsbtjDNZHok66os33lCRquzK9E+XA34gjQcGq/O9Jg2lMe1l3xaG7LD9uwDR7X33T3aDBG9t9NjK3adNP2bsWoD2HTEPlmoQLHBkHjtrV+R2gpU0CUNayjkyMoxWuS4ITI0EBHvBRHoqKB6IOKFDcC9ZyXbIm44sU6TEiVdGyvAal89Tg85RRsQZILsh85PNX1tiMqSxsPjJUtBXyOV73r9H5kDzrFP/p+06ogCxQh1hGfNVrifSOCmmGyZu+mY6ZyoXLV+eyQ545LW9+Na5l6JOnBOHXCE7NDGaYXqso5et3LXKamlso8+cFbq6f844BwF+qGQIyff+m4gYpqCiIwQQMTMvXIq51KB7QBCD/W1bvHbBil47azyr6aggg4DAHqZ/n4WhsPv0En5VH0EYKqF6g0ZzFY5dtR6S+Syev89CspOmT476z3HFJit2HXCOiPl9L4E9XGtRu+XOXoPoGLTnixtnNK0rP0GHGuqHuj8AGS6Tz1gDV3FXtHWsAEyW+q98zcfV7AeZ/6uQs9oA5DUgWDJkZWvHdB47QFEzAgeROz2gogrV26DiILoAcBEZ7K1+tsh2mC3HZtgPgqfvld9CD6ANgC9AMyqq6zC1JfQGdqt12A/dBhTFICUUp9Eu1Crf6ws0vpO3candVTdNhuxV/alXVAd77GVl4lg02FsONTj//BPdbV+U7fRMXIfMDfF7JRhc9qjoQtSzf/xzAj14eW679b7cswfBkt56cEFEUHQVG0smqvRdJuaJGUU/U1QIIHjAkX2nH7AFrOq0CNa1kZmSRc1JBwfPSMMZ58i9wbqMEGWU7Sx76QKPazAoraey8i+qkZ9WHrPPCg1tfKMXZZuyh6qKJHvVNCroBIQxqccKgYrbxKBAFhglPUGxynqvaDI9qZ83CHC3hHDpTEjSjFWry8sChVEjPKCCJJxuNZB/fkhQES5blHWwwFA4fDajU80WdMb6zgx0RoqZL1r/xmTWbo6uX6zQP8ZFjEaorI9DxjRcqLVyQECMHAa/7bakA2Ye0g+6RwhEep4GTYBJDI8ckaNkwgSDeRxlT2AD8MnCtJV9b0y/JS0HLPf3pOex2daF/rMTJZmI/dZzw5jJjKUH3KMlhAist4YmZFvEFFQPdB4AZCGLUqzRou6R53uoLIHTFO3eyoow9klHb0oFVUO1Htk317lC0hoprI4rg0V4A5gTOPUS+v/kVNXzWH2n52ijV60bFZnWVN1iG7QQc6Fm7Iu8pT29uINmAMSkvUZ3N9C6zsOmOs/V7vBeVNH+s9JNtACAGk9JsGuyQ859d3RQfaZ89LHQMSJe4II9OQBEftyQURB7AAiZE0npq/KqrwC2s4AucmJ5jtoUDooQABYADR2qi3ga85euin91X9wDcAY4EcDUlfP7VA9DFuYan4S0IAt8H8lBQPYAvWYjgjDotjhePV/XfSZ7NcbpL4t7bz1dPuofbAgXSe1TX4ePqiK2grH62tnBjBXa4CnUxMq+dsB9TkUEMEsgtsgwgOmC6oHQARRaTp/77XZZRFlIkREkIk+02DXVT0NX5Rq/gNgd071UEU7kLvUjw5QAMgQOYCBclJ022jYXvNnADmuR86NRsTL9vgcaTJyr1y66tEB/qT56H0KALMkSn0ZHZaTZ64r8E4w0D1YgfvMDceEEfImWmZz1SF2Snu1ResI7Vd+KJAeXBARBNHY4OhY+vlTbYDCYrNNgfxP73/pDkWc2vtaq06Onu2sDUetYmDER05elVbawDDk0XFiknSbckB7sXpOHbBzDSFFDHWU9hKoLDRIOEKQIz3Zunrtku2ZVjHpDYM+MXAaOSpdXIonX4KGlBA+wIGhFiIUgJTCoqIFETet8Q7TxqVs1yhzUOO0tzRnE0M/hw1AAJoaDd0r4eo46w6K1cbmkvRTR0vonfem4VqoDpQGJib5nILDI9roHzbH13CYB9V/yni/gjP0PVr1AShYp4a6fOdJM8RYva+RNkzUCXSBo+B+jJeE2Q0xWRaNIrpEBItkXEBd1rn81T9/oy1KEEG+DYBoQ7TWf91Sn5dqvSQaMVbrN40ZkboaCoipfzQge7ThXqGywyHu1kYEsLxwS6ZF4mjgAAF9Zyeb40W/9KLozdHTIjw/Qhsz9LxMy6AXVrNfrEXpaCgnrTyizz5gkQwidvTGGHIBeAAsiC7xPvR6W41OkCh9fn7Iqe/FBUQwnNFI6zINDR0V6uhotfPhCu6QVXv1A9RdomkMqQE4TuZcUxCh8tRr8F+cW6T+Cz3QoDE8OFSZKAZADbti+I4OCmBs+OJUszN83LwwconiJUn9T1PtJeNn2iugB4RznoYPWyDaR8O1RP0jYP+EvkMd/J7WjVDJ3w6KBYhQ2QBcN6s83261S8IUSAOSaaSbqFyIGBBNG6mym6f1mrpKx7C6gmxsgc4p4I8tdZ7oXVP1MRvVvvBb/eakWBuA3+IcW6czE6/gnMgPOmdoqOaAPeZzAPDLd5004IL/gWhX+H+adqYYMok+cM6ekx8KpAcXRARBjHPv2ndGTinSo1dD2GiTVpgcRYM4P3If1mtDwwwOGisaobPac6LnBdoHeS/edsIqF8j+nDYs66OzzCnjbAlfcY57SZYMT8hRQz0uB49esueHJ5y1sf6ss9csdI4TWLP7pKHRjXr81BnPb8NRLFanzrsBKughxCrAKCwqShDB76GxxhHx+4gyYFiJqhsiBQA5jiPz9JOXbQvqJyyOPm7c+sLCtji5NconVWboNTb5vDU8HF+r5SNP9Etkh/A8Y4oAGHTN7+djbgeOXDRnyzMYf0zTnjHG6STG2pizghWiSLw3zoVefH7I32iLEkTc/PwLixAQCYs/dM7GZfnt2AB5KSuxA5UJoAs9rVaZUjcZ+iHqgCzYEplg6I+oDqFwwqvX1U6wAe4BiKWfuGxJxyu1vlMuYIwkM/ThPJchQ4ZIABWn1DbM3m565Mx49dzNx2Wf6pjoBDbDO+WHnPpeXEAE4+Mb1Q9lZF2V7frb6YwAnGK0LjPWTr2lN8tvxk4AfZe1B0sInQgcekRW2AFMZAgQRo+WaIPZiNoCQyCZKjPykQBkRNzOqw7QBc/A/tAf+wxzRCnwo9ODPvBj/OEvsAX0hY6pG9hrqORvB8UBRFDn8SnZ527ISq2XRMuQ+wmt8/gJfDH5JtRv8iKwE/wAssX/EB1CrtRhZE2bsWmP2lfWNZM7Po1ztDnonM4nsiRyRKQavQPiGc4lJw7bIFp3SGVN/hXtEUQCJ20UQJzETseH5ocC6cEFES4FTUUJIh5V8jfaogQRjyo59b24gIhHkfztoDiAiEeRAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREPkJheSLjwYaXiCiKYM02oPBAxxEDo727EKxFmdIYjgiGeSYiRrUOhlhEM+RttcQURhKrvpgOGFO5F2MbNW6HpgGEqtjyDXAGmuaGXwiSnvn+VQQRyzMs3YT/3sqFA+keXHHP0A3n+D10//nbwVQUR6IB2IhCho3u9LlP5/XX1ZTth3Y9bdixUCqQHF0QUIqFgFIgTY6EoyBaZ8h7bGJ0lM9YdveM6x0B9HR/7KJjkJErJLVPZMUZzzN79B0XFFUSQ4czMGOSFrJAdsuFRjAOThwJxzNcQHbmS/zBsQarNqecaR1/O9ejQl8ihILGTxDGSMbnuaNZV6T0z2cYpC5P8jba4gggywhnrpVhHrgAH/ieHwUlqRJY4SUekzrU0LNPWHLWpmsjTOW7249WFL/E/ibGM7ZOYRm7RwLkpltjs1IXCIqe+FycQwf3IETk5xL5Tv2FHhmyRF/vOY51zjp/aoL6JaZ3OtZTNteiQmTes8wHlPsP+u21TTL9dsDXTe9TzfJKgyWfBVo5mXbEGkhlNJG2GSv52UFxAhCMrp76xQR7ICaL+OjIzHei+A5S51vcc+8x8IQ8CcvwQxPRwEmFPe6fGOnp1iH1ywIYsTLX8GIfQH/ZBTt00lT3rRJCsyXR4Ep55bigUSA8uiChEIqlpc0y2JTSRDIPRHM68YkkzJNWQLMk8eJJmuIYkPhoi5hXjDElYAi2SpEcSIYsc0WCR/cv1TN8iEZDKF6uOmcSmB0nFFUQwu4WE08MnL5vjIsmL7GcW/yITmqmHyJGMfxKhSLzEeOxa1dPOhBzpOyvFplixxsTW+BzTGUmp66NOWZKe89oYNomTzNQYNO+QDJmfalMOmV3zfptdltxWmORvtMUVRDDLgkRHkryov9RZZsng9Jh222FigumABLPVkSdtvQ2cL4mBJBmjm3HLDqtsz1hCMAt5rVPZowMauKikc3cAD2YmkQHPVMQOExIseY0ksy2qO6bYkvRWWOTU9+ICIriVxY3wEUxnpkFhkbotKnNkxloRTGXmf5JVSaJjbQ0WWyPx8fotj48hCZAEzUvaMyWTv9XYBOvJMnNpreoIOyG5u3SnSJsBwjN2qa1gEyTnYUPoBz/Wcsw+mz7qEOc7qt0xKwDbOHzyij2DRfb6z0nxXhU8+dtBcQARgAFkBVACxCKPDO2I4Duovxe1vjM7j8Rq6jAJ8ySdMvsCWSIjABrn8FfYR5txCTYl/eIVdOTxT4CDJdtOmOzwTSSmcs92bTtYkZIIHOXiA1mjg1lPEPbCbDKmfzI7kNlTPIfkTEA9M0Lo/IRCgfTggohCJKbdvNtql0zVHlXjYfGWnTtbUTerLJIhTaPD9Kflu07YVNGJCihYkIdpmDX777Gpb2RTs1olU+KYGpp45KItaML6EEzvYRob84GZGkoW9YOk4goiOkxKNFlOWX3U1iZgSmeF7p457siJdTgAYEy/AoWzZgGOFr0MUIeGQTI1it9We8Aem3LYZux+k/WwhYdsTQQMGTpz4aYt3lJvSJxNI2VqHWshoGumLxbmbBjI32iLK4hgOhqOCofJYl44Qua+s5YK0y2ZCktvlqmFNDZNRuyTpCOXpEKPKOkx7aA5wTbj9hsQ6DI1ydYBYd0IFugZuTjN5t8DCiGcLTbCtDYaKMrGgfOTmF6Nvpzv3BQGOfW9uIAIVqylsWHqHlMr6VjQ22Q65QiVC9EYFpkq02W3TXGt2DPGlupnYTRsAYCF32GlW6YNAgBZWK3b1APW+HGMtWo6TUwyG2KBKBaToifcYvQ+6TsnWQbO9awpwVohTHdmqjvTSh0CrDPtnYXvmKLOLA4Ay0D1gfjjUMnfDooDiABAsN4CU8uZvkkkk+nGTOnEfzPdHp9NY02Up2SHCPPjNdTXr48+ZQCCZbKnrTsqNbSeRySetWmbs1QfHGOqLlPXWTSQhac+7hhp4Jx1iXrNVB+l9sIsMWZl4OdYxIu2gugrBEhnMTIWuwNwe9bv8Pxe/FVl1c/JnNDAdiA9uCCiEIkwEnPjbylCZV40PaT5YcfNGUIYOosT0YOgshGiwkkyFQdlUxmJPrCKHw6hhjpJFshhTQmmb9IDaz7SM/+YtQeYIvQgqbiCCIDZFAVuGF4fdZIQDhREThRi2c5MiwBh8OiDhowQO8CBleCY/lajX6xFhHCg9ITnqSHTkBHtqdJ7j5zUHjbEtRg2QAQgwZx5iB5czQGsppi/BY3yIn+jLa4gAoBMg7XNu84J04+rq0yJoAHUWOeEnm+l3tHWaAEiiEIA1JyhDhocpryxRgeRBZaHb6zOj6mgLC7Fh+8get6AN9aqaKc2xoJXjLUTCUHvRPUKk5z6XlxABI0Ey7XbNxgUPAGqkAXRTsa7WfWQVSlZ6ZDpyjQ2fBuDRrytF0CzzkO26ggZ03BNX58h3RV8sF5E3UHxtk4NAC1OATK6YlohYK/VGM9quCxWhb5ZhA/Cf7Fwm0OAEVYl7aa2yXoqrI8A0bB+VSIRrNvDmg0QUQmmsVqHQwEsUYe6qiMadoY5kTkdR6KWA1VWc1QfRELx80y5BXQw1IMuGP4h0snwHOAD/wYAZ/XLZG0fiDZwnHYNu+upIJp7yMkCTOCjISIRAHDaGuqHM1xF5xM7YZ2RUCmQHlwQUYjEegQsZMR3AECLhGdpZDA+CGfHB4yYs9thgjYEasQ0ZIAPFnThPIbIAiWM8+Mo+FaDAyIgxh7pQU/SSvOgqbiCCCIDyGPa2iO5vdIy3QAROWqAapQqVxonIhH0uDBqIj4MdbBWBGAOPbDmfZPh+2wlOgyahcHoQbHEMmF6iC0L/TCmiLNepYCQ55FXASB8VEHEwLnJ6qQOy1Z1jC21t4qcPMv80nNKlQnqwFjUiGgN34DBMbKGA44WwMDrtNV6z/czcIrIcY7qioYMXbGo0nEviCB822ZcotrVAXsGDSEApYT26uj50aj657EUhJz6XlxABEMSAGIaFkLTRAtYnIiIAOuW0MFgWBWgYAttjdF6r36IMDuRC8Lo1HeiP4AGIghEcLpOTdLyjknjYXtloYJtVppkrZOGw+Otx0svmoXUeM7IxYc9QEGvxUZaK3Dkez4OATAoBxDIIlVHT3nC5pPXpEs/9XWhkr8dFAcQsQZ5Tthvfp8OIn6czwxEan0GPLDCMP6a6A+5CCyXfzCDBfCSTR/U2Wr9WHn4ojbye20oioXbkC8rtyJ/wAH+C59UsWeU6RyQzoKCtDFE7ngW0Sc6P0T/nBywqze+kKba6cSeag/cY3WFYUOLfqivxI7wXaFQID24IKIQiUpE6IqeF2ibsCOGBiCAWESHCAU9CSrd+Uu3zMHiJFn9kkpEGT1U6YwlEnrfqz3l0UvSrJEieYcKwvLWLCv8oKm4ggjGWtdp75PEVYyWBoRwX9LRS9bb7TTZs0ooBgnIQA83tOdAaJVxX4xp8IJU+7w70SB6FIxFzthwzBb0GaTnnPA4eS70pFnEatWuk3YMItsZffHRocIkf6MtriCC+svCRXx3hGXhkRcyBaSxkBFgDgeG88SpcT3j9gwXMaxBph76AVCgQyJAjAmPU2BCL5bGznfpcBahYuU9rkWXJHXy3QCWdsa5hvqNjLuRU9+LC4iASL4jhE5v9WTOVa3HV/W3J1tjwoJSmTnXbciHXrEnQnRaohWY4XdY6Ihl4fE9DEPxAS0iSDReLKnM0CB2YsOl+pr4LyIN+Bx8EUu6E7WDsD0iRzSUK316tuS2EBEiDO/7nQzyX1g1NlTyt4PiACKIPk5RmRGxpCHHN7CYGpFK6iDDzqwYSh1F5kQt+DaJZ8Go054VWBVUAxiIlJInMWNdhukiPfOKRRkGKODiw3UMp6JrhmoZNgc0Dl2YaoDw9IXrnmtV/921wwpQgUiqZCFDgAc+C0InRCWcNor3CoUC6cEFEYVIIEpC3FSm+0H0mAnXg1AL6IPyRcUVRHyVyd9oiyuI+CqTU9+LE4goCLHCIsMaJOU9LORvB8UBRBSUWP2VaMXDRIH04IKIQiQSWUDdhTm9zJf4EFHa8Ss29lUU5IKIB0/+RuuCiAdPTn3/qoCIz/X5LOMeaii7KMnfDr4KIIJIRmEmAD8ICqQHF0S4FDS5IOLBk7/RuiDiwZNT378qIOJhJH87+CqAiIeRAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0uiHjw5G+0Loh48OTUdxdEFB3524ELIoqGAunBBREuBU0FBRFW+XRLBXyYmN9aVORvtC6IePDk1HdHB4UFIpwyHyamLhYF+dtBYYEIyrty5Ypcvnz5oeKrV0P7+mZhUSA9uCDCpaCpoCDi0KFDsmnDRgkLC5OwzZsfCt68aZPExEQXG+dZGCAi50yOHD1yRI5lZDxUfP584X4hNVjybfALC0SwjYiICFjniitv3rRZtmzZYrb+oOl+gYikpCTp23+ADBg0VAYOHvZQcP+BQ2TgwEFIxSOcB0guiHCpQFRQENGqVRt59vUPpUL9NvJp7RbFnsvXaSkfVqgjr7zxVpE4Tuh+gIhevXpJ1ToNpGGLtg8NV65ZV0aNGuWVyoOl+wEisk6dlKee/Zt8Uq2h1bNA9a+4cfm6reUPTz0vq1at9ErmwdH9AhFLFi+SEuVrSJ8JC6X3+IeExy2Qp//6N/0Nt79J8qDIBREuFYgKBCJu3JBeffrLqAWbZO8ZkeiT+eeYU3fuG/vu+5wvCO/JFtmQcFpqNWohOaf1nyKg+wEiKlepIgOnr5IFOw7KvG1JBeADd9n3/b9gvGBnsnQbNUeaNW/ulcqDpfsBIk5kHpcqtRvJjsNXZE9W4PoXDDv13vZ96j9MubBzvqAclyPSrOsgWe0HIv7+BfJR/vzvKivvwbuQ7zXINpgOdaDGqzBAxLKlS6R1r2ESfvSW7DpyI98cfvSmse1n6D7MMd1GZNzSrZZ/NPC9ofNNee+jMnLj+oNv0wLpwQURLgVNBQURPXv3lf6Tl8q21MuyOelMvniT8sbEHNl84KzxhqQc+99z/LRs2J8tGxOy7f9A94fCW5LPy+KdKVK9XmPJyTntlcKDJX+jLQwQUat2HZm5Ic4asG2pl/LNOw5flW1pl2V72hXZkXZVtmt5nn22l+1coPtC5R3pV2Xc4q3Stl07r1QeLDn1vTBBxMkTmfJZtbqyas9x2XLwXMD6d0/W+k+dX78/K3d/3b4sWb8vW8FvtqyJPyFr4jJt3+wlUBkh8NaUi1KvTY87QARfijyVdk4Ox2dL+t4suXzuzq+nfn7rCwMZvpRz7KLc9H6k8FzWFbl++d7fj0AHt259Ltev3ZCrVwsXRDTvOlDCDp7P9Sn5YY/fOa3lnJMN6EB1gtzZXxPn0QP6CXRvfvidEqVyQYSKRm7dUB+hjFz95R2I0IsD3gB/wY6MuCDCpQJRYYEIGppAhhEMY5zdR86UpRGpsmz3Yekzfr70HD1LJq+MkE6DJkq7fmOk/8RFBiwC3R8Kb0m5IIt3HfpKgoipa6IMJAX63cHwBtXDvK0JnkZMHeW8Lftl4fYDsjL6iExfGy1TVB/ztyUGvDdURg+j5m/6SoKI1bGZ+dYDcpm0fKdUqtdK9XBGug2fLnW0ka/RrIO07j1SXnj9fXnjw7IyZMZK2XboYsAyQuFthy59CUTcuHZLdi8/JMOqr5G53XbJ8YNn5LSChPMKDm5cvSV7Nx+Vk6nn5NypK3Lm+EW5fuWmLB24W8HGNflCG7KYNWmSmXzWrj9zQuWjjSD3n864ILdufm7Xcc+FnKuSlXFeYjemybnTF4sViEAurXuPkvYDxqsuL0j1ph2lbuvu0qL7UKlYt4W89GYJ+bhibZm9Kd50FqiMUNkXRFxXOSduOyY7FyRL5NIUuZB9xeQIOCBCdO2S/tbPtf4qyHBA3YFdx02+n+vxY6qza5du6P9feM5rfTdQov9D3GvRJj138/otuXr5hsrPBREu5YOKGkSA8jcl5cgHZauow5wmvcfOlVKV68pLb30ojTv1l7+8+Jo07TLIgAWRiIL2LlwQEZhxlCt2p8uLb7wv07ScgVOWyqvvlZJ3S1WQ5t2HyK9++7i8/dFn0rLnCAnTZ6C3QOUEyy6ICMzogUjZ3157V4bPXmt20bLncAUOZeSzOs2kXI0mMmbhZlkRle6958wd94fKgUAEdEMbrEnNwiRbG/6oFakyofEmmdZmi+xedkj6lVoq2+Ykyfwe4TK86hqJVMCxuG8kQlVgcVkW9Noly4dE6/VbZXSd9RK98pCMqrVWxtTdILHr0mTZ4CiJ35gui/pHyoI+4TKo4nLJPn62WIEI/FnfiQtN7mNV3m+UKCv12vaUMlUbyJslytkQ0OSV4Z5IRAFtwWFfEHFDQVb85iPSv8wy2TR1vxxNOC0RS1LkcGyWnDx0Thb2jpAM7VTtWZsmCVuOGkib2WGb3XtRwVnYjARJjsxUeacbuDidcVEil6VI7Pp0Aw2Hok7KmczLcij6hOo0RVaPipErF6+5IMKl0Kk4RCK4t+OgiYbsy1Stb0DirY/KS9POg+TxZ/4m76sjHTx9uYUSV8ceD1hGsOyCiLyZ4YqqjdpKg3a95dNaTaRdv7FS4tOq0qTzAHnlnZIyaOoymRu236IU6/aeClhGsOyCiMAMONuqDXuNZp2kZPka8n6ZyjJjXYy8+WFZqdKwrTyv4KJmi04yc32MDJ62XOZt3V8gnecFIjIU2E9pGWa938kttkha7CkFDbskbNp+2TBpr+zfmmFgYFLTzbK4f5TsnH/A7qPBWqSAYlGfSNm76Yg1dksHRknYdH3PmQkyt9tOWTJgtzWIHNux4ICELzuY63OKC4hAD9Tz1977RD4oV0VBwxDpoD6qfK2mCiLKytuffGbgmuGO8Uu3GqgrKLD2BREQw0KTm2226MP8nuGyfGi0yjtMdZAg01pvNXAHeBtbb71smZFoDAEeFitAm9F+m8ztvksmNw+TNWPjZHq7rTJR9RW1KlXmdt2lAOSwLFUdzuqyXcuOyrUFF0S4FBIVBxBBWHb+1gR56vlX5A9P/EVWx52Q1z4oLY079pd31Fjnb0mQdftOSuchk6VZl0EeY82nwbogIm/eqnoglP7Hp56V1z8oIzM3xMoH2og17TJQnnnhNXWaQ2Xs4jAZPHW5dB8xQ+/Jfy/YBRF5M3kpDFf88Mc/sWjc4p3JNoRRuUFradF9uOVbrI47Lk26DJDe4+bdFxARu+6wbJy8z/a3zkyUWZ20oRkWY8BggQKDtWPjZYb2fGd22C7rxsdLivZsofBFybJj3gFZPyHe8ik2TwU47DJe1CfCesI0bHO67pSE7RmyfmK8AonEYgciYHxa7ZZd5bEf/diGVrsMnSKf1W4mJT+rISPmrLPcnlkbY+WFN96XySvCVQ8FG9bwBxHR2tgDuG7e+FxG1VonByNOyNRWW1Uve2WzgrnNgIk2WyxKBFAD2EEcXzs2Vpb03y2Hok/J8sHRMrvzDolYmiILVQeAESJFq0bukZjVqbJqxB697qQLIlzKHxUHEAEoIEReq0UXadC+jyUHEjrsO36eNO/mAQ0kbnYZOlVadh+We49/OcGwCyLyZmRKfsqTz74sleq3kjXaUJWuXFdlPlR7wW0k4vgta3SGzVxtPTISzwqiBxdEBGZkStJe3/HzZVlEmiXx0WhNXLZTG614S4Zct++U9BwzW3qNmROwjGA5LxBBvsLls7f969HE09aY3bqhvzP1nFy7fFNOpJ61MPpZb94DdCH7qly5cF0unrlq1zC8sVgbM0Lv57M8iyllH72Qm19x4fRl/f/8fQURyDM/vCXlvCzafkD6T/LkY83ZvFcmLNkmYxeFyfKodNmRfk1B3Fx57pV3ZOiMVbJdfVSgcu7Fji78QUTM6jRJ2nnc9ncvT5U5CgSI9ByMyFSQEGeRnRUKCDZM3CvhS5It/wQKX5gsezcfkfiNRyQ9PkuiVqbKhCabZIWCQADesaQcWTEkRtaMjjVdbppCZOmoCyJcyh8VJogIZCDBMk53ywH2vePtSbcdHf9vS70oC7YlqrGulLACOYavPogI9LuDZe4HPJBkyf9rYo/LuviTus20/zerjirWa2lRIXrEvveGwo8CiAj0u+/NnvuQT+Txz62Rp6xdGTdkpzZazJbh/7UKLDoPnmRDHVv12i+XExznBSIC0efepLxQ6caVW969O2cQ+NvB/QAR+ApPxCxY1usPOr7njMrnok3nRFZbUy/JzsNXTQ8AjE16niHWkXPWy4LtSdoRwj4ClXl3puxAIMJ/RgYAziFHF2xtGq7PtewjW+9/clVBHVGl28fEEiodMr9/w7PqsAsiXAqZCg9EXJa1NDbaAAXPTJNS9k5b437G2jm3dq+Wpcd9y2RIg97v7ftD4UzLpyA5c/Gur+YUTw+IuGAyWqfyQ5bB8Hrt1RKBcHIdNmmvy6YW6j5bHOUmm7FxyqYvjpy7Tnm9AQuO+ZZ1bz5pz/lqg4jjNn3SqXdfrouBea3ZAXUem+A+Za9t3Gau9dgKCcnrVTdfPn9vZjgEXZB/EQyIuHLxhsRvOiJXL92w2Rs0XPBN7z7tE9EIzwyAz3MbN877go/UPadstgfkbweFDSKoY3M27ZVhs9fJcG3og+MNMmKusnfrHB9xxzW3eeTcjTJu0Vary4HO34uHzVor88L2G+DxBxH+hLyI3hSUKAPdOBRIDy6IcCloKgwQMXDqcu0ZZUrTHqOldsehUrfzsCB4uNRoO0DKN+ggFZt2k7pdhku9LiOkWuu+UrvTUNt32M519W7tf8++bQOW/WXmvvKNOsvohVtk2e70rzCIOCedh02T7mMXSI9xC4PkRdIzd7so9zjH+P+OY+MXyYCpq6T/tFW279zvnL8X817dRs3VhuyEjF6w+SsJItYriBu/dLuUq9dG693IgPUxEH9crYmUqNxIPq3fwe6rqfZRunZrb32/bQt1fPaxI+Pc/cBl+3ONdgOlZZ+xBh7rt+t1VxCBrHYtPCjbZifZGPuWmYmSqb319PhsO3Y4LkvOZl6W7XOSbNw9dn2a7NtyVNL1OOejV6YasIC4ZttsTwJgoMarMEEE0dHWfcZI/wW7ZdjKBBm2Yv/dWa8ZuDBK2o5cLO1GLZU+c3bKyDVJ0mvmNuk5c6uMWJUgw1dynYfZd5j7h3vP517jX34AHrRkjy26RjTiXiDiRMpZk/01BXQXTl81wMZUWWZjANQ+v/GFXDp73aZ2Xr1ww6aJAuxsaOmSZ90OohSbp+6XYwdy7H8okB5cEOFS0FQoIGLaClkeeVh6T9sgU8NPy5RdWffkaRE50n7sCqnSZoB82qibjFBjnbD1mLQeuVSGLt8nE7dlyvit6iC2HZdJ+o6cm7zjpP5/TCZs8e5vPR6w7EA8LTJH+syPlImromRpRNpXFkQQMQCU8Zsnbs+8J08Jz5L2Y1ZIjY4jpOnAWTJmY5qMDzsqLYbMl5Hrkk3+pgN4h0cPk/Q+tuNt/4TqIdOOBSrfnydrGd2nb5KFOw7KmIVhX0kQwYqoo+dvlNbDFsiMqHNfqouB+ZS8+H55Kdugq7xXqbH0nRchnSaslQrNeku/BVHSddomlVuYDFc7GagNj+2vTpKukzfatcNXJ8qItQcDlBuIs00Xfaatl9V7jtlsnLuBiEvnrsvM9tttLH5Co42yfa4CAQUDZP2vHhVryX1rxsRakuXo2utkXo9dMqXlFkvmWzIwyqZ5khMBhS9OtkYMehAgokWvUTJ202H1N9nqm7LuyjOizipY2CYvfVhBPq7dTiq26CuDl8VLvR4Tpemg2QYkeszYIj1nbLUyu08LMxAwcEmMdJmyQYas2CtDV+wL+nkwttVt1Ox7gohbCgYW9Y2QpJ3HbHYGCZL71E43Tdkni/pFWMLrvs1HZUGvCJsdQzIl+Q+7Fhy0/1cOi1HA4YlirByxR6JXpdk+5IIIlwpEhRWJWMEiUdM3yJSdp6yhuBdPC8+W+j3GS+UWfaRk9WZSuVV/KVG9hZRv2l3eKV9XPqzSRN4sW8uONRs4W179qIo06DVRStVpK2Xrd9Le2Cip0WFowLIDMQbbd164TFod/ZUHEVVb9pGp2lgEkoM/z9h9xuRZqk47+bhma6nWboiCimVSpfUABRLzTOZN+k2XDuNWSu85O6Ru17HmaBv1nSqN+06T3rN2aEOm4FEbwUDl+/OUnSel14wwWbwrWUZ/ZUFEtoxZsFlaD18g0xW8BpLDl1gb9dc+riy1u4yWCk17yse12pj8sYOParQ0LqXHyjXsLNXaDJIXPygvFZv1kkpqP9XaDpIPKjeRblM3B6n3kwrEM6TvdAURsYCIu0ciso9ckFkKCNJiteFrtUVSY05ZYzar43ZblGqhNlJzu++UpB3HLOs/bmO6NlQxMlWBBNMIZ3XcIUf2qc/QRoxZG5FLD1m5DwJEtOozWkZvOGT1LrAsbvO0iNPSY/oWeUP9Tu3Oo6Ri895SRm2jbrdxUqZeB3m3fD1597P6Jnc6Pp/UbCMfVW8pJao1k/rdJ8inDbtI6TodLMIQrP0B2IOJRJw8fE5mddpp8pzaIswSIgEJyJboz6zO22Vu1502a2NS882WAwHQYJonCZZj622QE3oPwxgkWDLzwyEXRLhUICp8EIHxYLB3Zwy2Ue/J8lqpaorut0qtTiOlpnLlVv3kr6+XtC0N2yslK6uTHGxO8/XS1dXB9pL2o5fJ755+UVoNm2eIP1D5/jxVQQs9NhdE3MmAiM8a99AecGdpN2a5vFuhocp1gfaGG8nbCuZKVm8uH1ZrbkDjPT330oefGdj4sGozqdN1lLxVro7U7DhCpms5gcr350cKRIxYYPLlN9+LJ+/ItAZqyPJ4beCPSmmVd6cJa7T+V5Iyddor2O5rYOHlkhXlrU9rywvvfyqltLfctP8MaTZghtrDSzJy7UEDy4HKv5NPycStx4IGEaxMubBPpFzIuWbhdKYGns++IlErDgnrERxPPmv5EseTz9hsgiP7TkvchnSZ2HijrUOQsP24HI7PsmP8z8wM6EGBiDEbUw3kBpbFbSZa2XPGFilVt71F1gYuipFPG3dTID1J3q/c2IAdoKJWpxHyl9dLmB44/la52jJ4aZy8rbbwjgKNGQDHAOUHYsBcMCCCPBJAwqEotSEFZzsXHJTE7Rk29Za1OIjuzOmyUxIVyG1RILFj7gGbvTGm3npbI2Jxv0hbP8LK6bZLThw65y3ZBRHe/1zKLxUWiFiuIKK3gojJQYIIwqpdJ683nht3RTqOX6O8WtqMXCJV2w6UtqOWSYvBc6SW9ggaKNgA+QM0Wo9YJIOXxcmL6kT7LYw0cBCofH/muj6AiEdgOAMQQaQnkNPy5+mRZ6Rmh2HSaeJqWZhwU6q2GSjdpmxS0NDZHGiNjsMVLIwxIPfax1UNSFRq3kd7wH1l2Kr98vjzb0i/+ZHqgE8HLN+fcea9Zm75SoKIEwoiylevY8MZrCppkYjdZ9UmPODp9tYrD+qmdx+A1W9+hEzYmiGTdhyXAYujrQfdZ84uGaj7g5fGymAFGH3m7ZJes7fbcEb/xVEyal2KNFc7Kae94Cm7tCxlyuRZnq3PM9h6n8lwVJ/p62RNXB4g4u/erRLj6kwZvHQmeH979qQCgjW3Q+YQqy4e2X/7o3e5duCz3HJhgIilCiKaASIO+0QikAtA1uSivMtva/unZOzGNJM9/48LS1fZ77FcB/Iq+utxzg1dsVd6ztomPWZtkd5zdkrf+eGmt7INO0uLodqxiQRE+JTtu72DT8p4BYzdRs62mR3vfPjJbRDhI38o5/gli/KQ75C256SkKhNVOJqQIwfCj1vOw6nD501HLJHNtNuD4Zkyr/suBQ8n5KIez0o/b5EMG06ifO8zAunBBREuBU2FlRPB9xU6jpyvDm6n9J69IyjuM3eX9FXurU6RrYfDLWJg59Rh9lMDZdt7jl6j2/7aYDUfOEtK1+sgPdSRkvwUqGx/Ziij+eC5Mm7pLlkWefgrCyKYTVG1RW9zWk4+w20+9iWmMSHHZKL2iDz/Z9ixiRxzzpGbolvOjQ87Yv/Tc+4+bbN8UqetNXoT/MrNk7WH133aJlm0M+UrkxNx9eI1Cy9npGVI5UpNZI32Fkfpb6zVcoh0HLpCOgxZatx+sG6HLZV2AxZJx+HLpF3/xdJpxHJp20+3o5dLx8ErpMvoldKmzyLpPn6ttO27WLpP2CAdBi6XbuPWSIcBy/T/ddJpyEo9r9uhK6XTyJXyScVWUq/9aH3Wcn3GEmk/ZIk+Y4l0GHr7WW376XbEMiu708jl0qLHXC1njizRRrNBmz4yb8pCa5RYCplhh7MndHv5ppw/qVttoC7mXLNkvYunr8rlc9etsbp05rrtc4xphKwDwbXnuOfyLbngXQuCpMub1z6XnGOX5ItbnmdwnIaR2R58P4NvZ5xIPyWRe7ThnpkPEHH1mly7ckMuZV+X5YtXSIs2QyUs8YK07DBG2g1dYL+/0yivrPX3txuw2KMD3aKT9oOUVUcdhy2XLsNX6bFl0n7gUuk6Vjs3g1X+Km/0w7a96qPHpA3ScZDqYcJ66TR4pbQaMFfe/7iBdBixVNr0XajPUFn3W+iRfX+VPboYuNijm8G6HeTRU+s+86Xb4NmyOvykvP1uGck6kmMJkaz5YNtMBakqOwDAkb3Z9mE0Gn/kz3HyVfiWBomWgD2OI1vW6Dh24IwtIsXxa6oPdAWwOJV23mbNnFMdM/02h++fXFY9HDknF85ekgvnLrggwqXgqTBAxIApy2yK0pQ1u2Xs0p0ybtmu4Hh5uIxX9j1m//scG7/89nHPuV0yYUWkTFm350v33pX1vlELt8hSBRBLfCIRNOY39Hc8SEZ2bO8HiCAsWr9Df2nRe5y06DP+Tu49QZr3GReAOT7e9lv0da6fcOe9cF89But+y36TpErTzlK7bT9p0S+vcr/MzfS9mnQbIatiMr40O4M6+KCYuu4L5PILIrLPX5G02BMyrMpqid+aIg1LaoM8P0VG9dohPdvPk9Y1x0uHRpOlvXKb2hOkc8sZ0qLyGOnafqY0+3SU9Og6RxqXGi69e82XhiWGSl9teBq8P0T66Lbee4N1u0Dqvz9Yemtjw/mePefa9d06z5amn46ULu1mSNuaU6RLy1nSptYEaVd/krRvPFla1RgnnVtNl+YVR0u3jrOkSZkR0qPbXGn00TDppc+q//4gGTNhi4zssFMaNhwo7UoPl5z0q7J8cIwcSzwjK4fHypH407JuXLwcijplK08mbj8u2+cdkLj1RyRqeap9RyNe97fPOSBJem7TlP2SGn3KVrNkSGO1lnE86YyVeSL5rCwbFC0nUs7J0oHRFlZfNjjarlsxLFr2bUuXuT3DZPXKBBk8JzZkEHFN7eB48mlZNjBKVs8LkzafTpRlGzKkV/3lJkNk16vXPGn8yXCTObLv2m6mtKw8Vjq3mC5tVTftG06SDiq71jXGq+xmSPMKo6V7J5Wzyq5nd5Xdx8NUD5Q1xPRU713VT/8Fuh0k/RSsNf14tPTp63lWz+76LNVTd9VTs/KjpEubGdKy6hjp0HSqtK0zQdrWnSAdmkyRFlXGyNjRO2Vsv93y1guVZfnQ3XJkf46sHLZHjisIWKayMpkNiLJFutja/ypLZMt16ehp7F5J2X3Ski4TFPzvnH9Q9m48KrHrjkjEohTdz7CVR1Ojs2TTpP2StidLVo+Mkwz1/cspS/WxZGCkhC9LkoMR6drZ2u+CCJeCo8IAEawTwVK9O9IuF2/Wd2SclHUiatRrIllZpyQqKkoWLlwoS5YsuYOXwkuXGvufC5X9y1i0aJGsWLFCrl69WugggrnxszfFycQl22TS0u0eXrZd/98qC7clyuo9GbIq+qgfH8nHsSOyLj5T1sVl+h2/N7NOAasu+q4Twe9NTU2V1LS0B8KH9Fkphw7JIeXLly/J6TMX8gUiss5e1l7jRVv2+djRY1KxSiNZHZOpdpUmY+ZvlfGLFfwuUdbtuEUKhhftlG1Jl2V9fJaMmbddJiyNkHELdnq3u2TMgq2yOjJT6+s12Zp4UbanXrm9TdDtIe//KbpNYntZth64JNuTdXvwkmzT7baDygcue84l6Tm9dhtb517K0v+3plySTfFnpX7rnrJ4/lLJzjot++KSJPlAiuyP18YkKUUS9uo2MVm3B2ybuP+AHNifLEn7DxofSDgoifs85+yaJN3GH7AyErSslINaFlvKjE28Y7tPtwcSD+ozEyX75FmJ25wi2xXgD5q5J18gYr8CkfTYHFm+fLk07zBYNiedk+krtbOh8h+LjJd5ZDxuyS6Zsjxatqj8FirwGz1vm4xDT4tVP3pu7MKdur9TZXRZbSdS9ejVkx6fqP+PnB0mC7cne2SsMt2CTA9dlS0JF0y2WxK9sjb96Bb9ePW0LVkZ/cC6z7HNiedlXWyWvPdBGcnKPC1pqYdNZqYHR3bebULcgVyZJrNFTxxX2R9IZKs6QU+qkyT0pPrx6IljnnMePem16EnLQA9JiQckNTlNolYdlLiNydrxSnBBhEvBUWGBCBpnzypvxZtpZFmxslaDZnIk/bBUqFBB6tatK127dpXOnTvnchdn26VL7r4/53Xcl3Pv79TpjmOPP/64OcfCBhGsgFe3/QDpO2uLcphxv9lbpOPoxTJhebit988Kh4XByBIOdO5u7NznARHtrR7WqVNHGjduLK1atryDW7dqlcv+50Jl3zJatmghLZo3l/Lly0vC/v1y9sKl/EUizl2WIwmnZNfCZDmReVw+q1FXNiSe1t+2Xso27CStRy2RFsPmS0t4xEIpUbmh1cMZ6/dItfZDpeXwBcYths6XNqOXSsmarWTi8u3aGF3yroB41mfrqcNhrKiofLftbWZlSr+tU6b+v+3wZanftqcsW7pYWrdtI42bNJLWrVtLmzYqK+TeWrlNa2nbVo8p2/8BuI1ew332v+17tlaGd9tWy7eytRz+Z9tSdVHu0zKyd0+CrBi5WzZsOCCDZ+cvEhGx/KAciVMQsWKp5UTQaWjcZYA07DPNZN9cZYysmw2eJ426j5blkWnSR31XFdVDq5GLTU/oofnQefJJzWYq6xyp2rKXTe/kOPe2Gr5IKrUdKB0GT5adR6/56SewvpDzXZnrlT8sVU7iYmOlZq2a0kLrp9V7r+yQVRuVnenBRz/sm4yRt27bOjL36iWXfa5x9Gg643/dNmrUSBo0ri/pe7PlcFyGjHUjES4FS48yiEg/fNiM8EBSktzid1+5IteuXpWrus04elQOa481UxsPjl1XmcDOPtuLFy7IdZ//jfVe59gNldH5c+esrMsqTytfmWdVrFjRHGRhgwhyIio372lz3pkBA8/YfVYGL90rY5bstIYkkFweNDsgop0XRJQuXVp2R0Zqz0h7S6oPhw8e0B5VovZYfY75MufhQOd82bnGt6yEhASpVauW7NixXc6rLPMbiTidcd4y30+ozj6rfnt2Roexy2Xu3msyM+a88ezYS1K7/SDT0exN8dJ/YaTMir0oM6M95+ftuyYthsyVySt22XLUgeRW2MxzWGxqwby5UrdePdm+bZukJGsPNtErO5WXo4N76eGOY9zvd32ga9D3Z5+Vl107ImTP+hTZtjNVBs0KPRJx9dp1Sd1zQs4euyLLly/1mZ0xxvJwZsZc8OjBZH3BZpIt2ZksIxdtk8HL98nsuEue88ozlBt2H2lLv3catVim7T6Te++cuMvSf1GM9J6wWHYUss8rWbq8hG3eJE2bNpX9+/Z55OWVIf9v2bJFz2+W6N27JVnPcd6RKdtErc974+PvOG568J53OCY6WsJ37fKcV+Y+IrIlPykh0avTZM/qJDcS4VLw9KiDCHpCkRERkp2VZY3ASXVSaamp0rFjR1m7Zo2MHTNGNm3caGCC649lZBgowPgmTZpk+0fS023r3H/MC0DYX7hggYwePdpzTpktzypXrtx9ARGBpniyT5b5mKXFF0RUrlzZ5H4mJ0dOqxxytIFA3pMnTpQZ06fL9GnT7H9kd0rlkqPXcB2y36rOFVlznPMchx2dnj1zRjZv2mTDSHavls35LJUtPb5dO3fK+Yv5j0RkJGVL5LIUfdZxqeADIlozO4NMfR891GjTLxdE9Jq1LXdKJueZJtuk3zSZtCL8wYKItr1kvoKI5s2bS6I2WsjLkSHymjB+vMycMUMmqS4Y/nF04MgQ21i5cqXpgP9h535HB+g1WhuqWTNnynGVp6MDjtevX092bg2XdRP3yKbNB/Mdidi5MFEO7c6SFSuW+a0TcecUT2Tdc/JqWbIrWUYs2OKZXRSR7Zm5oudYQK1e52EGItoNn2eJxpzjXmY99Zq1Q3qNX3hfQMTWLWEWrfStp+hjT4wCl969ZcO6deaTAF/IG1lmqYzZBxzMnTPH7uO4oyPn/+Pqu7gOv7Vu7dpcW0NH2Fap0p9IhtbNjP3HZewSNxLhUpCUPxBx+isFIugBY0xOQ4SBEl4HCIxRgx0yeLBtmzRuLIsWLpRu3bpJt65d5aOSJWXChAlm9LNnzTJnShlc26NHD5mpDpOebq9evXLLh9m/XyCCBqoaIIIpnl7Hyf7DACKQOw0QMsKx4RTbtWsnkaqf9rpdrCCA8e4F8+fbOXQxWR0iodhN2kNDB/TU0CG62LB+vR2L0p5bvbp1ZeSIEXbO0QPXNGvWTHbtyj+IIBKRnX7ekg5tOMMLIkgabcM6EVFnc6deAhgcEDHLCyKmhKuOaKCUp+/OKXIQsW/vXpM98kFWh9VGsAWA9oABA0ze67UhmzN7tsl1/rx5Mk+5/GefWcPEPlvqLmVsCQszHYSHhxswxxaQu6MH9F2nTm0J3xEpEcsPyNbth/IdiTiijf75k9dk+TLfSISCiPUKIlgET32dgQQ/ENF7XriMXHNQxm8+Yus2wL4ggtVaHQAC2LjfIKJDhw5W5xwZ4S8Awe3btzegjf/Bt/Tv39+G5Mi5YggDG6lWtaqMGD7cZI2e0GWqAr9ePXsaCMF2SpcqJStXrMj1SYC8QykpUqZcadm9PEWiViS4kQiXgqf8gIh9B09YUiDX9urT7ysHIjCoKlWqqDNaZk6SSAQOtG3bttJbnSBGvH//fnOINGoYJz0AohGMrzPOCABprg1Uv379ZN7cudaboHzHKRQGiLh48WKASESOVGnRUwYtjrWVJVmqd9iKfQ8liGB8mNwFdDBs2DCL6vTp00c6qYMEXJDbQA9tuDrNidpL7te3r0UtKAOQQS7Kju3bpXv37uaAafScBhIuCIg4nXNW+s/aL9kKIo4dzJLYNelWZu5wxsLN0lQBAVOSAQt95uyQcZvTpWbb/gYi5mzeJx3Hr5K63cYqj5F+8yJk5LqD0rT/9GIFItLT06W2AmF0AAijLo8ZPdrqeEdt7Mgnos6zP3XqVJM1AIOeL8d76P+E4fuq3rCXTdoYOrYGe0BEHdm1LULCZsZL2JZkrduhRyLwR9vmJEhqZLasXLn8juGM1sMXS9VW/W2xrsZ9ptj6D72mrDEQMWrRdqnddYxNGS/XsKt0GLPCFo5q0HWEbFQQ0WbILGk3erm0HDJfeZ70m79bes0GRCx6oCACMFandm1r/JcpaACYARZqVq9uYGLgwIHmxwZph2fGjBnSX/3OmtWr7V6SuenY7FGbaNumjZ3DPhw9OyCCSERm8hk5rv7djUS4FDQFAhFXrlyxBgoQgRE7FSnj+EkZsyhBBo2apg3rBguTfRUjEYwJ00jR8F9SORAuBzgMUiDRRwHDIDVYhjN6KrpnbJHGjR5BfFycHFUgQeNFLxjjHjVypKH//IIIx3H6g4ghc+IlKSlRmNGAvmrWqu1JrEw6I5WadpeParSWlz4oLx9UaiyN+06VQUvibPrtQwUi9uyRDtr406OiN7VeZUpjBGhD3gNUvoznDhkyxMbyAXJcD5gDMHTt0sX0w/l2CgDpTTvlw8GCCBpSeuSO/NHx0Yzj0m/GXsk5f0WG9BklUwYslBR9/wo16hmIGLt4i1Rt3V+ee6uUvFO+vnxSs7X0W7BbanlzIuZtTZTanVmhdYCtcvjc25/YksvNBs4sXiBCf3eDBg1k44YNVuexhcGDBlnPFlkjvyNHjhjAjggPl3mqA+QOgGB8HhC9c8cOAyDYC7oMCCK2R8iOeftky9aUPCMR7PvaQUZGhuzckyZTVx2y2TaTxk+Ww4eOqj3OVxAxyHxS2wETbHn91z6pastXtxw639Y6cUDE6MU75KOabWx10PcqNJC/vVPaAHeDbiNlo+qxtYKI9ys3kbfK1pLPmupvHreySEDE1q1bze9cvXzZ8qvGjBplvgUwB4BgiIPhIjo7O3fuNNCAvAEI6AXgwIwzhlaHqj0Avv1BRNlypSV88UGJXLJPxruRCJeCpUAggnHPJHUYgIjFixfnVqSkg4dkzOIEeer5t6lU8qk2hJWqVJNB01Z8ZUAETCPkhMX5n8ZmjiJ/ZIFDxEjpaeFYiVJM0x4YzhWHiGHiPMePG2dON1YbQv73bbyCBREk/m0mkUp7Db7Oc+HyjdJ30lZp1aqlzfKg51G6dBmZvj7GIhHVWvWRNqOWSpP+M2Tk2gMWwn3YIhFsD6r8Vq1cafI6p3UREDB+/PjcMXqcIjqk58s+W8Z70Q1lMNyBHujFMRRCw+boFA4WRDAdd/LkybnyHzp0qDrrgVK/01Q5f/m6vP326/LNb/+7fFa+vJQsW0lBQo4tpNVEwVs9bbhYXGvspjRhuWlnOGPulgT79kjLofNUNzG2lDhj88UNRGALRB8cHVCfGdJAB8h7+vTpJiPC6wsUTHOMiATAi3uQO9cyxLFB7YWGztcW2Gc4Y9eOSNm5cL9s2RZ4OANdYAv87+hh2NAhMn7mCpm1/ogsXbpc/vEf/0H+9MfHpcJnn0nTzv1tdkbrvmOl88S1Ur39UAUKq2XsxsM2dOQMZ4xatE3qdBsrDXtNMl2wkN2YDalSv8tw2bg/W9oOm2Pgo1bHkbZSKCuzPujhDGSEbZC74+gGUE2OCkMZuxQo48PQ1Yrly2XNmjU2zEqnhuvRwzoFb+iIHKIItSMipU75Doj4pNQncjLtjGQeOulGIlwKngKBiPnacyZ8DIjAgToV6UBymoGIl9/6RH7w/e/JZ2qsVavX/MqBCJgoi7OPEV84f96cKMedcyQmsc853+udYxiww845mGcFAyJGak+D62g4fUFE9VqNpG3vKTY161/+5V8MSDz9zF8sWW9T0hmp2KSrOcWnX/tQ3v60rnSdslEGLY17qEAEzD4ydv5HrugAZtaLc47/2YfZd64n+uPojH3fsuFgQQRTT82xe+U/duxY69E16j5LzimI+KhkCXnssR8qqC4rJct5QMTYRVukRvvBUqZ+R3lG9VChWU8FdMn2eW8bzgjbL22GL5SS1VvKc9r75ZsMhNn5DkZxAREO+8rUVwcOO9cgf0fmTgPlXOPox9/O0EmdunVk57YI2TQ9TjaHJQdMrCT6wxBjijZ2jh7GjxsrU+aulZnr0mXV6rXyn9/+njzx+NMK5j5VEDFAdqRfteGM+j0nWkToeZUz34gB0PWaujZ3OKNii37yeqnq8vhzb8hnqie+ZGsgIiFbWg2cLhWb97Vv9zz+tzftM+Esdf0gIxGOnBwfw3F8ha9PcuSK/JGz43+c+7nuvFcvXOtbtm8kYueigxK+aK8biXApeAoEIlh8qW/fvl/KiTh+IktBRKKMnbJQeyTRdm3/gYO/UsMZ/nz0yBGLJDjZzndjrmdLudznX5bDwYKIbdu2Wa/BfzgjZn+6DJkTp+BinCVQnVHHQU7EtLXRNpxRsUk3+8rpM6+VkA8rN5U26vgGLYl9qIYz/BlHB7PvL29f9j3mXJ8XBwsiAA30gh35oydsY/C8A3L6/FUZM2iiLJm0SR14jlSq2SB3OAMQ8VH1Ftp4lbFQOJ/wrtVuYG4kosXgufJB5cb2hVqGnfi0d7MBxScSEYjvpQPfa/3/D8QGIkis3Bkpu1celK3bA0/xZOiCNV2YPeLogZyImIRMmbwyWTJUTz2aDLUPUG3YsC53OKNV37EyYFG0VG090IYranQYZrkpDogYuXCrdJ60Qep0HS1vlq5h34jJBRFEIobOkdYjFts3Y17/pJp0mri2SECEwxwjUkyU0pF5XuxcD7OwmhOh82cHRBCJOJWmoDDVjUS4FAIFAhG7d++2KVv+IMJJrEzJOPuVnZ3hyxxjbL1O3bqW5Mcca4yXsCF5E8zdJiwIYCBMyPRPGkLG6xkOyatBDBZEOA7UH0TsPXjcOzvjy4mVNFAMZzCnffjK/dJnbrg50YdtOMOXcYI0biS1OnJGBzg/Zx9A4DDH0QlDGYwH59UoBgsiaMDYOvJHT75TPM+kX5LY1Z73caZ4Mjuj3agl9hVP8lFIch29/lBuJILZGX3n7rQZNHzgqdvUDTIu7GixSqz0ZXTA8By5ENR9ZOcAZRon9GKyVzY9qCw4zvASYfi8bIHjdevWkR1bw2XtuGjZuCnwFE90QWQuTe3N0YNvYiV2cProZbl27gtZ5jc7Y9ymwzaUxPdjmL7pP8Wzv9oHU3Enbjmq507aFzyd2Rnth8+z62FmbUwJz5aes7YXGYggysCQETlazNRg7Q78EjaA/eCT0AvnOIZeGIIi74ThvEC6dUAEkYgdCw7IroXxbiTCpeApEIigYXuU1onIC0QQJty2dau8++67ljj2zjvvyFtvvWWJSWXKlJH33nvPpg6S8DR48GDLmaC39LOf/cxmAwQqEw4WRJBVTTa7P4gIap0IdXZ8eIxxXj4+NnBJ7EMLIjhGHgrynzJ5sgwcMMCm2CKb3mT9a8PG+gOsJUGCJdnrRA9++9vfmq6cMLA/BwsiYmJi5IA6akf+viDCFps6dt4+0ew7xZN1ItqMWGjTAzuMXSltFVCM3pCSCyKcdSImbtfz41dK6+GLZKw2dsUVRKAD5ECdnzhhgiXqMUtm9apVMkDrP/qwMXqts4zLMytm2NCh8tRTT1miZV46oFwiERG7dkvcxlTZtjMt9Cmeyz0gYvO0vXJg2wlZsdJ3nYgxNnzBx/oYqqjTdayBCiex0kDEwmi1kUip0LSn1O48ytaVIBLhTPHkQ3SAPdb5YPE2T2Llg8uJ8GWGJUaPGiXVqlWTqlWqSMmSJeWD99+3Y2+//bYxq+M2a9rU9MBU8+p67fe//32ZMmWK3e9fpm8kIiv9nJxMcyMRLoVAgUAEmeh71Zm4IOK0OUPWg6hfr550V/TP9Lbyn34qH3/0kTVsJUqUkAb165sTxbkyfs45Ei3z6gEHCyKYLufkQ4QCIohE0PN6v2IjeatcbWnUZ/JDPZzBMSIKpUqVsqQ51oUo9cknBuyeffZZmwEAuMOBTlMg0aZNG2ms1zz//POW5FdQEME6IKx/4MjfF0Rkn7siR/adlB3zkgxE+C42RSSCr9EyXFGyegvpvyBSarX3DGcAIpj2SZTonc/qybufNZBBi/cUq8RKX0YHsbGxUrZsWWvASCKtVKmS1KhZ0+TMVE4aM/KksBOSKT9VO3n99ddtZsbdQIRFIraEy8oRUbIxj2Wv2ZKYSW6Eowf/dSIyU07L5ZybfutEjLHZGFVaD5Q3ytSUSi362HCFM5wBiBiwKEaaqtxf/KCcVGjWS0atT5H6XW+DCBabAkAQSRpinwEvukgEIGDcuHFSS+X+kfoZhp7r1qkjtWvXNp0QAX3hhResM8M0UHzToEGDDIATQQpkX1+KRCxwIxEuhUCBQAQr+zFVyAURp22KIEtUY9gj1Bk6hvnWm29K0yZNbA4987XLqXMl8YteF1t6BgUFEax/MGfOnHyBCJze66VqyMslK0m97uMtsfJhBhEsVgSIqFGjhq0kyvS19u3ayZuqB2YLWJKvyp1lzPkeRk/tgdHgsW5EQUEEYGX27Nm58vcFEfYBrszzcjielRnvjES0H73UhjGee+sTebdCQ+3tRtyx7DUgYqD2gl8uUdF0BaAo1iBizx6LwLFeAVEHwEFNbczQAfW9atWq1gOuXr26gemGDRva4kfjxo69K4ggEhG5a7fs33ZYtocH/gAXQ0rUEWaNOXrwj0SETd8rB9Sf+UciABHkOrxdvq7lRnwZRHjA2ysfVZLKrfp/CUQwDDJ8VaJ9/6TLpHXSqwhzIkicBBg3Ud9TX/0Q056ZaovuXnr5ZTvOwlNwTbWVDz74wGwAEMGaNoH8nG8k4tRhciJOuZEIPrNMstmDYhrbQMfz4lCvLyhfvnzZK5kvkwsi8gYRODjGFkH39IRjY2JsXQIWfKFHjCNlDJLGiOmETGNjChs5JTR0gZwAHCyIIBpEGD0UEOHJieitji9T3qvUSCo27yPtxyy3SMTDnBPBuC9TaZluiIxXr15t0zxfUccJmCOMzgI6zJun0WeFP6YfEjnKSw/BgohZChxZMMmRvy+IIBJxOP6kbJmReEckwpMTsVh6zNiqemgoNTuOkCHL9+YmVpITAYjoow1SiWotpGqbQdZQFcfZGTAypKFhyIiFp4i0IWMW+SIKRG+YsXrG6BnKoyFEJ1zLImB5AWr0bZGIsHBZOjBc1q9LChiJIAJB5MN3WMk/EnE8+bRcChCJGLMx1daK+KiGNqydR8hYEit9hjMYymg9crG8VxE9DbtjOKP98PkyTkEI4ILzrYcvNGBYVCACeeEXmGpu3zlRmyFvCyBdRQHbXLUPciI4zhDfxo0bzWcxHZ3rA+nBNxKxc9EBd3YGBDp73xtau99Mr4dxKfbpscKEkirC3n1frqTHCPP5l3O/+MMPPzRAkBcFAhGsxsjMgEcdRMAYrTNt6rQaINdh3DRkHKOHxf9MOXSmW8G+Y4/+ziBYEIEjoSELKRKRlCOVmnaT/gt229z40nXaSYsh8x7q4QyY40xbQ87Ijy3Xj9IeMLJ2ptny8TTYmeYGByoPDhZEOHpw5O8LIrLOXJZzJy/K0YTT5oxvr1gZJg17T5RuUzbIp426ymdNut8xO2PO5r3Sfuxy6Tp1k5Rv3F3K1u9kIKM4z86gHiNPp56zJbGYiAT1k0WQ0I2jA87DLNgWqDwYvTqRiAO7jsqOyMCRCLaAOd9Fv/wjEVtUHwd3nrzz2xm9R0vbUUttGOO1T6pJqbrtbRns3rlTPD3rRDA74+USFeSTWm1tKm79riM8IGLEfItcfNa0h+qph55vIzU6jZA+E5cUCYjgGPqhfsOOfyLhNC4uTi6qfjjGNXwgEPmz7+jMKcO3TN9IxMnUs3Iixc2JsNAj4U4EBCq7X0z2K8ibbypgfBgUyiAj9rD2YBmDoqFymHvo2ZIYxlg72cv+ZRYmn1DHR7IfPbO8yE2szBtEYFw0NLnHvMaHEWK4eTV4vsz9lON7LFgQQU+adTpCAxFnpELjLtJx3Cpbia9K6wHSfsyKhzoSASND5O44QLZciyN1jjvnnPO+//vrAA4WRISFhVk+gCN/XxCRff6KpMWelM3TEszeKlT3rli5aIvU7jhcGvebLuUadrHVKYf6RCJYJ4KkV1YTrdisl1RvN1iGry6+kQjYkaGvXEPRQSDmfiIR28N2ycK+O2Td2iQZPCcfy15fu24fQruUfeNL384YumKffR0Vm2BIiURJ30hEt2lh0nnCWosy9J0f4fl2RpfbszP4n5VFn3+7lAG+Br0mFxmIsE6F1xb439k6wML3Wof9y7nDpylTnhOJsBUrF7srVtpiSSSTnPM6+vvFNAaE11566SVbDplMfRK+WKWNrwMScSA7liSjqVOmWAiW9f5/9r//a9MAHSR5v5jyWT+dxLC8KBCIYBrjdgU5jzKIQH4kcgH2AIusEIcxcg9gEcNjn+MANsAhxskWpgwMm/tXrlp1hyEHCyKoO6EmVnqGM/ralDVWQSRRjG80PKwgArmxTofTuGV55ejIk21ebNd69xl2yu+KlSyBTm6KI39fEEEk4nzWJTl+8IzWiTs/wMWnwEmm/LBKU6nVZZQ1Zg6IYDijnzZY6OXjGq2kWrshMmLNgWIJItAJsuMc+yZbtl5d+R6747xufZkhKZZb5pxv2RaJCI+SlOgM2bn7sAwMEIlAF4TqWQnT0YMviOArntvmJkhKxCm/r3iOkfFbjlrD/0bpmjYsMYbZGb45EUv22EyaVz6qLJVa9LUEytzhDG8komKz3lK6Tntb/bIv30MpguEMfA5tG3LE98DIz/FBnCcigf/hHMeo45znf8pDtwzHkuvl6NkBEfbtjJQc99sZEIJmPXEnfHO/GKUwd/qNN96wZDqcDWOyJBuRKc4Y4ccffyyfKJOxzCp3JB19okCDHub9fj8aq1XagIUKIpAfHzp6VEEEesXwmMaGsZFMSSPClELGGUlUYnyRb2MwFslYPWsSANi4h7F67qNMnsG3HhgicpxnsCCCLGzyU0IBEZZY2bKPfbK4ifaC6eX2mLn1oZziiR4AbKyeSgOGfKnPRP9Wr1xpzpDxYbZE3PhgGtcwRmxf/NT/WeEQZ0kjyDcf7HPIXudcGCCCSERq7AnZOHnfHZEIEivbjlxk4/GfNe0l9bqNlZEKEnynePaevd2mG1Zu2d9mD9B4FTcQgQ4A0dRFkludJcTxe+vWrbNll1kACn9G/gMyZ6lykjC5ju/GcC1lojeWDKeRo1zKR98Widi8S+b12i7r1iQGjESQWEmnzH+xKd9IRPr+U3L+5PUvRSKYOtt1ygYpXbejfTuD/++Y4rmIKZ4R8lGNltKk/3Q77wsiWJyqRLXmCkJqSIvBcx74tzNg5Md0c76JQc4VuSnIdu3atbbsPdF3FkQbonWcb2rwHRkSMNEFXyHGZ5EbQZvDmjf4KWfxKQdElClb2j5pv3u5+xXPBwYiMABQ4XvvvmsfqWEOOxn8ZMi+qcCia9euljFOQ1VFnSRTo8haZssHU3wbrvvB+QURrE/AR4seVRDBPs4SI8QpEtVieAo5Yrg0WHyREJ3jSJEV2emACnQOwOAjXESCGLtnqqYv8g8WRLAyHR83ChlE2OyMU1KyRgv78FOjPlNtGtvDlhPBPrphpgXJrcyCQSc0aMia7wMwVMciVIB05sfjQPmiJEOG5AItUl0hbwADNkdCmqPrYEEEDSQrhzry9wURFonIvqQ9uLPmjH1nZzDFk+9ivPpxFe3h9rZ1IfxnZxCJIFLB8uQ2O6OY5USgAwABU5gZ0mGYmM7RKPVzFmVVHXCMzhPTPKn/+F7WTuELrERh0RdlwvzPR7gc30z5RCJ2h0fJoT3HZWdU4EgEIIKZOXklVhKJ2LEwSVIjs74UiSAxsmbH4fJm2Zr2tc5hqxKl99R1tyMRC6OlzYjF8szrJaWMnidixFc8HRBBomWp2m3lkzrtpNP41UUCIhg+JUkYkMx3XPjo3759+2xqJ6CZac6sl4JdDFfQDXjADtCDcz2J4ORG4JeaNm1qkQrK9o1EHEtSH5SgtuJGIh5cJIL8B3qiZCLjoEhIJAGIYY3WrVvbx1C4BkeHE+PrjizQQpja12HeD8ZZ5gdEOEk6jzKIoNHH6JhlgSHyPw0Tw1Kgeqat0WixVgSRCgOQ2shhuMu0LmDI9KJxnDjZ3doIPUgQwTjuxzXbyPPvlrHM9Idxiif72BQgDSeIA6VXy9RXgBw9M6J+1HF6vfTOSKpGp9gZi+1M116aUybOlOOOXwgWRNCA2b5X/r4ggkjEoZgTsnHSXnXG/pEIvrOwQ14pUcHWKCDZ1XedCCIRAxZGyZt67oX3yhrgKG5TPNmnkerSpYvNUGLVSBqd4Qoi8GeAK6Z1Ag5ouOgBL1HdACjwcXwEil4vZVHvOYZenPF7dOPkRMztvi3PSAT1H8COPTh68I9EEBE6e/yqLF9+OxLBB7iGrtgv9bqPlZc/rCCfNurmmZ3hM5zRe84uy01hqm3p+p0CLjbFNGm+xtp5whpb+6MoQARroNDBoyNDm8OQc/t27az+80VbZEsdB2izSmh3BXl0bujYci8fSMPnoT/Atz+IIBIRvSpVYlYnuZGIBwEifBVMbxMlYyQYBxUAZRMucrJjyZQls5nzXMvxvMorLOZ98gMi+LT0eX3XR3k4gwYGIMAsDKay4fgIiROZYEnwffHxskV7x8nJyTa1kLFejLthgwYGPMgiZwiDsXh6x4RwqQc4TeoA60rQMN0NRLDqIoYfKoggZM589hfeKycfVmsmDXs9nItNoQdAAz1eQrHIkZVB6cmyGiL/szolw0wcYx48oIPr+aYI+kO3AEBC6YDBQ94Fdxx7o+HcsWP7XUGE86VER/6+IMIiEacvyYlDX45EtB6+wMbY+eZCKe3FEjJ3PgU+e9NeAxHV2w2Rt8rWtmmeAxcXv3UikBUJ4sg9PjbWpnQix+UrVtjMGFYEZWozU5yJFtFBYjohw3usEwEA3KE64Qus9JzpTRNOx97QAVuWZA7fFakg4LjsyiMSQf4FuvC1A/9IRPiyg3J4z+k7IhFt+o2T/gt3q3yb2YJftTrdOcWTb2cwDbdUnfbyQZWmUqP9MBmzwfPtjNs5EYctsbJyy77SpN/UIllsCj2gG0CBTTNXH4SsGc4DQOOjOE99x2dhS4AMIkWsXYNOWCIeO+A4y5FTLs+A6Th+UvpjORx/StLjj6mvcCMR9xVE4Cyc5DlH0c7WOc60JozRUZJzTV77TrIe/xcW5xdERGkl5L5HObES3eHsIvUcgM8BiWx9ASPG7ew787EBi9xP/aMXB3ONg/hxqK+/9pr14gxE7A4MIpxwcagggsRKTwh3hJRr2FU6jFv5UH7FE8Y2AGXoiJ4TuSrIGt1ha1wP4IMB7cid62nYSMLjPNdyP+PH6MSxPc4TDl69etVdQQQRRT6j7MjfF0RYTkSekYhF0m9BhE3vZJbMsJX7pVa7O3MiBi3aI5W0carYvHexTazkf9YbIEmYOgywwwbQBzpDpsifc2y5B9thdpEDnonGAraJUqA/x/fRsFWpXEmWLlwpc3vkHYlAF3f7dsZVtYODu4/J6fQrd0QibDhj8xFpN3qpfFi1mVRtM1DGbrozEkEEqMf0LfJ+pcaWn+J8CtxAxPB5Mm5LhtTpPEoBeXNpM2qx9C6CSASMD2G9EmTu65OcIQr20QWMzOnc4mvo4NCJpTzOscYHw0KOntEben/vg3dky8I42bsx2Y1E3E8QgaJQAmFRQms0/hgOyUdUcAwFw8FxwZzHULiG/7mO/3Fgzr0ocevWrVamvwEXhHnX/IAIsqBJBnyUQQSMLvwbtbsx11Ln0KdzDH0zu4AoBR/NqVu3rjzzzDO2miL15W4gAidMjyNkEEFiZcRpG2v/pHY7aTF07kMZiXDY0Q3nHPtg62srDjCAOc49znnu4zh6oScG0GPoicWLWJZ53bq1cvZ83iCCqEZey1775kSc1PL9cyKIPrxdto4luPIRtFp+i00NVnD3YZUmUrZh52K9TgRrpPjK15GroxvnnMOOLfheyxZ/hw7wdawvgd5fffUVWbVytaTEZOSZE8FiU6yWmVdiJZGIqNUpciT+zJdyIsaHHbWvd5au11Ea9JzoARE+iZXkC7UYNEdKKMjgvAMi+BR4y4HTFIAstw9wocveRCFmF92Klcg70PG82LEFxyexRRcAQICe830NluovXbaUbFkWLYfjMmScG4m4PyAC5WEEhFIJJWF0JLMQ4mbbrXt36dunj4VZGatiJT2mfvI/43ksT8p1jE+hOHo4JOGxCh89JxpuJ2O2MJjKkx8QQcNFFvCjDiIKwtQVwCLTfkt8+KElhZGcxtLALFCGc7x169ZdhzMcDhVEVG3Z26allazeUt4qV0ca9ZnyUIOIwmB8AvbKzChbFK5CBfs4FEMg6OD02Qt5ggjC8fEKBB35+4IIi0TsCTw7o/Ww+dJ9epgl9DFc0c8vJ6LXzK3SY+YWead8PVsNsTh/O6OgjD3g55j6zmw1Ft1j1Vd0QOLqpXNXZXbXsDwjEeiBROaDWkccPfiDiMTtR+XUoYtfikT0mx8pdbuPsxyh6u2GemdneCIRIxdukQ7jV9t6HiVrtJKqbQfL6A2eKZ6bEk5Lwx5jpEqbgQpE0q2c5oNmq063SK8JRQMiCsKURweXYT46Mx8pcGC24PvvvWdg+mhGuuzV37k/LEVBhBuJuC8gAgdHyNoZ56NnSTSBZDrWfWDslexkGgvGUUm8wzGyNgTJYH379rVGCzCxRht3wqtMOyOjlsgE5ZIJXVhGnF8QgdHSS/6qgYiwg+dkqzqZpRFpBiLQ3f0CEdQVhjH4Aijj9YwXAxJZ7z5L9fv555/fE0QwhozTDAVEbPYuNlWn6xgpVbudOc7m2ssqniBCe+v3GURgSzSM6IFZMiT/kRgLiCBE7+gg+8z5PEEEtmmfA/fK3xdEeNaJuPildSJYbKqaNj7lm/SwrP5yDbpYj9cBEXO37DfAUK5hZ8uXQFdDlsU/MBCBLYQdPG9226BdL23g59w3EIFOiT7QUNGJYkqu6UCBhKODSxeuSMKuw3muE0H9Z5gVfTh68AcRcZvS5HjiuS8lVtbvOcHyHT5SIOdZJyLt9oqVi7dLJT0G4C5ZvbktEz9qXYqtWEkkovXgmZZUybAgi4YxVbR3IX47w6OHCxKWfF5KlP5UtoRtvm8ggvaQDi8fTONjgXRsScgkOZnnoYe929LlQPhhF0TcTxDBmCzJRCxExEdONqkRMI8dQMH4OVNtSDwiZMpaCyTYASZIbiERiXXluyjIoGGhPNaXILOfCAcgo7AcKRWQcTJmh3RSEAFICESBQASNEwDiKwMitOHcokYalnzO9mduiJWyFavL3vg4A3j3A0RQHrM2+EAXw1/UD4wVZ4isgwERgEpm+oQCIlj2unLzHtJvYZR0nbrRllUevCyu2KwTYU5TdbEt7bItDd2mbVuTx/0CEYwb0wMmeY+ZU6zhwXoDgGvqezAggsghc/Ad+fuCCL6dwYqVYdP23xmJ0N/WpM8Ua3DQAWPu9ICddSLmbN4nnSeslh4zWDFxk/JmmbA144F8CtzRAXVhQ0KOVG3UTsaPG2szVe4HiMAPMZxXS22BvAoABF/CJeLp2MGZ7Asyt8cWWX+XFSsZPuZ/Rw/+ICI+7LBkHjjvF4kYLWM3pNoH6Zj2DE/acVJ6Tl6dO5zRd0GUTI88bef4+u0k9Yn1OntWrOwwcoElWnaZvF56zdkhU8OzCu1T4B6fdN5WmV21J0PefK+kdj6X2PAZEenCBhH4JKam0x4x04aoeSW1O9ooRw/xYWmSuCPNBRH3MyeCMnFKTCdjPQi+0Q4AYGlckuaIUDDtD+SNwRDSZsgCpZGZTBYtwIPEFotiaIXhPrK/mU9dGO9M5WPsiy2yqFevnly9etUrnTspEIggeYfFdb4SIEId5np1BjPWx0jPMXOkfrve8vI7JaXcp59ZL/9+gQgcZ9PGjWWw1kOmu+FAcYRQsCACgyeLOhQQQQPFFM+ZUeeUFTApz9h9xsbjixpE0HhtSjyj+siWJRGp0qbPGKlWvbp9IA4wfT9ABPbEkGIntTMABLkoTAN16nswIILOAgv6OPL3BRFEIs6duigZ2hhjc7dXrNxkUzznxF326EB5WvhpqdGmX25ORG9tjGbGnPfq6YzyOWnSb9p9BxFE4kbO2yCt+4ySMtUaygsvvy5Tp06x2RT3C0QwzZkoLXk+6IBOmK8dXLpwWfZtS83z2xnogSFgFg9z9OCfWLlPe9Enkv2HM0ZbjoMHIJw0nuwHIhhmmhaRnXveF0S0GzZPJm7PNB1NVzviul42O6NgIGKjAge+nzJAfWejjv3lnU8qSomPPrb2hMjx/YhEUB7fb6Lt4qNoAHdyTXz1ELvxkCRsO+SCiPsJInByjKUzjWbPnj02CwPl8CzOsfXd5x7nGBmyGNQZ3afRYqEq5vNitCTfkcFc0IrD/XtiYmxlxUaNGsmTTz5pYVwamkD0VU+s5L36T1okb5QoI2Wrq8N843155523TVY0Hs219+V8TAudFQaj22NqnGXLlbPFxQAQOEKHggURrIVAuDekSIQ2UFVbsthUtiWDwewXdSQCADFvS4J0GTZVKtZtIc++8rb84c9Pyjy1VQAuIIKphNgCdbgwGF2wQiXrGLRt08bC50TmHB0ECyJovBYuXJgrf18Q4XzFc+vMO7/iaTkRIxYagHMaJ1YRdUCE5UTM3m49W+c8QINVRu8XiKDnuzQ8VUpVricflqsmH35aQ377+z/KgvnzTAYMtTElmfobSJ75YdOByhBfRBSWRozl/x0dOHZwNvuCzO+7TQFe3l/xBHwE/BS4NxIRs/aQZOzzT6xUELHxThAB+4II1u/wBRGAjFwQ4f0UuHNuesRpBX8MZ+QfRGxJuSgTlm2X198vLaWq1NNOzcfywgt/80wXV9/NcAZ1D9kFkml+mLLo2JYoUcI6Jw6A8NdDws50SYlKdxMr7yeIgFEKhkb5TtZrMOx/LYql8WLfcZ6+50Nl7ifrlixm1iF4+eWXpYX2tPMCEFAgEEFPDUT8VQAR21IvS+UGbaRe257SoscwqVWngf6mLPvtFxUAsnIbQA75ETUKhYlA4SD9j6OHrWFhljTG6qTkQPhSsCDCCeOGGomo2qKXOsJT9jlwmP3+i2JkzJIdRQYitiRfkI8r1NbGq7rUbtVN3nyvhIW4Id6fBh5Qjeywk2DZqfeBznEccP7KK6/Y12xZT8KhUEAESZU4eEf+viAi6+xlOXPiggKJLHumbySi9dB5ChKyZeLW48aT1daqt+7riURsjJOe07dYr9c5D8hg0aNJK3bdFxCBLYycu17eLVVReo6eLWUr1bT1HiDqEsl2/Fb8kr8s78WOD/I/Tll0aljBly8rMyzkkK8dXDp/WXvBybI9PHAkAl2wQJKvHvwjEQfCMyT78KU7IhEte4+yr3KaLXjlDPeYtNJAxPD5YdJnTrgBB+fcBOW6nYYYiGg7dI6M23w099wUtSXWleg1fkG+QQT3kYdSvXF7adtvrFSqVksOpR4ymRCRZpl1cnACyfNenJct0Fax0uhf//pXS6akfId89RC1Jln2bnKneBqIYKlixkOpxI8KU1FAsny3gzA9EQgambtRIBBx7tw5M9xgQcSAqctlZ/o16+kUJ96qjnhNXKZ8UrmulK3WUKrWqGWNvEMsqoXjJGLAljUDgmWiC6VLlZLKlSrZeLvvOYaPQPw0jP4AAgoWRJBjg1MPKRKRlCMVGnaQrpPWKa8x7jZ5na0/MGL+ZpNLIMd2P5koxMqYDHn9w9LSa9w8KVWhuixZtMgrDTE50MtkNVAW1wJcBMsMLZJ7wncb/M+xABKJy3/6058MGPtSKCCCJGPflRJ9QUT2uctyZP8p2THvoDrr41KxBjkROTJj/R6p1bavNOs9QZr2HmfcRLl++36mg0U7k6V+p8G55+BmfSZI9ZY9ZW7YPssZ8a3LhcHbD1+RToMnyzulKkjpijVk4QIPiIOwBaJBLBLF6qD+srwb42/RAatV+p9brDpgpdfHH388oA4cOyASsXjwDtmw4UDASATMEDD/O3rwj0RErkiW9DhPJKJFt0GyQ31S73HzpVG3kXfIuXHP0dJ+0FRZtxd/tklqt+uvsh/vc36MNOg4ULYq8G3Wc5Q07j4q9xw6qtW2nwyeviqfPu+CJXeX/KyGVKrfSsp9VsmiPw5h8zVr1LAGP1RbwAaIQGMT/udYlI2ZYSQYU6d9yVcPB6MyJC0uw11sijndJDjSu6e3WFTsIMlA5+4H83tZDvVXv/ylJXLSuNyLCgoievTqI30nLlLDuCAbE04XOjPbgMSjQOfuxTRe09ZGyS9/+ycpX6GS6iPT+6tvE78xNTXVlpgOlrme1Sj/4R/+wUK0oHr/a8joz0v+wYIIEnNZxjYYEFGzVm39rdGyNeWirNx9RJZFHr6Dl0amyfp9WebILLEuRHacYKBz92IaxLGLwuT5V9+VEmUqauO+wCuJ20Tki9+L3QbLdBRo+L7xjW/Y1EG+leF/DWXimP0pFBBB4jRJgI78fUEEkYjTGeclJYoe4HH5tGodWRmdYXV2ZfQRWRqRonzIw+qUV8cdt7q5QXn5btWLc844Re85apEM/7oMUyb2kHssMdTtGSlRvqY8/sTTlqXvS8iCfIVQdcDMMu750Y9+JC+88IKtbOl/DedZWM2ffO3g4rlLErU6UbbtSpNBs74ciYAZysgLRBCJOBSTKWcyruhvWypNO/W3vAPyoZZGpN4pZ9XDqljVg8pj3b5Tah9fPr+a8woGV+85Zv/7nl8RlW5Rio2JOQFkfPct9gBIfOKvL1kOxIEDSV5peAg7Z1GtUPVA3ccGtFGXBg0bWCQ+0DVOXpYv+eohQmUZu/aAG4lgyen33nvPso1Zq6EomHHYWjVrSh3tmbIf6JrCZsb3WQmRcNi9IhAOBQIRTD1ledt7ggi9tkfPXvKm9jCrNWglles2L1SuUq+FlK5cV8pUrW/7ga65G1et31Le117X+x+8LydP3c5JKAzi93/zm9+0delDpWBBBLN1WAc/GBBRo2YtS5Zbrg5uhTZegXiZggvARH54RZSWoRzo3L2YaFDN5l3kN7/9va1YWJjEGgP//u//bhnmoVAoIOJuiZVEIjISsyRySYo1am+//6GUr9lIqjVsZVy9cRufrWe/Sj2tmw1a6n5rqcbxRrDue7dV9FyV+lr/67fw2baQMtXqS+kqdT3/WxlsW/htneN+Wy2nQp0m8vRfni10HUB/+MMfLP8nFPK1g3OnFfyOipBNmw4GjEQA1Gkk8xrOIBKxa3GSpEVly4aNa+XN9z+SyvWb6W9v6ZV96zu2VdFDA48e7DiyZ+sw51VmpkfVieca3SqXqVrPdFxVZV7FK2PP1vnf/7h3q+Xx3A/KVpS33n5bDh68E0AUlFLTUg1ERMdEe48ER756OBSbKUf3HXM/wIVzTUhIsNA+yY9FwTz/Zz/7mX0mnFXWAl1T2Mzv5Vk4x2ApEIggkhNUYqVeyzDK3rhYiY/bU+h8IDFBfvPLX8hrr74iSYn7A15zL94X72lsC5tIBgREDB061HskeAoWRBD+ZaZPMCCCZKkPP/pEypavWLj8mWf75DPPyv/9/k+5/4fChGzfff8DC6kWNtFhAETQSw2FQgERRDyWac/dkb8viCASkZV+VuI2HJYb125KYrz25KKiJWJbhMRGx9h2z+5oidx+exsTGSW7d+yW6Ajd7twtUeFRErWLrfeY7sfs5lyk3sO1kRIXvUfeef1d+dXPfyF7ImJyn7EnyvsMfZbvM2y7w/OsKH1GjD0rQtJSDssXt0RuXr0lN6/fkuuXb9r2mm5v3fhcrl66Ibdu6vbCdd1+IVcu8L9n+7nP9qp3e/3yLbly6Zo89fgz0qxxC7l5zVPujSs35bo+44byNd2/ef1ze8ZNewbP0rIuXpcb12/aQlNnsy/Ktnnxsm37oYCRCJIA7/UpcBJc+YZJzqlzkrgvQcK3euTiyMnkEhXlo4NIkwuyj0b2ysg+OkK3yExlH8k1bLdHmj7D1ofJP3/9n6Vx3cZyICHRK/vbuoj0fxb38yxHB7si9TnRciozW+X394ByuXrRI3NkHEj2jk6c81zP8djovfKPX/u6hG3cZuWgA+SfqwPVzTV9xk3fZ+iWZ186d02uX7sh66fEyu5lCTL+UY9EFBcisY5s5OJMgUAEH2gBSAQDIriHe+8XPffcc+Y8ihs9CBCB8ww2sfJ+66Fatary12ee8f5XfOhBgAimFTI85cjfF0QQichMzpG142IlM+WMbJ6UKOczr0nYlCQ5d/yabJ16UM4cvSI7ZqVIduolCZ+fKplJ5yV6abocjTsj8WszJCU8W5K2nJDEsBOSGpktcWsy5Gj8GYlaclhOHLgg4fNS5WzGdan0Ukt58td/kx0zDslZLTts8gE5l3lVtkzR7bGrsnX6Qck5ctmedSrlokQsSJPjCeckZsURSY/JkX0bjsnB7SclfsMRiV6ZKgnbjsmuhcmSsvuEbJ2VKOnx2bJp8j7JSMyRdePi9XedlTWjY61hXj2K7TlZMybOlvhePz5eMpJyZPPUBEmOPi7V32ojAzuM02ela7kZEqXlx65Pl/iNRyRy2SFJ2nFMdsw/IIeiT0rY9AQ5si9b1k+Ml6OJ2bJqVLQcSTopC/tvl81bUwJGItAFQJmhQkcP/pEIPgW+fW6irB0bL2eOXzH5sN0yTeVy9LJsn5kiWakXTQcsShW1LF3SY3NMB8nhpyRpa6bs35wphyKzJHb1UdVBjuxefFgyD56TXXMPWdLmipFR8uPv/EoG1J8hl7JuyWZ9xlnnWRlXTN/Z6ZdMBydTzqsOUiVj/1mTS1p0tuxVHRxQHewPOyZRK1Ilcfsx2bngoByKUrnMSJD0vdmyYeJeOXZA69TYuFzZn0w7L6tH7vFsR++RTD2+dlyc6uCMfbfl6P4zsmxUuHz/n34mfRtPsHoUsypNYtely77NRyVy6SE5GJ4p2+ckSVrsKdXbfpV9jqyfEC/Hk8/IypExciz5tCwdGimXzp53p3gWF2J6JUscF2cKBCJIsiIvojiAiGeffdZmmxQ3ehAggumdZGsXBxBBRjeArrjRgwARrCdCHowjf18QwToRF5WPJGRbz/r4wRzd3vBstaeYqQ76yvnrBjDo7Z1IPSsXc67KqcPn5Xz2Vck+ekHOnrgsOZmXJOf4RTl78rId4xzXXDxzVRuOc9rrvCUVP64pzzzxrJxKu2i9UOcZrJbp+ywanktnr9l9F/RZWen6rKwrcjqDZ12SM8o5xy7KuVOXJUuf5bzPpTP6fnrv5fPXrCyiETQw1+z3eLfe4wCMK/p7TqaelzMnL8rLz7wl7Vp0kgunbmi5VyQn46Kc0d/Ebzutz+L5WekX5FLONX3/c/Z+POPS2avamGXJuewLkhSRLruiDwecneEMafjagS+IuHL1mtnBtUs3tAE+bT3s4wf0XX3e2X4bOtDn229WuVxQOZ/26oD3RQfnTAd67rReo432JdUBekPmybEZ8r1v/0AGdBkpckv0GTkeXXi3pgPvs4iw5OrgCDpQPatc0AGMDpBL9hGvDrxy4V7KoM5cpU7x/l4deLZ6Xrc867JX39cufi4Rm+LkH772z7Js9hq5eu6WlX8mk+eRt3NRf+sV+80XVc+8l+lZn3HlwjXJUJldOntFUuMzza888sMZxYUeVhCBoeI0XRCRNz0IEBHKVzxdEHH/QARDe4sWLcqVvy+IOJVz6YHIH6pStZLZQ3EjZPi73/1WGjSs7z0SHPnbAfV5T9IxGTAjJiCIIEEWfTh6uANEXPGAiPuth+s3rsm3vvVNGTRkkPdI8aEDBxMtJyIi8stJrHejQHoYs3ifCyKKAz2sIILxXxIGXRCRNz0IEMFYPBnzLojImx4EiGjTpo0tP+7Iv6hABF8dLY4ggt//+9//3haUCoX87cBARGJgEEEUgqnUTPN09FAUIIIo7be+9S2bhVLciBlj2qhLeHi490hwFEgPLogoJvSwggjmfTMzwAURedODABE4g7i4OBdE3IUeBIhgOXo+VuTI3wURdxK//36DCBIryS9Dz44eXBBxJ7kgIkRyQUThUCAQwdfyWJrWBRF504MAEbADIFwQEZgeBIigAfMNo7sg4k7i999vEIEuWD/BNzfFBRF3kgsiQiQXRBQOBQIRTkUqLiCC1QyLE/F7+WgUIIKFiEL9/f5GmxeIoIFkqWYXRORNfHIfEEHyYyiErJBZMCAiOjr6jh6wCyLuJOoyIKIg60TcC0QEmqVUFCCCzkNxBRFMf9VGPeDCXnejQHpwQUQRE0oBsf75z3+2BpD94kqBQATL/LLcclGCCCp1Tk6OAbEPPvjA3oNnFQcCQID2/+3f/s2+5Mr0v1DI32jzAhF8Pnz8+PHFAkTUrFlTnn/+ee9/xYOQHYtAASJIukMWwZJT34MBEXxVkSnPjvyLCkSwOmdxAxHUYxrz3/72t7YUPHUyWPK3g7uBCLYMKVlUyKuHBw0iKJd3/Pa3v22rP/LuxYWo+4AHbdRNTsgzWAqkBxdEFDHxYSdyCr73ve/JL37xC1uCFAUVRwoEIvhiIUZSlCCCigwA00oqX//616VkyZIhGcb9JJzaSy+9ZO/2j//4j/aNklDI32jzAhHDhw+3L6oWJYigTBw3Q0pPPPGEJbjxvOJAfJHz17/+tS0/zrcZnC90BkNOfQ8GRPDhp9mzZ+fK/0GDCMpF7h9//LHpgLpRXHTAuwDy//Vf/9X8HbYQrBy4LlgQwe8nElOUORHoHTBJ5wFAt8/nmxdFTUwHp27gk1g9dPny5d4z96ZAenBBRDGgJo2bmHP7h6/9g3Tu1Ml7tPhRIBDBdLaiBhEQ3434p3/6J2P2ixMNHDDQ9PvDx35oC+CEQv5GmxeIwEkRpi9KEME7khVP7+tf/uVf7ANjFy5c8J4tWkJGgAh1ZBb14yNZwZJT34MBEXPmzJGtW7fmyv9BgwjqCh+II4z+L//8z/aBNzoqxYH+/sXfpUGDBurnvibfUCCxwvtV0GDI3w7uBiIAsny+uihnZxxKSZFf/epXVt9gZk8VFzp75qx9aI73+uUvf2krCQdLgfTwyIEIhHDt5vVixQmJifLjH/9Yfv2rX9tnXgNdU1T8uRqaQ4FABAk6rFoZDIi4ceum3NTKd4tKWMh84dJFG4cnjI7DCHRNUXFWVrb8/Oc/lw7tOwguK9A1efFNldkNld29QAQNGA1ZMCACnX6hOuRdCpOhadOmWTSIqMswbyJpoGsfNEMjhg83cDNq1Cj7P9B1gRhZIbNgQISjB0f+dwMR6Pf81Uty/spFZbYF54vXLsuwUSMEd/01Ba7d+/SUS9euyIWrlwNe/yCZd9uyY5t8+7vfkXfff09Onc2Wi0G910W5oIz8gwERbIkG8Y0URw93AxHXblyXc4WoA2R9+cZV6dits+nh/37/Wzl09HCQv/X+86XrV2TQsCHyD1//R+nZt7dc1v8DXefPyOiy1qVHHkScuXxeBq2aLENWTyk2PHrzbPndm8/Ic5+8IaM2zQ54TVFw/xXj5dDJ22P4BUmsvHHjhuw+FC/hKXsk4lBsoXPs0UTpOLSntB3QReKOHQh4TVFxZOpe6TS4h0xZPlv2HEkIeE1evOtgjCQeS7kniKDxpmd3LxBxWR3ZyXPZcur8acm6kFOofObyOTmceUSe/MvT8svf/FrST2RIzqVzAa990Hz26gWJTYyXj8p+IgfSUyRH3zXQdYEYWZ1QmZ25eO6eIGLz5s32bRpH/ncDEfFHDkiN8e2l8phWUmVs60LhahPaSdlBDeXff/xd+fcffkfK6H61CW0DXvuguerYNlJ9fFv58Qu/lWdqvCO1JncMeJ0/I5/6k7rIhcseIHEvEBFqYuX8iNVSYXSLgM/OL6OHkr1qytf/8xvyx49ekOr6f9VxbQJe+6CZ+lCuf0P5t98+JqV615XqE9sFvM6fPx3RTIaunuqCiOQTh+UfK/xG/rXy74sPV/mDfLfKE/Kdio/LN3Q/4DVFwF8r93NZGr3B5AYVJBJx9fo1GbBignRbPEJ6LB1V+LxklPRdOU56LxsjPXU/4DVFyP1Wjbd34z0Dnc+Luy4aLrN2LL8niGDFymASKw8eT5VR62bI6A0zZczGWYXLG2bJhC3zpUqbulKhRU0Zv2Ve4OuKgvXdxm2eI/0XjbV940DXBWBkNXzNVNkQt910cPrMhTxBBF/FZUjDkf/dQMS6+O3ynZpPqv3/Tv6t6h8Khb+h/B+1HpdvvfZz+earv5D/qPl4wOuKjKv9Qb5X9Un93U/Yuwa8xo//tcrv5Uf1n5Ps8zlBgQh0wYJfvt8wuRuI6LRgiPxTpf8L+Oz8Mr/tm9Ufl++89xv5dvk/yr9VV/a7pqiYd/v3qn+S79d4Wv6j6h+D1sPXPvullB3ayAURh04eke/Uekq+X/evxYp/UP9Z40Dnior/vdqfZGVsmMkNCgQigv2KJyBi+Jpp0m/5OBmwckKe3N94vN+xO//Piweummjsf5wy/Y8F4mCvK2y+23P7LBsrC7SndC8QAYAgP+VeIGL/0YPSa/Fo6bV0jJVd2NxX9dtXt867FzceuGai9Fke+Fxe3Ftl1W3RCFkatfGeIKJ9+/ZBg4iN+3fKjxu+IP9V5xn5gdpboXE9tn+Rx5QDni9qxtfZOwbH/1XnL/Kr5m9I9oUzQYEIEivLlSuX51c8/UEEwP672iYEenaBucFz+lv19wY6V9Qc4nsBiiqPbuWCCEDEfaswXzH+jyBABHPvWf+gMEBEvxXjjfuvGKfbcZ7GdYU2srof6PpgGADSb7mWGeCcnbfnwZ7nFwRI8M4DtIxA5/Ji7rnbc2nEggERLKxDsuC9QETC0WTpt8zzzEDPg3mXXLk4x/z+D5Wd+wOdg33Lvdt1wfDdfltejP7zei7Hey0dLSuiN90TRKxatcrz3Qav/IsERMAhNNLFnfMDIphCGmxi5X0FEV8hdkGECyJC5mBABMlLwawTcS8QgRMft2mOLIvZKKv0mbN2LrOowuj1M2TFns0ycv10uxdQYA0SW7vvdsPmG7HgeD/9f9KWBbI4ar0MWTM5t7HOvVd57MbZFuYeumaKXTd+89zb5Xu3vmXePn773WHeddKW+TJynb6n8xy2yr7XOceccmbuWCYLIlfL4NWTv1QmHCyIYNYH4duCggjea4i+y7hNs1UW82TYOtWZXjts7VTTz+DVkzzv7r3W97689uERKheGBfyPO//z+wevmiyDtHyewzt4rruzPOeYZ3vncefcUH3XQStvR6Q8z/K/7s7n+7+fL6OnYEEEDRhbR/5FBiK+QhwqiKD+r1+/Puh1IlwQERy7IMIFESFzMCCCxbHOnz9fIBCBk2aMOvXUETl75YIlsp3XLQlPU7cukhNns3S70K7j+kGrJnnu8+4DQOy4NhzOcIbn+DjZmhhhGcWjtIEgIkFjNVAbKqdhJGkxTK/h+YdOHpVFUeu04R7jKcMason2XM9QySQZ6PdMmLImK1g5ejpT5oavlD6AHT3PddzH/dYY6jHK8Nw/XnovHyNJxw9JljrHkQqWAjXswYKIMWPGyIIFCwoEImhUh66dIrtT98rRnEw5or/n4Ik0GaNAa17EKn3XVJmgwKLv8rF2vxMxsqiR/u+U6YnIePTDfu9lo2VLUqT9VkCCXa/Pcu5DJ1Gp+/QZq+1Z2Ch6p654nuNl3lPLvX3szt9BeRNVD/FHD8jojbOkr55znmH3eEGD53+O3y7feT+nLF/mfLAggsgcn2R35O+CiIJzqCCCxEp04WsHLogoOLsgwgURIXMwIGL37t02K6AgIIKGcn7kGrn5+S115rtlYtg8a9jnaINMpCA8JVYm6TGc7rq922XHwWhZG79Vlkavt3PLojdqwzxRNu7bKYuj1mmZE+2aqdsW2T1nL5+3BLmFu9dYuVv1GdP03MKItfZe6aePaeO/SsISwvWexQYueE7EoThZv2+H9VK5f9uBKNmwb7vNMFkWvUGf42mYAArb9XlM2WP2BYBg8e51skuv454pCoAAMGz5n+OL9DyN2L6Mg5b5b5EWbawCySYYENGzZ8+gPgV+NxBBwzp7l2fhmR0HY0wmySfSZcWeTTJx83yV+TbVxyyLnsALd681cDcxbL79nvGb5hpI4D7AxrA1U2x/5PqZsic9Qc5cOmeRDK7n3nkRK/WaqXbNF1/8XWIOJ8g41fcGlTnyRq4zdyyxCNH07UsMRIxWsDdH33H69sX6zLX6HE/kyHn/nckxNi2T6BXHplgkap3M3rnCohtcO0JlDUDlHcZummN5HHHpiTaTxFceDocCIlq3bi0zZ87Mlb8LIgrOoYIIdMGXhVlN19GDCyIKzi6IcEFEyBwMiGCVxF69ehUIROD8aRwOZ2fI53//XBvVLNmsDTq94nmRq+zZNMrMFT9/9aL1jiF6/sfOnLJ5zxMUZJy7ckH2Z6RY4wOt0wYfMEDjNU3BwYHMVNmmACJTyz906og2zmvk4rUrkpp11GahXLp2WdbEbZGd2oBeuXFNYg8n2jz+qLR92gh5Gtf0rGOSkXNCrt64bkMgNDBEFrZqT5Z1MOjFL4/ZJFdvXrMoB1GU42dOWsN5TLcAhv3HkvX+a9aQxR9Jst9bUBDBZ8BXrlxZYBAxZesCe7dT53O0Qd5jEZY+S8fKGgVtl69flQUKxLIvnrVI0QWVzZlLFyRN5Xf95g1JO3XUAODF65cl/NAebcAXmhwBYpGp8VpmtjXaBzPT7HejLwAdz2HVCsAegAUwNmfXCpOjZ476Rb32vCyJ2iBLFDjeuHXDZHr91nU5rPoYbkMu4wzAHMs5aWUlax1ZxLteyLH7L+q7blEAybDW3qMHTNfnr162aAtANSptr0XA/GUChwIiOnbsGPSy1y6ICI5DBREMY5QuXbp4JFZ+hdgFES6ICJmDARE0XGPHji1wTgQN8XhvtIFG/fMvtFevPVMaWvYXRq6Rc9rI0ODQ+yVqsVwbHHqjgIgFep5GIFYbJ8qjQafhA0TQONGIr47dYj1snBGNzfC10xSInNBGbruM3DDTGptN+vzsizn67P02vXJzQoQtkkNPmx4ujeqSqHUGEizCoA0Mv2nK1kW2TgLPoZHKVPBA4zNzx3J7v4jUOP0dX8iksAXSc+kofcYZAyex2gMuDBABOwAivyDCWI8vUUBF4wpouKJMY75KwZUjZ+QXm54gsxRYfaF1gcgBkaFrCiTIZWEtlh3J0ZaPAtBYu3ebF0SctijNkqj1FgXIuXhOkk+my3gFFizOs1qfgXzRHaAOABCjz2G4A+B45PRxOw5gWblns0UbeCYytVkhyqu1vqKbSaoHwNpJfSaRpbDEcAOh1AcWUVses9HyX85c0nc9GK3gz/N+gWQSCojYuXOn5Qg58ndBRME5VBCBHvhKKCu4OnpwQUTB2QURLogImYMBERgtYcOCgAic/7zwVXJAe6iEwclZOKCNxrEzJ2RZzAZ9lgMiLsj2g1EyY8dSa2ho0Ah109ABJmgwEo4fsmEMGrfVXhBBJAIAcePzm7J5f7j1hI/n6Ptpg0Z0YEdyjCVFAiLoNRNpSMo8ZJGGiEP0UHMsasH6hYCEpfpONGQ0ovSA4Rnbl9r9/A4aJEACiYn0rGlIN+zfZfcs1d40+RdnrfGKsTB6YYAIlr0mG71gkYjxMj9ytazfu8OGIqZtWyKnzuVY4w0go/eOzFmAaeuBSAV9cy1qwRAI8kcn5E7QMDNkwxDEFQUeDIMAIviddr/qKerwPgN3B46nWkIjgGVF7GbTAwCR/QtXPfpg3Y9oBVy8B/IkxwWwwnDXda2Dk7cstDwNGHBwVUHChM1zLBKUeuqorc9B8ipgkPdCH+iO/JT07OM2jILOslTP/jKBQwERJLdacqVX/i6IKDjnJ7EyKirK9OHowQURBWcXRLggImQOBkRQiQAQBQURgIdj2nif9kYJci6elTVxW62B8oT+V1nPlGEDGieW8qXBo/E6q+BipjYq0Wn75YI2FMfPnpLrt+ithlkZgAtmfdC4bTuw287zLGZSsPgY929K2KUN5mlZrg3F8miuPWdDEaxSSMNFDgVh9In6nouj11lDBJjxgAhmgcyzchhiIXqSee6U9WwZZ9+jQGHY2inWq6aXfkp/hzPEEXN4vyUxMk5fEBDB54b5SmVBQAR6AKzRu08g4TQhwqIF5J0QJeA3OxGf7QeiLNJgulHgRHSBxp/IS+qpDANe5HvcVIcDANmdFm/RGfJOKMdAn8qbnIvRG2faMRIbyVuhHPIlolL3mrzCU+IsCrUreY89BzAwd9dKA2wAs8lbPSCC9R84z3AIkYctibttGINno8uEY4ds2Iv3J9oVd+SAPXe2vrOBiAsFj0RMnTrVPsnuyD+/IOL72nBy/L9qK/ucZ59zvtcGy06Zgc7BnHfKLshz4Pzcm9f75SexEjDH/44e8gsi7J3QgbLzm5xj/tcGy/yee+nB2ZoeCrDeh1NWKMwzeUf/4y6ICAJEIPDv1X7ahMjWUYApMh/KcPhu93PcURj7BXnO96noAY7fjamg36vzdMBzwYCIsLAwW6e+oMMZNGBDtPdLY79Oe6707HtrA0q0gHA6ORMkyDFmT4PLdZ5VB2dbgiVhcu7nWhoXxs8JV9NoMOOCkPhMbfSZPjpHGyASI8mdIHzOMaIXNGwk6jE7g9kB9KBnKGBhsaER66YZmBi+dqqNoS/X+4ke0MB4fsNEe+4KfT7Jg6PWz7QhAMocqOcAGyRi8j8NMufpIfNOgATG832nHDocLIggL2XSpEkFAhE2m2LlOMs7YJiFZZnJI2Coabrqg1wRhg5ITiXiQMIkSaYAQPIfIg/FmR5mK6BjOGj7gRjZcXCPga3F+rvJcxmlOgMIRh/eZ8moG/bttIjP2rhtdgzwQELruI1zZPi6qQYE9h49aM9EjiRKAibQLcmeABybeeONCLFPZInhFHIlGGbZq79jl15HsiYyZ+iJoSSiQIAW6h5DVDzDXyYmlxBARMuWLQ3MOfLPD4hwbPh/GvxN/l+jF+VH9Z83v/CYHuP6/67/XMh+Ajv/73rPyY8a/k0ey2uRoXp/tXOP1X029zkBr7sH8yx7RohrVfA8fvNjfveFCiLQA5/GT0lJydVDfkCE8zv+X8MXjX+o+8gdOSIffl8oDbyj1/9Wff6o/t++dB7mGkc/P9Tn/L8G+lzVh/91wXKeur4L827UOf/jLogIAkRQif/c9kN5rksZeaLdh7bU6g+Vn2hfUn7b8h2rzFQaa+y9lcezf7sMZ58t537c4AV5Uu//WZNXbt+r7Nz7P3r+fxu/Yv8/0a6k/K7VO7fLsrJvV9K8nukc+6k6nP9t/PKd1ynfcZ33eO49ev0zHT+xiu17HRxsYmXvQlqxkoYNZ034GgDhOTZOei0ZbVumCrIaol2n13CMBqDXUs++OXu9loaiF9fqOXqolEkDSZl2XkEBxyif8zzPuY57OE6v1vMenumenmd6yuE3eJ5/Z0PM+3GcayjHcz/3eK7j/fif444cnHflHt+yHA4WRCxevNg+8VsQEOGwvZP+VmOVLe/N7BLkw7a3ycmrB44he2Si+/xW3rmn3ethRw/cZ/rUMnvaudvyZQVNjvW181oOz7Ty9VqV1+33ULlaOc553fcBX57yPc/lOFvnXRzdms65Ro+jD+eYs+/PVq/0+mBABGCOz+M78s8PiKBx+nREEwXNGwxkjdk0Rx5v+4H8uvmbBlRLDKwj36r+Z+vofE87Dt/T++kZs+/0kH17uxxjee2q41rLosh18nTHj+W7+r/d670Hn1F+RDP5cEBt+X2rd2XatqVSfVxb85VO2b4dK+e5vs/0PPcZ8yn1p3SVZzp9LP+p57jHuc63w+S8P8d5n3qTO1uuzP+1eDP3Ok+ZoSdWli1bNuhPgQcCEfjJnzR+UdrPHWjLk8Nt5w6wxrXkgDoW8cKnc59HNvw2R063ZcK+I7P/rPW0AYO+akN0ithHBvy+79X2RDeQHXLAJ7/dt7pFNV/o9qnpz1de9o56H/u5evDqG2b/iXYlpOHU7vKrZq/L9/TZdq2XnXdyyjD23j9202yzFX+w6oKIe4AIFITyyO5nHJWx2oZTu8kvVQGMrfdQh/PtGk96hFrHI3xjvTe3wnPcW973dR/DeLn7ZxYyrzq2tVUEehM4CRRGpeowb7Ax6J+ea78VE3KV6kHyt4GABxx4ns8zfcHCjxUpD9NGGuO1isn9eu4x77s613n2WV77L/IfWik+U8fBV+z+2OZ9u4/rHA4GRGzYsME+/lQYIKJAvOrLy10/eOYdCvc9ggURThi3MECEy3dyKCBi7969kpycnCv/UEHEf6oNPtXhIxsOYoitz4qxsu/oQXsHGi0iYm/3qaadmrflD63fsw4KHQ86D88oOKDBoJzf6rE/tHnP9h/XDtH/6r2dFw6zfJTXelSUHzV43sDEkx1Kyv80/Jv8Se2f2TWj18+Uv3QqZVG6ssOamK8EvPy1cykr7/vqO36oDekT7UvI71u/a8/8tTbwzvt/t+ZTUmFkCxvaqzG+nXVOftroJS3zE/mzNmqehukZa0B55l/1Wb9o+pqBIp55+tJZA0w0dE6ZoYIIdME3THz1ECqI+Lb66rqTOluuzuSwBRbFYkYXAO5VlR8R0F+pXP6ssv2/lm+ZHH6uv+PXCoDY/3/6m/Hf1oFs+qr17p/u+JHpcHXcVpsNhGyQLbL5k/5mfPNnI5vZ7KdaE9rLW6rn4eummz6QB/L/a+fSJov/qvWMlQtQ+L0e55k/0Wc6bQI8cNVkG7Z7o3dlq1e8L2VxPUtef1+BC51c6gFMXeQdmKZOtJSokG/ddEHEPUAEwk87lWGh1vf717SeIePsIMOm03vJx0Pqyd+6lpUPB9aWT3SfLdGKssMby5u9q5hx/K1rOXmnX3U10L+p4qrIKz0qyCs9K9g4Oaj+183elFJDGqhxNjLj/V3Ld+Rw9nF1Jrvs3ibTe2p5TVSRf5Vnu5SWCqNayMeD68vPm7yqyv6bvK+9BBxIea1olG8Gqe8OGHm9V2VL7GMYgJ7E/6mToazPRjRVo3zfKsP/00ryrr5fpdEt9d0+U0N5QirqMyAMOj8g4ty5c5KVlfXgQMSqAMfseN6NN84p97z3fjvmNPh+ZZJw5/t/ns9UHrjas8CVpzyOOdvC4WBBBEstMyugqEHEbTkEYJXjl87f5fq7luXHjg4cDnRNfjkUEOEsP+7IP1QQgW96rnMZa0hY84KvJ77br4b8RXumgIV12qEpN7ypzNixTHYejLZ1RzYnRtgU5ohD8Tac98vmr9tUVtY8IZzNLKb28wZJ85m9LZH4tZ6VLOpCL5chJmYh0WEiv4UF37ovHmm5L3UmdZKn2n9sPoAv0e5Mjpby6k/wLzsOROdO3eWZgBoaKhpGclSYZkvezMdD6lvuDNcxTNVqdj97p1oTOtqwFMcYmvxdy3ct4kRS85/UXxUERMAACP539BAqiPhWjSek6YxeublPgId3tV0AKJQZ2sgiREQKSNRl2DNKfx8zh5iaDOgj2skQSERKnFQb10b+3LaEJfrip4m2bFXZPK1gcZbqkSRh9FhJG2imQOtbyfaDMdJmTn8ban2xW3kpN6KJzUxjlhfyJmpdYVRLy6kiSsICa9RVfDh6eLzthyZzSwDXd3qpR3nLEYvQY7wzegRIMgTMQm/kH+H3aCOod+iEdswFEV4KBkRQUZnaRuY3Aqw9sYMZLY0x48P9l4+3cXIMDSWcViNnPDYmbb8lAQIkGA/m882gSwyMqW0vdCsn6dnHDJWzHO+S6I2yLYkFh2KtASfJC8NpM2egZaAT5nqzd1Wb+halZacrAGG8+cn2H9m701tg4R6SDD9QUAEQ4PdUG99Wbnx+QytTklbathY9OXjisOzNOKiVKc4qVRftiZw4e8qMl6z0Svp8KtPfVS75BRGABxqtBwEichsHn0adRrzr3KHSZFingI0H4/nd5gyRpnre04hxzyTpPGOQ8kC7h2M0ZuxzrOXo7p779f/+K7RMO095PuXb9ZOkzbie0nxkF+M243tKu8l9Lb/BuSb3euMvv9+9OFgQ0bt37wLnRATNJkfvb/Hu2//eVSpvn7v9e+2YXmsrfXqv91ynMvaez70P5jrnPv73OZ97rc//ds1KVp/0NPrOImC3zwV4RpAcCogYOnSoTXt25B8qiKAnSC+9+YzeknIi3aajYscVRjW3iAIzWprM6CnR2niQqFtTe6w02PPDV0vbOQOEacRv961mAGHbwSiLcPI5/1EbZ0ozbRTxNXR0ui4cbj6OPJD9Gcnyas+KlnjK732tVyXJOHNC+i4fYwDgSHamdqxqCSuK7juWbKCGmTgkBree3d98Q4mBddUP8XXOJ82nnDyfbZ0lGtMzF89bD5shJNb9+Ex/Cx0r8mze71dTDmtvmaXOATOFBSJYI6IgIAKdEIUm34dEaPw+M72e7PiRgavL16/o72usx69aw0++DtR+3kCbMZZ4/JBFIZhR1mJmH4s2QHQ+AWisj0JHjvpPeUf1d9MB/ERB1/GzJ01edSd3tvvp9JGAzFo576nsqQ9ML28yvYeVWXtiRwMwTMv+lXZU8ePUI+wqQfUFCCERmfrE/Yt3rzedN57W3ZKUG0zpKvUmdTadVhzdQkFpuAsi/CmoSIQK/cn2JWx1QsJWCBRBPt3hY6sQQ1ZPEVbpQ5lEJ5iutihyrYWTIBQ9fO10Axa/0Mq3bi8gYnsuiKirFYUxR7ZMXyNc+dcupQ2BkjzIp3FZVpjparwDQyBUCMAHiyNVG9tG0rIyzKj/2Pp9ufXF5zbehWJBnr9p8ZYBjAbaoyCCcevzW1ZJGaZgYSAq62G9n7Acv5VEN5LiKPcLNaT8goi1a9faSon3HUSo8+84baA06N9GeswbLu0m9pZmwzpLy1HdpF7fVvLkq89qI97bxuZbj+0hfdV5cV/bCb2kTOPK8swbf5Ous4dIw4HtpMOUfvJGufelZO1yBiYaDGhj4GHohqlSvXMjef79V6XRoPbSY/4I6aTH6+szu8wcpGX1loaD2ulzeknvJWOk+fAu8kKJ1+XFEm/oPa9JpbZ1pVb3ptJKn99kSAfpOLW/ljFcGg9pLy1GdpXuc4aG3IgFCyL69u1rMwMeTCRivPQllwFQwL7KHDAHkKrasUEuALDG3AENeh4gV6VDfZXBJKsHALx6fVtL81Fd7TzvhTNmv4XqtVrHhp7n6f1Wlt7jyS/xPJNjzrmaXZpIjS6NpXK7ulJF3wEwx73kOth1Wq7nd1OG8zuCY+4PFkS0atWqQImV2CYN5uu9K8tzXcpaRyM2PUlijyTa/yfPnbaoAVEHGpLft37PFu2iwXmpe3kDGSW0c0HyMFEGIgOJx1NsrQwHRBAdoLMyN3yVDd+SQEs4m0TTdnMH2rADvmKw9lI36DuyIuw/Vvi1fDSonnWeGJql4wRYeL5rWbmiDSnAAL/6be3Bv9u/uhzPOSmvdK9gvXh6yZyjIaWT1mPxKLmi/qCUvgflzlMAxLvSySkMEMEU2+bNmxdoOINnIhOiyQxJI7vL1y+b/dJoM3ur1NCGNmxTTuVQc0IHm4lF/lzHeYMlQRtphh6QFxHmZzuXMbD3/oBauSDiAwVmzIaaq7+f6cVTty6W13tVsQ4eEQsabKZTN9X7+e0Mt/9j+V/IqA0zrGPbWEEEskfmrD2Tnp1hz8eP0550XjDUIhVEjtAt5f9zpf8zn5+i7SD6Z/YV1/+w7nNajy7q7+wpGxN2uSDCn+4FIjBcUCcG9Lqi8P9RwyYHglBWpTGtbKoaS+YCIliR8OsVf2OVfaA6SBJtECrCxVCZZkjDTS+AqW2ACFb0I0GH6ASIESasSCUjRAXapRx6AoQCmVEQqU6CscqSg+qaQYMWU7RHwfcW/rPWM3Lz85vSRJEkeQ2ACKImhxWsgHrrKVAhjPUHfQ/GIwEh9k0CBUc4w29W/5OBCebHA1IKEoko7E+BB2IMl8b4mTdfkGfffkleUwDw/PuvyB+ff1J+99c/S7mm1eXZd16SF0q+IbV6NJNXPnlbei8eLZ2mD5DfP/uEPPXqc/LMa89L+RY15Ec//39Wzp/+9pQ1/h9ULyOP/eRH8sanH8jwTTMUBDST3z79J+U/SplGleXjeuXlx7/4iZX97Dsvy59f/os8pWWVVmDy5xefkd888Xt73ksl35KP65aXj+p8Kr/7y+Pyl7f+Jn/VdypZq5wBnF8/8Tup2a2JDFk3NeBvzIuDBRHkpvDNhvsNImhQ6/RuoXKpIM2Gd5a6CuDYr9y+rlRsU1uee+8V0wGgrIb+Xla77L1opIEH5PeyyqrJ0I56z2dSv19rk9U7lT6ShgPaSck65RRQdJEh6xXMdW2iOnpaPm1eXdpN6it1ejZX2ZbX892kUps6UqZJVQMN7Sf3kU+bVjNdvFH+A3lOAWD5FtW1vDZSvmUNKdWgojQe3F5aju4mZZpWVUBZRbqFCOZCARFDhgyxZeAd+YcKIv5TfRORgJPnsu259BwJnTPk+az6C443nNbNpqTSQBOhZD0NepUMcdLT/0AbqslbF9i6KwxhADIY3mim+/iSbotHWm4E55i5xHReysZ3zd61QnvBzS0vrNviEQbSDp/KMD/BWitbEiNzh04BE0QwiJYQKbkNImpYJ6vd3EEqtzHWQ26ujfDQNVOtI8T7EfJfqJ2wWtr48p72uXV93vEzpyw/oCAggsTKTz/9tEArVhLh7bRgiE0FrzGhnXXMeHeATi1AxOVzUlpBBHKoMqaN+WcABT6d35Gg4AzQxHRy2g0A8xd//8J+u0WJkqIs3+HE2WzrXCID1i4BRLAAHvkr6IvOZplhjazdYTiihsqLtXAA54BJpmNbsqbWlSMKPoh+0B4QEWIIi3cmMo3/T9T2xfQYt9U6r1XHtrX3675kpHScP9SAzCeD68uWA5EuiPCnYEAEU6l2p+0zg+JrgkxtY3jhRUX3cUeSbNoei++gzH+r+kdb/hhg8dPGL1mDTZ4CY1jMa5+zc4UphGmEL3QtJ0mZqdZzomx6RIStWEfgxW6fekNfKeYYeA6hscoKXHAWlEPYcpM6kOe1F8IQB86fSoPhNp6qIKLa49b4k9wUnbrPKgeVC6TKfUxLBHxg+IyRUlmZ4kbCTatZfa03QdTlj4b+QwcR27dvl/nz599XEMHwQLtJfeQPzz1hQwYOCKjbu6W89PGbUkIb6he1ka/Svp787+9+JeWb17CGiJ7vcwo26vZpZUDio7qfWYP+lPLrn75vDcqHNcvK49oA0cANXT9NanRtLO9U/Eg+bVbdyn5TwcXTrz8vf37pLwY6iGQ8++5LBhDKakP2XpVP5MWP3rTnv1+1tDWIf9H3azuxtzz5yl+tjGqdG9k11To10GfcHxCB87zfiZWD1nj08KfntaGoUsqiO395S4GdygLdvKuyeK30u/Lyx28pIPhUZfKm/d46vZsb+HpB5fdamXcNWP33z34sj7/0jDyuQOH9aqXlwxpl5Ac//qH8VcsDzNXs1lT++LcnDZS8+dmHek0p+eZ3vy1vVyghv/rzb+XN8h/qezxpEaWXVbZPqKzfqfyRArq3TE8f160gv/zjb+Slj96waNGz776i+iklP9P6AaDIHXIKgkMBEUwrLEhOBA0m0QNsk0adiOSGvTvkPW2YiTaydgeNPDkRvZaNkT+2fk+2H4i2iMXz6muYNksEkl4yvopv0TA1t4WWV2VMaxs/ZziDKc3zwtcYaCBq+pSCERpNOkyDVzPVepM1jP/X4m3zF8mn0s2fkKRHIiFDokQmAB+RKXHWOOJX8SG/a/m29nJX2jTaEgNrWyPNGiC8D+/ONeR68W6E5idsni8/Uf8LEGLI4Let3s5NDHdkEgqIQBfMkuHLto4eQo5E6PPJ8yBig/8mSkzk5zf62xnGwM8ybLRNZf+RdvTwo1sP7LYoTv0pXWTR7vV2P0M0+9XmkDu//9WeFRRQTLap5e/1r2kLuzFdmVVf+fYMnVnWXUF2ABYA5EuqT+QOkKQNIKLw86av2pAH06ppD4iUsCYOybbI1/Lk9B7ApieHooS1X9xPmQyZA9RazepngI7hDXL/mMbKOjx8vZeOLbJ3ZOKCiHsMZyBQQoNMAyRSMHLDDEOVzHrAkVca1VLqT+4iXRcPN5TKugMVR7e0DFYqBCEvGvKBKycZ6sPxNJ/ZR/7Y5j2tNBMtmYkhD+a2E2Yiy5rwJMdnbF9mIS8cFcj8v2r/xaZ4MZ2LDxRRMZgGCprFCElMmhA235IkGYcEBMGVxrS0Dw0RMiMLl97IrB3L5c0+VSy8RcXj2UxPAoBQ0Rgvw0lQeX2dGRwMiCiMr3jei+k19lMdfKANzR9feEp7mDUtgkCPtkTNclKhdW0DA63Gdpcf/vR/pNWY7gYiei8aZcMMT76ioKHs+/LWZyXk8Ree0Yb+YwMJNGo0Uk+8/Fctp6wM1t5aw4FttfdbQ6p3bigla3+qgIWG8kV5p0JJ6wk3G9FZ3qnysZ5vIE+99pwBkI/qllcg86m9Fz3nd6t+oj3kvvJu5Y8N4Pzs97+U3zz5B6nVs5m9V6DfmBcXp0jEIJUPQznIo1rHBvLs2y/KCyVfl9o9msorpd+RV0u/bTqq0Ka2/EIbcEDeCAUEtXs18wALldELH74mz737sjynwAMg9rbq5IMaZRU8vGTlwcM3Tbcoxnva6Ffv0lieePWvpieiDYCHZxTUEZ0ATL5R7kMp1aCSgoU35W0FfzznZQVuHytgJELUYEBbe8fn33vVwBxltBrd/b6BCKYV+jZeoYIIGMdNj/6njV42n4KP+VaNP5vdM5OBaeE/a/Kq/EQ7MDQgHKOc/673vPyy6evm/LFtfAb+6ydNXrbMfSKsv1AfQBI59xG95D5sn6nsHGf/J41fll9o+SQG0qPlfX5p7/GCJRxyL9f9T/2/WXI3+yTpOTMDaMSIonKc/5mlZuXqO3xbfwe+Ch9KeYADGmwiMDyP30JD5i+PUEAEjC587SBUEAHzTvTqf9nsNZv1gl/mtzCjgSFr5PwL5K36IfHd3r0+60q8YMnw5KOwBg/3MzuDa222isqXWRqUjawBZT9WEIWM0BtyYZ8ZHuiLe6gPPMeRF3pBn79s5pkZg+xI+kQ3t9//afmZ1gH8Pu0E9Yz7eRfK43+2P2vyml3DjBSOsc9sHqcch10QcQ8QAX9Hj/9b1T/IN6r80aINVHSO05jSCCPwb2rPn2P/rue/o/+zzz3Mw8V4/q3aH+zcv1X7o3xLhY5SuJ9nMo2JfZTBNczv/U6NJ+Ubej/G9R/V/2TPwMi+qddSLu/xnZpPmYE67+E8k4rBvsM8z47r9VxHuU7Z3I9R8Fx+H8MgvBvvzT0807csOBgQgaHiNO93TgRAYvDayZbrMHjdFPufz3JbYt/KiTJk7RQbfnhXG3gbg3eYsXZ9JsmUA7URdMriM9/2aW6915Lw9Do7531ef8bmuY57dOsp03O9XafHaVxs/J9z3vt4H7te9wfrO5EjQCSDRpbhFSvPuTYIDhZEdO/eXcaPH39fQQSMTKp2aGCNNSCOoQ0SUat3bSw1uzeVev1aWw4JwxS9F42263svHiOlG1a2Rr2WgoNyzaoa0KraqYHU7dtSgVZZBWzlLRqBvJBR63E9pW6fltJiVFfLcWD4CJBQp1dzqdSurnSZOVgqt69v+SdEf2CGRwAfRJMaDWxnW3JiGF55X5/30//7ufziD7+2nBjqQ6DfF4hDARG9e/eWRYsW5co/PyACxl6xYxqt/6zt8VfYKP+z/U89hz1znGM0LL7nneNcg5+gMfPcp+e1bK73lP205x6O6Xt47tGerJaPP6Oc3OPOe3jLpjzffc45nFsu1yizz+9henruNbybHnd+P+/I/z/wKys/ICI8PNz04eghPyDCebbn3W+/p/0evd75Xb6/kS0dUuTne7+vPAyccL/XJ9t59Om9x7nWIw/Pc3yPO+/h6IV9rnXu92XnWez76xG297Z38HmO/v897z2+7IKIIECEy3dyMCBi6dKlMnz48PsOIhymUfLdMjxk/ysIoJHus1gbLgCDnnd4gJ6j0afxtIafxD7vPmBigHO9AyS4nn0933fpWO+5SbbPPXbee8zDur/GeR+fd9TjXM8QQNc5Q0IGEHCwIIJlr/kE9f0GEfDQDdNk2OaZCtymGqBjmIMtURb2yzWrbg33QN3neuRg92yaYTkhwzZOlxHcr9fD/G+s553hHsoZYmVP1mumyXA9T4Ri8Dr9X8tC7vY8BWrcxxAI7zBYyzdWwMmWiMOwjdMswkS0okzjqp6kW6+OguFQQASfAp81a1au/PMLIlz+/+29B1hVWZb3PTPd88434XtnpnumezpV6umu7uqq6q6ctEylpWXEhIoZkAwqBoIgAio5BwEliYJEBTMKRjDnnC211CotQ2lVV+r/u//73gOX60EvcO8BrbOeZz333HPOPXDW2uG309qN2lKI4MRKZ2dnuZeM4ofWQoSujapDhA4RLVZLIKK4uFiuDNAKIh6mrHhY4CvKyqLh71VmyhYsW6isqFjJcVUHQYHXOfOf0TB5PJ+V7IoMzClKkJMGOUkzelWmbGmzFas8W/4drhTg3yGUyJUDTf8nAgUrTlZq5tcsUUshor6+Xts4EexxUTsvlGAWtzZXVtQStowqe43EJyc2hi3jpL1MzClMQHhJsoQC/rbhXpPjeeVpmF0QK84ZzocsiTP6pBEWzX9rruwVMoBFtur1hyn9bClEcKXS2rVrG+yvQ0TbtaUQwYmVo0aNalPESl0fVB0idIhosVoCEdwtb9WqVe0OEQQIjnm/0vUtUdlPlmPi7/brhr4Thsj5Cd2G9cGvfvsURvo6ilZwvpxTwcl+nQb2QEBupJx0yTF6Lg/tNrQPuov7ufTwmRf+V86nYDd7r9EDMTbAHV3sPpQTJSeG+GBS+FR0GfwhuorfzF4c02wl1lq1FCKoCkBoAhHNqXh/LsH1XxQhK3r2wBC8CGT8u7PyotFnnJ1crRFfnYthXmPlqg6CBStrLqWdJfzBOTA8nl0QJydCcj7LjKxwhJemSB9OSQpCsLhG385jWOuSFPiLv8MluwoMWktbAhGswEy70XWIaLu2FCLoi5SUFLm7sOIHHSLarjpE6BDRYrUEIpSE1N4QwYKe4/R/fP1luQyUE+iGeY/Fi2+/gk79ukto4OS8UdMckSggot+EYejlMACvdn8bA1xGSCh49k+/k0s9CRdcGjrGb5Jc6ukw3Rmvifs483+I+2i5OoDd4m992EmuUBgf5CH/7syM8BZN2LNELYWI8vJyuXtke0IEAYr+7e9sj2df+C3s3BzkqhdOXO08qBcmzvbGy++9Jq79Tq5soR84h+XlTq/JFTNesQFy0uVzAty4OuOld18Rv30DTuL4hTdexgtv/ln2DHH1zCC3UdJHf3z9JTmZlf7lJNcX3vqzhBZCpdr/2BptCUTs3LmzydJCHSLari2FCLVVSjpEtF11iNAhosVqCUSQ9tmN3p4QwcorrDhJrrzgUkMuOezU/wNMTgwGl1myZ4ErMriawmGGk6y8uFKAvQvsZWBPwp9EhURg6Dmqv5wE+bu/vIABk0bI5ZpcVvpmz07yviGeY/CegBJPUeFxxj8DUw3zGSd/zwBY7QUR3LVQi4mVD1MOL4QUxsslls+/+ie80bOzXALqFjldggJ7hoZ6jkXXob0NELEhX/ZKcKUMe4p6juyH13q8I3uMeN8bAgYJBVwV864M5jUJbwnI6CJgkT1MBA6HGS5yBQ1hjhMruWTUL2uenEuh9j+2RlsCEUFBQTJ2imJ/HSLari2FCH4yCJ7sFTL6QYeItqsOETpEtFgtnRMRGRnZIeZEjPFzxfDJ42UrlpEnA3Oj5HLDoLwY2LmOlK3eaWkhclyckSd9U2fLuRGM/cCYEexi55yJceLTTrR4pwt4GBPggtmLYyVwMBqld3yAXHbIrnP+lks7f/O7ZyS8BIn72gsiOLmVlVd7QgRb/wwy9UrXt0UF39kwLDS8L6amhshYDbQxQeIlARQOMybJCY92bqNkYCnGlegq4I0Q8dJ7r8reBf6ePUAEBsZ4cAr1QVcBch8K0Bvs5iCAbwCchQ8YK6LzgA/wbt+uclWIoSeifSBi5syZcmt8xf46RLRdWzOx0sHBQZ8TYWXVIUKHiBarJRDB5WzR0dEdAiISuAKgOk/O2mfgKDkzX5wzzNDnioD8hgmOXBIaI47lCgEBFbwev078dg1XDPA5+fJ6gvE5fB7v5QQ95dlcLcBZ/4wxMSHIS+6v0pJZ/5aopRBx+PBhnDhxol0hgspeIcbpmJwwSw7vcG8RTqLkUkxOoGRvASNIcu4Cey78cyIQXBAL/4XzZIhx77hAeMb6yTkSDGnOXoyw4mQZcpxhyzlnhYG8AnIiMSMzXJ5jzAhCxk9/8TMJIeFlKeLZ1vNDSyCCW+Nv3ry5wf46RLRdWwMRY8eO1VdnWFl1iOjoEMFtv82CrLS3WgIRR44ckVErOwJEtIdypQe75QkhatfbqpZCBCswVmTtDRFUuWxTQheXfWbLCt3wSagTsEawM/YUEMp4bFg9IWDOCIKGpZ2G5Z/y2HgfgY/H3NehYQmo+M4JmIwpEWSDya0tgQjFD4r9dYhou7ZmOIMwd+7cuQY/PAoi/p1B+8Tfak75f6idt5Uq7652zZb6sL/LOEY6RAghRDCIFBOmuhoytBJ8Rf0e6+tPxr2C/7R/GT91fE31ensog1BVWjCx8u7duxZBRMKqHDlznoVyR1JZWYiKR+1aeyv3FFhWv/KREJGbm4sVK1Z0CIjgBlemqpwzvWZ6f8N14xJQ03NyAy/lunLO5Fj5VKCDUUd5zppKP1gKEdXV1dizZ0+D/R8KEYe2GaNLviqDP6kpy6KfGoNDaaEy4JBozKhds6my3BUNKbVrDH7FaJC2mlg5pyxJRuJkkKgH9TUwKKD838Sn/K56nzXVEBiMdZD6dVup+Lvib/Jd1d6TgQ8dkqfqEMHdywgRTBhqyoTyX6Ii/y9GoBSOVLvH2vpT4bR/6/Ycfvxf/4L/sH9Jfle7T2tltMvKvQ+HiEOHDlncExHfESHCGOchvDRZ9pLwu+p97aSWQoSlESsZx5+bYs0T70qQ6EiqQATfW+16eyn3vWFrdcUuy+ZELF26tMH+D4MI7oPxu6kfyNDHT3sz1HCjMqz1U15d8N+Ob+CXAjT43fwea+szPl3x83Gi8hppCLmtxd+k8u/82v09We6q/d3fCDu8PLOf3BHTEoigLxh47fz58w1+eBhEcO8K7mPUNdThQQ1zQKfZ9njTz05uEcDvqvdZS8Xz3w8ZiV8MfBnPOrytfo+tVPzttwOH4K0AO9X3fDt4KAILY3SIYELk7mbcbEZNg0sT8N9vPIv3xvXBnIpk1XusrcFlieg7aTj+70//E67xM+V3tfu0Vm4oxk3DFFGDCHYbzrVgF8+/fv1XuQMgN/GpOVLXYXTT8R0Iig/HB0M/wor69dh0bIfqfe2l3HRn37kjj4QIAgTnpzwKIk5eOYfM6kJkiYJzYc2yDqM5W8rgExOIUVMdsaB6qeo97aVZG4uQvr4AGw9tfyRE+Pv7WwwR3OmydNcauasjt4c2VZ7PrSnB/7z5O4wL8kDZ7nUP3GNtrdhXjX4j7fDs8/+L7PXFcodPtfusreV71sE/PRz//Pv/Qmpl7gPvumzHKpTvWo8vv/7KIojgnIihQ4davIsnP7/7/jtVpezdtxdu7m44Ip5HUbvPWsrtwu+Kd3vnrbfh7Ogkd/6kqt1rbaUkJSXBT6Rhivn1b2mn76g/cIiwRH79i1/Bd8pU4zdtJDc7B8888wzOnT5rPNPxRA0iGPY6ISHhkRBhmmk7mkTOj8BTv/41Prv+qfFMxxHayzTTNgcRHP/lkrZHQcR98YzP797GrS/u4Pa9ux1Gv/7bt5jk6ornnvstPvnsGu5+eU/1vvZQ2urm3Vu4c+8LI0TcbhYiGHiNsSIU+z8MIh4l9+5+gV/9/BdIiIkznrG9TPedjtdfex33794zntFG1q1ei7//u7/DxfMXjWeaink+eBREtCTs9aOEW7v/5D//E7W1tcYztpWvvvwK7737HlxcXIxntJNhw4bhhRdeMH57UNT8oEOEivxaVCg+Pj7Gb9pIVmYmnn76aZnwO6qoQQQrr4MHDz7eEBEZiWeffVaOpXY0Mc+0zUEEN0Fj9+2jIKIj+2HqlCl44Y9/xF/Fe3YkUdK74oNPHwIRrMD4qdi/LRBx69Yt/PKXv5TpUyuZOnUqXnnlFdy8edN4RhvhfJ6///u/l3Fn1MQ8HzwMIpj+OTfF0jgRjxKC4f/8z//IVTdayJdffol33323XSBixIgR0v/NiZofdIhQkfaACMbcfxwhwtKtwHWIaJ2YZ9rmIIJhfpctW/ZYQ8QUARF/FBDBNNWRREnvlkBEWVmZ3JJdsb8OEZaJNSGC+Zi+MM0HOkRYJjpENCM6RFhH1CCCXbcsAHSIsI2YZ9rmICIsLEymIR0irC9KercEIqZNmyYn9Sn21yHCMrEmRNAXDL5m6d4ZjxIdIhpFzQ86RKiIDhHqogYRnETGCkyHCNuIeaZtDiLy8vLk2K0OEdYXJb1bAhGzZs2yOOz1o0SHiEYxzwcPgwgOY7RkYuWjRIeIRlHzgw4RKqJDhLqoQcTKlSuxYMECHSJsJOaZtjmIIDgo48E6RFhXlPRuCURwKINzhBT76xBhmVgTIugHb29vGcFV8YMOEZaJDhHNSEeHCDqGEMHVGaRnSxJ2e4gaRLDi5eRKHSJsI+aZtjmIYMVlSdhrHSJaLkp6twQiOLlVTq402l+HCMvEmhDB9L97926DT4x+eJwggu9HiHB1dTWe0U50iGhGOjpEMONMnjwZP//5z2XkQU5U7IiiBhFMRCxwHmeIiIqKkhBx/fp145mOI+aZtjmIiI6OlkMaTwJEsCXWkURJ75ZARHZ2tlwZoNj/cYII/l/0wWuvvYYbN25omkasCRFsDBDm+F3xw+MCEfyfWJ6+8847mDRpknxXLf2gQ0Qz0tEhIi4ujoaX+rOf/QwnT540XulYogYRNTU1KCgoeGwhgplg9uzZeOqpp6TdmTk6kphn2uYgIjw8HIsWLXpsIYL/F7ugCRGEaP6PHUWU9G4JRPj6+iI/P7/B/o8LRPB/4jJhziX4/e9/j9WrV2vaI2Tt4Qzm6VOnTjX44XGBCKZ9+pt+//Of/yx7qJlvtRIdIpqRjg4RTPgvv/yyzETTp083nu14ogYRlkas7IiVF/+XefPmyQLixz/+MXr16iVaMBeMVzuGmGfa5iCivLxctoAfR4jg/8L/vVOnTrI3LjY2Vr5fRxH+f7SZJRDBvMBlnor9HxeIoLBHjvlAFPZ49dVXZbmklVh7YiWDJj2OEyv5fkOGDGloVHJ4SUvRIaIZeRwmViYmJOCZp5/usL0QFDWIWL9+PXJych7bnggWEP/8z/+fzLCjRzsYz3YcMc+0zUGE0o37uPZEpKeny0qEfnj77bdld3pHESW9WwIRnJvCPKzY/3GCCO7I+9vf/hY/+tE/yBVXWoq1eyL8/Pya+OFxmhOxd88e/Mu//IvsHb0s3sW68vD31SGiGbEmRNCAcjKhSOznz52zin588QLqttchwN8fFy6cx4Xz51Xva5OKZzLjtEXUIIIFHecSaAERHCs8d856dlfszElMP/rRj1AhWvNXLl964L626r17rQ8hbJ5pm4OI+vp6HDhwwOYQwd9xzgLfyZp64cIFvPHGG6Ii+TtkZWWJv3Ff9b62aGvTv5LeLYGIM2fOyHdR7G8riKAv1d6xLcp38/H2xrPPPoPDhw+r3tNWbc4H1oQIKgGC3xU/2AIi+L/wb1izTLoo0s7Zs2fQs1dPTBg/XkKEdeuDszJ98n9XEx0imhFrQsRN0UJyGDMOfexGYvjYSRg2xrnNOlTo8PEuGDnRHcPHucjvVLV7W6P2E9zw0itviJbGIeNbtE7UIILwwErL1hDxt799D/+AAHTrPVDY3UX1PS1Vxbb8tB/vip4DhuH197pixHi3B+5ti9qL573+zvsoLi42vkXLxTzTPmxOBCtfW0MEt32PT0hE+PwoRETHWk1jE5JEwdkHv/zVbxAUEobouATV+1qrc8LmyiGT1oiS3hUfPAwi4uPjZbwOxf62goj8/MUInTtf9V1bq7S5z5Rp6NqjF2Lihf1j1O9rrc4ODcfGjRuNb9BUrA0RHMqwNUSwwddvgB0GDB8r8rsV6wJRBwwaOQGDR03EMFHHWLUuEGXSS6++IVdyqYkOEc2INSHi+rVrcPacgqItx1F7+i42nrjVKq05eVuq6XHtqbvGzztSlett1bpL38JurBt27qg3vkXrRA0iOAGLO0jaGiKYaP0Dg5FYuB5bzt5XfU+L9KTB3jxWbL324DWs2HUem87cs6rdt1/8Gt4h8cjJzja+RcvFPNM2BxERERFyWMnWEHH58iV0790PIamFmJdValWNyl6OkKTFiBSf87LKHrjeWo1YVI6xXoEIEBDaGlHSuyUQoVXEyuEjRsEnNFG+m9o7t1ajclcgYckacUz7W9EH2RUY7eHXrA+sCRFcYsvVbrYezjh18jgmuk9F1d7LstxQKwNaq5tEXUBleSVV5Z7WKMukQaNdsG/vbuNbNBUdIpoRa0OEq880FG89gU0CImqEY1qsopIyHItKjBUZK63jPEeYEM4+fgsbjn0unP654Zz571uo9QIihk7wwK6dO4xv0TpRgwhG59NiYiUTbWBQCJKLqrH13H3V97RIhX1rxSdtLmFB2JoFwKbTXxjtflP9d63QOpFhp4iCPjc3x/gWLRfzTNscRHBuSl1dnc0h4oqoLMc4uWPzmfvi/b5pkzJdys+PDVonlIVcw3dxbP6b1ujOy39DUtF6zJkzx/gWLRMlvVsCEdzRtqqqqsH+toKISW6eKNl6Ejsufa/6zpZqow++lcf8rOOxVHGP9EPbddcVIHHJWuGDEOMbNBVrT6y0t7e3+cTKUydPwNlrOlYaIUKtDLBU+XtZFxgbMbWnDPWCrCv4nZ8qv2upMk8NGeeG/fv2Gt+iqegQ0YxYHSK8fbGMPRGkz+Oism+h8ndZK7YhIDoDmwWIRInWhH/kAgTFLkTkwjKMcvXFOE8/LCjfJBJP6/6GqbIgGDreNhDBjMWNn7SCiCTZE3FP9T0fpcyISzYcwPS5KRLQUpdVw0/YnX5IFK0vBxdfjHGfgcSla+W9as9oiW6/8FdMnpOgCUSw8NRiYiUhYtQEF6w9dE31nS1RFmblotBZUr1fFpCl204gb81uLN14EGXbTyK9rAYZIu2Xbjsp7914/OYDz2iJskUXI1rYWkAEW7+cf6TY31YQ4ezqjsXr97e6DKJdq/Z8jPy1u+X3FTvPIXfNLvnM8u2nsKBsk9SSLSdQI+C6rT7YLCA9clGFJhBBX3B4j0tWFT/YCiKcvKZJO7alvCgRdUnxlmOyrC+sOSTLqMLawzI/0AeZFVuwSoCK7E1Q+X1LlGXSkLE6RLRYOhpEbD7zBRat2I63u/ZCoUgofYePg+PkIPToNwyjXadhwCgnCROlW090eIjgJDuOkz8WECH8Vbz5ON7s3APZK+swymUqxnn4odtHg+E6IxQfDhqB+ZklIiMfNLQA2phptYQI9kQw5LJ2EHFd9Z0t0c1n7om0sR7d+w7G+iOfYtSkKRLgBoyYCO9ZkXjlrS4Y4eiDuLwqmVfa6gctIYIrHEzjE3RUiGC5slRUWF0+HCgA4jy8AiNh5zAJvexGwjc8Ea++0wXDJngiKrtC2M/QylZ7jqWqJUQoIGGaDzoqRDB9hyTmifLZDSvFcwaMmIAJk2dJ2w8e44LuHw3BSOfJEijoB7VntER1iGildDSI4BAFyb6f/Xg4+4agz5DRiM2txAcD7GUPxHvd+8BxShBW7buM5fVn5Zi92nMsVVtCBDMqC83HASJYEDIjjhYV1nhvf/ToP0z8j9Xo3m8IPALm4/VO3aXdCzcexrLNx1C5+2KbCk8tISIkJETOTXkcIII2ZZru0mcgQlML8OHgkQhLXYIPhD9cZoThnW694ReRLnsl1h26huqjn6k+x1LVEiK0ihPRVoig1pz4HB8NHS1t3Xuwg/TBex/0hU9QlPDBh5gWlihBg8Cx/nDr/U3VEiKY/jm0R38ofuiwECHssrh6P97v2R9zBEywQRkUly0/+wkdPGYSAmMyRX65KrX6yA3V51iqOkS0UjoaRFC3nf8SAdGZ+OVvnoHbzHDkrNqBngMNEOEoSLSw5jAqd13EwFGO4tpOOf9C7TmWqC0hoqKiQo4DPw4QQd167ktELizBM7/7A+ydvGVvT7c+dnDzn4sRzj5YuuEgyrefES3iaNFCyJdzJNSeY4lqCREM0MQJfY8DRFA3Cx9ODonFU8/9XoDbLKQVV0uIcBV54aOhY5G0dK3s2vUWFVrc4qo2pX8tIYLB4hjBVbF/R4YIVmChKUvwuxdexqDRznJI6b0eH8EnOFo0bBykzdiIic6pEKCRJlvNas+xRLWECE6sdHR0lJsZKn7oqBBBoCakDRnrgr+81UnmCTYo+w4biwEjJ8Jlephs6LAOcHD1RcG6fa3+W1QdIlopHREimBDKt5/GOI+ZyF+3V46LzZyfjsisUqSX1oqK/2vRArsB+4leWFRV32EhgssX58+f/9hABO1etfui7HHIrNgsextmzE9FbF4lEgpWyYl9BAeX6XMQHL9IZnC151iiWkLEjh07NIkTYS2IYMXOdP/0b5+XwJArCslh490wLTwZ/lEZ2Hnle3HfTTlXZfLs2DZVYFpCxMKFC7Fu3boG+3dkiGCZwrH4P7z8GsJSC1C8+ZjsTveLTMeMeSnYefk7mVd6DrCXQ39bzrQ+32kJEZxYOWrUKBw7dqzBDx15TgQnis9NK8QLf3lDNmISC1bDQdh7vGhQZlfVybyQXlqDUc5TBEzUy6FWtedYojpEtFI6HkQYusj5+23nvxKF3BcyETKTcpUACz1eZ2+FHKOvPdT6vyVI15YQwd3ymMm0hggSfMvUONNZHHNIY/uFr+TYvLT72fuykqLyGif0sSXAeSm0+4PPsky1hAiqAhAdHyKY/g0rYYo2HcG6w9flsEXZ9lOo2nVB9sCx0mFPxOyEPAQIqHhceiJYgZl2o3dMiDDYn2UDfVC69biw/3VUH/lMHJ9E5Z6LwgcXGoB7dkKu7J1Q8oL6Mx+uWkIEfZGSkiKfpfjB9hDR2nLCsPKCw0Ulcg7cbaw5cAUV9WewfMc5mS9YJ+Ss3oEJXv6Iz6+S6Vn9WY9WHSJaKTaBiM3HZYWzUWTCDcduWKy8fyOXb4pWlvwuM5nxGeJ4A4+V70dvyERVw/PG37dYxW8JEUNsBBFKQtISIlj5rxcFnqx8LFQWkJzEx891h/l5Qz5jPY+Pis+jn8pj3sv76BfD32g8Z/q8RynvJyBqBREch+fkSi0hwpAuW5n+5e9uYutZIxCKZxEUlKVtvLda2J6rOFjANuSJFir/jpYQwR4hRntU7K8NRLTUB7S/0Qfit1sEPNfKpeX0wReooQ+E8l7DyozPsebg1Tb5gICuFUSorVKyNUQQyFpWRojyRtwvyyDxSTvRl/zOHmgu+ZegLY7XHbku7c/GjfxtC8siRVnObb/wtQ4RrRFbQETxlhNYs/+KnMuwsGoHFq20TLMq65BRsUX8ph7Zq3aJczuRKc7xuEHFuexVVMN15TyPDar+7Ad1p/hbW2UPh63iRDDM7/79+zWDiJRlGwSpX4Vf1EK4BcXCIzjh0To7ARN952CMVwCcZs6DZ0giPILi4OgbBi9xzO8GNdzLY8P5JHjO5rE4Jz5Vn62inuIZrv4RcqjENzz5iZxYyUJw5d6PsbCyXiXdNaMin2St2N4k/TPvLDRL/6ZpPmf1bqnK+Zakf/k3xCcrsZjcSk0gIigoSMZOUexva4hgJUObtsQuDWWQ8J1iVz5DKXOUcw3fxXHOmtb7IGf1LgnvXOmhBUTwk0HwZK+Q0Q+2hIjVojxaVFUHt1nRcA+OVy0TmqgoHzzEfW6BMXDxj5LlBcscd3HNPTjOWBYZVCmPqD6hKaIsMpRJsjySz7FM3UR5NysuW8LckHHuOkS0VGwBEWV1Z7CgrBbBmasQU7YX0aW7H6lRJbvgGJiAsTOiMXZ6JGLK9yIkdyPcwxdi/rId8npk8U7DvaXiWHyPEsc8x2s8z3Omz3yYxlbsg+ucDFnpDpvoaROIYIwILedEpBbXyO7X0Jy1SK0+h9T1Zx6p6RvO48ORbkLdMdBxhrDLQYQu3owRPmGIqzwsbRxVtgcJK4/K79Fl+5C46hgixfmY5fuRtPq4uHZE/L2zqs8314xNl+E+Jw0F6/dh2rxUTSAiMTFR7qiqFUSsZ+W1fCuCFq4R6X+PavprouKeCJHGx4m0P9p3PpyDkhEt0n/wovXwmp+LiOJ6kcZ3ivQt0rq435D2hZYYjxu+W57++ZyZScWyazg2v0oTiJg5cyaWLFnSYH9bQkTBhoNYvuMsxkwR6Xj5AVUbmCt9Nc4vBmOnRcJpVrIod+oxr3A7nIQ/Iop3PGBrpbyhXww+YTmm/mw15f2BaeVy2bQB5LSZWDly5EjN5kRwKCgiqwSzs9cjveaiapnQREW5xbJmgqgLPMKzEbBgJdI3XsC8onpMTyyVx6nrTiNFKMuclPXiU/7ujDh3CmnyOaIsWmf8NH12M5omysDp0TmoPnwdQ8frENFisRVEcLJLXPke5NbfQM7264/QT7FIVMKDnWfCNTQT3ezGwTsiDw6T52GMyNBjZkQJsIjCKPHdN64IvrFF4nu0LKTHzRTEOmcBgrLWIDBjJfJ23FR5/oOav/Mm/FKXY+3B6zaDCHajR0dHawoRZdtOIHLJJuTUfSre85oFeh0fjfbCtMRi9Bs7GQ5T5sErIhdDXAIweup8jPCag5HeoZgwM1aczxE+8oOb8NE4YX8C3sRZCQL2Ngg/W/b38nffwpTIXCzZsF8ziGAXOgMdaQkRC5dvQ3zlQeRKP6inQUVz6z5DZu3Hwv4+AqQTMWD8VDjOSsIEv3gJ1fTD6KnzMFKAnX96JTzn5cApOEUcV8nrbqEZmJW5BnMEdFua/pnn5hXUokIUcFpBBEFuy5YtDfa3OUQIQHIJSsLiXbdV3r+p0k+59Z+ht4M7XEMWYPAkf4wRQMdy6CMHT7iEpIvyZ64AjAhZbvjGL5NlUEjOBukXx1kpwgerZGVpWZlH/RSRRdtkPJyYPO0gYuzYsZqtzuDQHgMGzhcwlruDdlEvFxpU+CFRNEre7+8g03n/8VMEVKdI7TvaU/gmDaN8wiXohebVSr+wPPKJLhD+CRd+KcLUuELErzhkeRko/B6YtBTVRz7VIaI1YrOeCAERsYLYmVkWbf3kEXoVC7dcxoAJU0WF5okZSaXoKyo0VwEHdiIzv/nBINFKnobh7sF4r489xgtweK1rX9mCHu8XJxJPGN7uNdiQgS36e5/ISm9mcrlM5LaCCAbXYaGpNURELKnFom3XVN/bXLPFfSwkWTAmVB6CnfMMkRGL8U7vofL8ULdADHMNxPv9HCRkvNFjgMjMXrKgZQH79PMviZb0bgv9/AnyBLxNFhCxVEOIYAXGikzTnogV2xC7fJ+w71VVO5gqfZBRcwE9hzthwERf+KUtR4/BEzA1Zon83qmvPT4Y4ijBbuCEadIff+nUC33GeEno6D9+Mj4c4Sohgula7W88qFcxN3+jphCh+EGxv80hYsdZARGJAqxuqLx/U6WfWKH0sndBf5HO/VIr0F34IGBBlShzhqP3KHdZ3gwS+WOoq7/whT9eeqc7hrkHSZ+wsdNF5JEZyWUW/T2DXkXE0i2aQgQ/OaR07ty5Bj9oARHzlm6Vlbq6HRqVfkhafUyU7/0w2jdCAkFfAde+8YV45b1eGDTBF30cPATk+QmdKeuFt3oMRLfB4wV0ZGOIawDe/mAw0jecsyjvUbNF2RWgQ0TrxZYQEScqFxI+nflwvYaFmy/DSbS+ODyxZN8XsoXFDMyehkFO0yVxekfly8w83CNYEioruIC0FbJ19nqXj2RvhvrzH9S8HZ/BL6XCphChdcTKhp4I0cKUELFNZBILdEZSmcx0i4Rd2H3I4QufqMWYKezDHh6qT1SB7AVyC8vE9IQS4add8E+rRI8hE0Ur+qKwqWV/L28XISJH056I3NxcWRBrDRFxK/bLikkt/Zkq78kQNuQwXvLq47ISGuEVIlu5LEiHeQSJSipCtszYCusjWssEuVGiBczetykxhegsWm45dYaWldrfeFCvYe7iGk0hgpNbuWJJsb82EJEkex3VbWCqBts5TAlHQtVhLNl7ByO8QxEhyiOWNWz5ThQNFvewhbIXjrDRR0D2RP8EWTbNLdiKN0VllrrulGjZWlLmUa8honCrphCh9cRKA0SUtRgi7D1no2DPXQHiBzBB2D0kpxo9hk6UdYRjQIIoh7JkvTDIaYYA7WnyM7ZiP0aKBmU/4S/LYdoIEYlLdIhordhsOKNkI2JKd8qMsnDLlUfr1stYICqyjNpL4vsnslJjwbpg4zmkVQso2Xhe6AWkV59H6tqTSFh1VJw/i6xNl2SPAjMyE4Tqs1U0p+66aDWU2hQiDh06JDOXlhBRXn8as1JLMW/JVqFbLNLI4rrG46I6zBcZPnLZDkQsq0OE+E6NLDZ852ckP8U5e89g0RKOl8dzCx58rppGLKuHc0AcimoOaQYRrCC1nFipQERMxV6RJq+KtC3SnKKm6dDkXJZQpvmszUz/V2Ta5hAHz6VvOCs/F9QY8kDSmhOyy5fneM/U+CJRuWXJQrrJ8x+qnyAsb6Nc4aHlnIilS5c22N/mEFF/BpNmJchu9CY+MNpcqtk5aVNRpvBY+mDTx3KcPV2UQyyLpA+EpogyiD7gOZZTHMrgkGuLfCDKq/kiTzD+gVYQQV8w8JrpHiY2nRNx2AARs7PXyXRMyHqU0rbxlYfE8UkkrzkuoY5zr2KX70fCysOIF985D4vKuSgxZfsQv+Kg+N0J2Av4niYaOaxL1J6tpmnVpzEzLk/k2890iGiN2AoiuDLDOywdkyOyMcVCnRqdhylROcbjfEyNypXnDMfik8pjob4xixvucZ+TKlu3U6hmz2xO+bvRPnNkiOFhE71sAhEcA+ZmN1pBRPKyDXI5VVz+SgTH58qokorOSc7H7CQe83xTnZ2YJz6p4jjJcCw/TVTeoxwbvzMUcFhqoVwrb/7M5jQ4Pgdz0wtRfewGpoYlaQIRCxYsQGlpqaYQwfTvFpJiSJNNNLfxmGnd5JpvTL44J65H5Mi0zesN6V+mdR7nyfuU9M/nuYekymstyWuT5y+Ce3ASKndf0Awi/P39NYUILi8c4x0kbWZqZ4ONhR3kscl5oVOFXeX1SFFGCDuznKCtDWr0g1DlnPRPVD7cZhvKIFkOmdm6OaUPvMPSZPwJLSdWDh06VJNdPAkRq/Z/gsXr9iIiZyVii2oQW7jRRMX3pRsMn03Ob0R88Wbj+RrELduEOPHbBHEuXhxT44qEis+E4i3yXmrMkmpE5K4S12oNz+GzLdAYfi5eA274qK/OaIXYAiK4xJPr3JduOID8NbuxeO0eC5X3KvcrxxZo9V7xqfzG9HkP090oWL9XBq2y1RJPhr3mygDNIKJog1zvzOh6bGGaaoUAOwZTYbRPqyq3pFY7/zCVv/lGszgRbHWx8NQKIrjEc42A00WV20XBvMVEt2Lhim0y7eWu5tLBrWbXt8jr+esM6dNS5UoXFtTq6VxdmS/Zjc64E1ot8eTSwp07dzbY35YQwSWejOGQv2aXjL7aaGPhg0phY/H+ecIHC1V8sEhcp12zV9Y/cI2as7JOXm/qA2F/6QN+V7e5ufJ/KNp4SAZ602qJJ/PBpEmTNAx7fUnG0Fgpg3Sdb6Kr9n4s45ys3nf5gWvyuji//uBV1d9S1x74ROiVJud4b9Xu81iz75J89vpD1yzQqzIWix4nopViC4iQwaYE1THaYYfWc/dRb8NgU6y8OKShFUSkl21GakkN+o/3gVtYBlxE64g6SbRUR3rMkpmSwYtYuLa3ahmxktse0xeaQcQRA8hFL65GYsnWBk0qrUNoeomMdFggKrmwjApxbnvDdbaqohavlWOz3MdENc1aUblHB/OpVsGmWIHxU7G/LSGioPqAjPI5L3sVEku3NfFBcEqh7IHME4AxP6fpdfogTrRoWUExABS/K9eoMUtrkbmiTrZa1WzaUmVwOKpWwaaY/qurqzWLE7Fq3xUsqNiK8KxKxBbWCvvVSI3KXy/yQpFMg1E5yxG9ZGPDNWp0wUYkLq1GydZjCM8sb/JbamT+OuRIQNyCiNw1JtdqMXfRSsTmVQn7tix6rx6xspViE4ho494ZWqotw17fv38ft2/f1hAiNkmQ8EutRNHBv6Jg9x2pS/Z8gdkL1/xgISI5OVnG7NAKIjickVG+GeFLtxnXsp+RumDTJUwKThEt4F2i0ijHlLgiLKj9uOE6NTC9EuWi8mvLHgAtUS0jVnJIadu2bQ32tylEbDiIXNHan7VwrYwDYOoDru4i5M1JKUBAhiEOgXI9WWiI+A17USf6hiGZMQmM1+jL2MpDCMtcjnUCMqyVl7QMe82JlUqvnOIHW0GEsxEi5i6qRGjB1iZ+SFh1HI4zIyWMuQVGNbEzNXndGcxKKkR6yQY5vNQknwg/MI5K5MJyBMdly3kRjC/Ba/ycX7wTk8PTsFVAmpq9m1MdIlopOkTYDiIY5pcFgNYQ4ZtQ3GSZGSe3BqYt/8FCRFhYGLKysjSFCA5LxK04AC59pf2p+btuY3JELvJF5caJdIEZq8S5W8brhrgB4Xkb5NCTYUt8ddtZU7WECO7iyUl9iv1tCxEH5JDGvKXbZRwOxQeMGeEemilauMcxL2MZwhdvkcuOG3wgVFl26TYrVuSfRv/RlwSOyLw1cuvpxxEi6AvuLMxnKX6wLURcRszidYipEFBnEj+Dk1c9QpLFu9+BT2iywfYi/SvXFwkNzaxARmkNApJLkL/z8yZ+YLApOQyXnC9XNNHH8rfiM1F8nxGTLXsi1OzdnOoQ0UrRIcJ2EMFJZKzA2gMiFu/6XGQq45I/oT9kiMjLy0NlZaWmEKHEiTBdcsnKyicixwgRVXIJs7L8UAKf+AzLrZZRJJ9EiNAy7LUCEXOXbG2yzJw+cA9dIDd0IkSELd4kl3s3+GDrVcxfstkEIhqXZNKXaaKl+zhDBIcxtJpYqUBE9OK1iC7fj7x6VvSGMokrWjxCkowQkWS0s6GsypYrmj5BaIYBIvyTRaOoyTLda0hec6IBIpJWHRXPNMAePxnxckb0Ih0itBIdIgwQsXvXTuNbtE6Wi4RvDhHMYFwZoDVETIkrlMGLuFSKymWwHRUi8vJyjW/RcjHPtISIvJXHH4AIpRtXc4hQlnhuviyV0SSbQkSlXIrGJYTKcs6w3A1PLETU1tZi3759Dfa3NUTkS4jYghxR8Zj6wBQiQvNqhP1PCzigDy7KfNMIETGisvtYnqMyHz3uEEE/eHl54cSJEw1+0AIiGLaadmZ5xE8uk1UgYnJYCuJWHMT0xBK5HQHjPWQJuysQ4ZdULAGvwQ/Cj1z6aYCIxYgp2425S7ciRYAFl+VGl+/TeyK0FB0iDBCxs74OX3/9tUwAFGYifmflwoRB4Se/8zyvU3g/z5Vvuox6I0TwOhMQMywzvpYQwU3FJgYmovcIN/QZ6Y4B46ZgjigogzJXdkiIyMleJO1FpSj2U+xCoW34nWrqH2ZUBvTieR6vq7+AnMrDosC83FB4cvyXm6BxNrqWELGoqh6BAhIYJGrc9CiMnxkr16RPjsyTEBGbvxJe83NkUB2GHfcS52eklMsK7PGHiH24cEm0es0g4sKFC4bJlUb72xoilmw8JGMGcA7E2GnCBzOiRKv1GDzCOJxxAvMzSzA1dqkMt8+oiFOilyA0fxOiirbLOCYu/pGYEJAgI7cOnOgLj7mLZCWlNUSwF62lELHv6BVRee9Thek9e/YYfGL0g60hIm7pBhlZuNvAsegz2hMjfUJlHAjPOSni3e9KiPCONAQS7DZ4HIa4+Ml4KKGZy5FZViuX1jKfMJLooInTZBA8Qh8hIjSlQPhlIfqNnyzykYeMWjk7ZyP84nJ1iNBKdIj4RgabioqYj6qqKuzda0hAzHBsAZSXl8sKiMJQsfzO8+wWpDC0dXl5GYKi8rFl7zmZkDgXghP5uKSNBaWWELGgfAu8IvLkXgvT4pfJzYHYwg1MX9HhIGJaeDI83N2lPTdu3Cgz4L1792TBVFxcLCfhUW7cuCHtXlJSggMHDshzrIx4D8/RP8y0hRWb4CYq64LF+Q2FJ6Mkjh8/HgUFBZpCRPbKHQjMqELPYc5wCkqBjygkGZhIgYi4xatkyOopMUvhMicdL7zxvtwDILJwW7tAREBAAO7cuSMqkfvyXWgHRlvlxGCCGoXpjPdQaS8KP1mh37x5U9rxs89vIzSrHoeOnmwCEadOnZLzUmpqahrsrwVEsML5QPjAMTBJ7gnDzZsaIaIULiFpAjSK5T4YL73dDX5plYgpqZcQwd0kHYOSZVj9oMy1cgKfLSEiIMBf2tzUB7Qp07kCEcwjvMfUB4RuZQI3r/E3Ow+cQ1jW1iYQwRVKXKlE5XfFD7aGiNgl1ZiWWIphbkGYvWg9Ysv3yjLJMCdCQER4qswH7DXiHhld+js0QERGWQ1mJhbJPX24QWPwwnWIX35QArnSEzFpdhpCsqtlhNHOfUfKRpN/XJ4OEVqJDhHfYLijFyb7eMsJR2vXrpXvwgzHGA+xsbGoq6uT5w4ePIiYmBh5nvBA4d4Y0dExcJseic27TsiERBiJiIiQQxlsfWkNEW5zMuSOkL1GuGB6cpnIkOc7JERMn5eK0aNHIS0tTY6V8z1YGGZnZ0sb044UVvy8h+eUwordsfRXUlKSbFkx0+YWrcEoZ3/hs5iGwlPZSZX3aNsTUScLTO7KOTO5Qkb9XLzrVsNwBgOCMYz1CK9QuTvhZNEKnl9Yj3mLa7WFCFGI8395//33MWvWLFnRU9hiZe/EtGnT5KoKCm0eHBwsJ0gSBijbt2+Hn5+fPLdn927cuvsFnKYnw9XNswlE0Hc9evSQm9Ip9rc1RBRsOCT3hCFAMGT+vKXbpA+U4QxChLcAC1ZQ3K+Ex+xK56ZYhAhX/0j5u0GO0+Vmc4krj4rK77z1IeLMF4jNq0TXLl1kcDqGaWdeoA+Yxu3t7fGP//iPsuHChszcuXOlrzg8RNm1a5fc7p7neMz0vDC3ED0GOjWBCEZtZdnt6+uryd4ZjRCxHl5Ri+V2BR85eCAsvxbpokxqgIiwFPinrUCv4S5yD5KA9CowoqqcWFlWi2mxBXInVe6LQdhg5EtGp5Q9EalL4DU/GwNkaPIo8dtKRJXuwcyYHB0itBIdIgzDGUcOHTS+RetktSic6o/ekgmJGZAZUUlIWkKEHM4IEAX24An4w6vvyt0Iwwu2dNjhjGXLioxv0XIxz7Qb9lzGMtGCoa3VunG17YmolwUju2jf7DEAr3X9SE74miIqJQUiuD9J/3FThJ86ofuQibIrfV7BJs17IliBeXp4yN4CwjOF9uB20YxzQgig0E6ckMdztDGFvUSEaw4Zffrpddz8/AsEJlVj7fqaJhBRX1+PrVu3Nqm8bA0RSzYextTYQrlx38vvdMcrnXrJMXeP8KwGiJgcXSB85CaufyB7jeR23oSI2sOYNHO+HIZ6rUsfdOo7QvZa2KonIjpnOSZNcpa2JazRDuwBor3ZcPnRj34kfUMfsLeUQbuYtilM2/zOxg5tzXvW1e6GV0hjjxzvpQ/WrFkj4UPLnggOZ4wTduz0kT2ef+VdObyUUHWkyXCGx9xs/OmN99HNbrzcjZPzHggRmeW1MirowInT8Xq3/nKPGM6dMB3OYCycd3sPw6tdPsIY0ZjjficzY3WI0Ex0iLDd6oz2gAhOrGTLlrOX2YU+OapAFoxBGVUdEiK0WJ3RHhCxqLJObjrEbbqHihaUw5S5SK+50DgnIq8KM1PK4TEvu2EL8JjyfYZNsdphOCMsLNT4Fi0TJb0rPuCciPmLD+DjK9ebQATnRFDlsdH+toYIxorgzr7cW4Q7BHNYIn39mYbhjHmZJQKuV8ndgrkbpHNQktwPI7JwK4pqDKsz2PMwQ1Ra3PiJG9XZCiIYsTI8LMz4Bk2Fw6ItnROx/8RVxC45aFE+0GJiZUzFfpG+98p5JRw+4l4YBogwLPHkagz23E0X11hmcRKrssSTqzNS1p0S0J0vGkgJwqfVwg/KEs/FSKw6LM8xD3Eol+WdDhEaig4RTx5EGOJE3ETiqqOIW74fGbUXEJj+w13i2R4QIXfxrDyIvJ035GZLnJGeU/+ZyeoMQ5yIgj23kLn5EhaIyoorNJ7k1RlaQwRXZ8wr3C6HMBZuFj4QFU9u3fXG1RkLliF8yRa5HJqVVroABMYvaLrE85qMubJ4920s3vm5eMbjvTqj3SBCADLzQfzyA7JcMgxnKEs8kw2rL2ovCtjYJye/yuEMkyWejKeSL8o0Bs9jnmpcnWFY4snyjvcU7Lkjnn9MX+KppegQ8eRBxIzkchnoqPvgCfhgmJMk/I46nPFEQ4TwAVu2DlPnYrjHbCSvPiFaWYaeCC7xnJW5WrbI2Esx3H22jGmg+ZyIJxgiDMGmtsneg9FT58uJfVwV0NATkbFMTubjEMdInzCh4YZIiEXbGiCClZkSQ4KVYLoOEU3EUoiIE3bnXIf3+4/C4El+ckmnaU8Et+NmqP5udlydESBhTk6sNEIEd2KVfhD+oB+aQMTKozJGBJdTL9p6Re76qUOEhqJDxJMHEZyRPr+oHu9+OEyOuc/J3ahDRDtARELVIYTkbMBHoz0x1CVQAMOxJhARvGgdQnI3yHHgYW6zELZ4M+YV6BBhif0thYj5hdtlK5grNIZMCpBg5xHeCBHzi+owI6kUPYY6YoT3HEQb50SYQgQDGBE+ZqYuR8raUzpEmIilEBFfdUROiuz00QizJZ4GiKCNOReC81J43Rwi2BtEiIgq3SX9kGacE0GIIKjz91zxwWXS7H3ShzM0FB0inlCIEBmpxxBHTPSPR8SyHfqciHaCCAJcjyET0XeMl2whTTGDCF5nwco4BSHiuD0mVj7ZEFEnIGI/3h8wWsYokOPyxomVCkQwv7zfbxQGOU6TeYVxIhqGM0TFFST8NN4vVgYHs1VPRNQPASJil6Lf2MnC/gvlkEUTiKi7Doep82HvEQJ34Z+mcyJKBEBclz2sE/zjEJpXi9T1pmGvjyGmbA+cAhPlfArOv9BXZ2goOkQ8eRAxJaZQQgQD5AxzCzSszsjQeyK0hoi4in0IyalG75FucpkgC05TiJiVtUb2VHQfMgF2TtMRml+rQ4SF9rcUIuaKtM8KpudwJwyaMBWxy/c3gQhe9xctW/ZUDHUNlLEglJ4Id9kTcQX2XiFyOIqrCmIFkOgQ0SiWQsTcpdvhl1ohJxFzxQtXKjVCRBJS1p2Ex7xFosyahgl+ccaeCANEBKaWyYniXGnGoFMuwWni90eMELFYxozghM0hLv6yN8N/wUodIrQUHSKeLIjgEk/HWclyNvmH9i4y47GbXB/O0BYiGLEyIH0FfKIL5Pr4wZMC5IQvBSIYsZJLPD3n52CIqLw4DmwYztAhwhL7WwIRcolnXKFcajvMPQh2HItfftBkiachYiUrIA4n0U+RJY3DGQpEcFVHz+GT0GXAaIyeFomI3FVYd+iaDhFCLIEIBptyC80SZVKiAGp3GQsiXkCAASLuyp4IxrMZKnzApZy8bg4RDA1PwOg53BnvD3CAp/BZbN7KBojwiciTQyFdB42TPbBT5qZh6zl9F09NRIeIJ3M4gxPEhnkEyWWEXJM9a0GlDhEaQsTCyu2IXFYnt5pmLILAzNXI2vQxJkcadvHkEk8/UbkFilYTl6YFLVwjISM8f6MOERbY3xKIKKg+KHuC5hVuk5XYrMxVMhKie1iGsSeiWC4BnZ5UKrvQObyUvPZU0108t12T8SE+GOooKsEUOTlW74loFIuHMwQ0+IsyiMMRwQvXyiWbprt45tZ/CpfgVHjOWyTywtqGOBGEiICUUrmHCSe/9hzqLGN/cA8OpSeCxwEiHxH0RnjNQVjBFr0nQkvRIeLJg4jpSWUykw5ymoGx0yMRVbILs/Q5EZpChGFOxGHMK9ouWkhO6DfGWy5FaxzOqMRsUWkxLHnXgWPQf/xUfTjDyhDBJZ6cYJy4+hi6Dx6PPg4eDwxnRAj/zMnj5NZxsBP5RW04Y8gkf9lKltES9TkRTcRSiODqjDkifXOfGNc56UgSMOZhtjpjZnK5ITqoAD5TiGBPBAG73zgfjPQOlauauOLGdDiDUXrZU+ESsgCRjFipT6zUTnSIePIgYkZSuVwJ0M1uAtzCMmVlFawPZ2gOEVwJYFjCOQ9jpkbIws58iSdn+4/0nmMIe11Uh7n6Ek+L7G/pnAgu8WTvg71XMEb5hMtWq/kSTy43HO45W24CJec8FG5tgAgu7bRznikh0HNutqy8dIholJZABPe3eOsDOxmdkitmPOekNoEIr3k5csiJcyIYM8IUIggdvUd5YOAEX9nT2rg6YzHSRL5iwDCG+Z8wM1aPWKm16BDxBEJEcoWM2vZen+HoM8pd7h8QnLVKhwiNIYKrM8IXb5YtqPf7O8hWsBL2WlmdwUmv3QZPwGAXf/jGi5bx0i06RFhgf4shonC7HM7rOmgsug0ah4hl9U1XZxRuw6yM1TKeip3TTDnRNbq4rrEnQkDECM8QdO43SgK5rYJN/RAggo2bVzr3wVCXAESX7YFnqAlEbLuGif4J0kdcqcThC2WJpzIngr0YvG4OEYRzRqrs1MceDpPDdYjQWnSIeDKHM7i5UzdRcPYfPwVBWWt0iNAYIjgngkGMCHDsSmd3uWFipQEiOCeCY/TcMKjroDGykuNyT304w5oQcUD2RDAk8gdDneWwUbTwSSNEFCMsrwa+CcvQZeBofDDcWQ79mcaJYAAjbtnOrvIpcYUyqqUOEY1iCUTEFKyTS21HeYfiQ3tXOSTBjc4UiJgSnor4qsOyrCIoENoYvVWBCM6JyNp0GRP84mHnPANBmWtkBFgDROSDm3Fxd08OR3FCOX2oQ4SGokPEEwgRiaVyoh7nRDBSH6lfnxPRPhDB1hWXtbFgZGGnDGcoEDEpJF0u8WSgIxmxUg82ZZH9LYUILnX2CF+EPqM85fJAGbGyIdhUMULzNsptwD8c6QaHqfNkjAElYqUyJ4J5iCtpnGenInnNSQERa3WIMIqlEMG5JvQDV4u5ijRPOypzIrgBF+M+cOknV8m4hz04J4LLo7l8kzutugkIZGAp0+EMz3nZ8vncWyMkZyP89K3AtRMdIp7E4QyuyDgslzyxBcXgLPoST20hgsMZ8SsOyPF2xhkY6j4LSWuON4kTwR4irnfn8kNen7tkmw4RFtq/JcMZ7Pq2FxDHjdDiKw+bQMQy2VMRWbwLQ1xnGSJWljWGvXafFYNU8Vu2chlzhSsAFtRc0HsiTMTS4Qym80ABzYwMyjDv7HkwjRPBiJSuczLQx8FThok3XeLpn1Qi/TAtvlg0jKZj/rJ6OYShQAT3B4os3inzEYecOHw1MyZbhwitRIeIJxMiIorqZBc517535K3An/Q5EVxxMdh5Jsb7xSF1renEyko5J4KxIT4a443x/vGicNyhT6y00P6WQIRhA646uRFav7HCxjPj5JCS6cRK9lRwT4cBE6bJ+CrsZo8s4i6eh+A0Y56MM8HN0bJqP5bLpW0V9vqJnwJQCeMAACgOSURBVBOx4pC05QfDnWReaNwKXJkTcVX2CHGVEqODNkBEWS2mijzjFZGLgj23ZY8Ed1U1nRPhNW+RDFdesPu2HD5knvLThzO0kx8yRLAQqL/07RMFEQvKt0iidwvNlC2voW6BCCvoWMGm+D/UXfwaU0ITn+jhjPCCTfCJXiwgwdMY9vpIY7CpvCoZn4CTKdn64nVO6muXORECaJ7Inojqg3L8nJU/x9r7jPIwC3tdjIAFVfCOzJXLPwdM9EVEMcNeb8Oy2sNwnBYG97CFMm4BYxswKBXjSNhkOCN7+RMLEbFL1sMnpkBAXDQGOc/AOPHZCBF3MTksGUFZa+VwBVfCMDKoAhGZ5bXwmb8Qk2any3KM27F7zc9F+gbjEs+kfDgGJMj9NMLFdfZEhOTWwC8utxUQ8bUOEa2RHyJE1Jy8jdqTt1DLyuzjr2E3xhWbN9UY36J10pEggmulGZ/eOThFHkeV7ukQe2fwb9cK27OC3C4gwickDunpaca3aLmYZ9qOBBHZK3dgRnKZ3DmS3eQMlMNxYAUi4vJXykqJ0RAZIGek+Jy7dJsmu3jSD3w+fbH5zD3E5FciODjY+BYtEyW9d0SIWFJzWC6dpX0VTTAZzpifVSonIHO4idfG+EbIpYeECPZEeATFSbAb4R0qfagsF7VWT4TiA0ZWjM5ZIXwQZHyDpvL4Q0Q1vCLzZXk0KShFzi9h0K5GiEiR2+JPDEwQ96TK/S9M987gxEpCwnD3YIydESV8eKhhOCM0dQlC82pklMvh7kEyOmlLhjNkXpD1wR3Uf/ydhIg9u3ca36Kp6BDRjPzgIEIkmnVHPkXptpNYUFIju8Pe7PwBMjMzjG/ROulQwxmihbvs0FdYsveO1Nz6zxCQtrzdIaJaVK7Ld5wVhdVWUYCX4IOB9pg2bZp899aIeabtUD0RK7YhpmKvnJjHSWJUjvv6ROQ0zIlgN3pO3acN1xduvYKw3A2aQAR9sXLvJSxevw8uM0Lh6ekpbdlSUdJ7R4QITqzkZFXGemj0wU24hy5onFiZXyuXFzb4QOTj+Us2N6zO4MZQmZtEBSsqNeYj6wWbuoUNx25i1f4rKBTA4jojDF5ensY3aCpPxJyIqsMo3H9flkeLd9+Wqy/cZycZhzM4J+KmuHa34TqX1oZmGOdEJBejYM8dZNScl1t95wk/mG4FnrLmBLK3X0NG7QWZx7gvh6VbgdOH60V9ULVb/HbdHrzfawAqVyw3vkVT0SGiGfkhQQQTDGPeewVGYsBIR/Qe7IBfPvU0Jvt4i0rka+NbtE46EkT4JpYgb+dNOc5I5Ta5s9JXtCtE8O8GJ+Rg4MiJ6Dd8HJ79/QsYOLC/LNRaK+aZtqPNieCEr5ztnwofXJcVVb7wSROIWFAlzt0yXr8ud4wMy622KUSw1bWgrBaufuEY4eSD197pij+//BfU1tYa36JloqT3jgkRhmBTuXWfNdiYPmiEiGUIW7xJVmANPth6tQlEyK3AeU3kIeYla8SJoA+yV9bDMzACI52n4I33e+LFl1/GunXrjG/QVJ4EiIgu3yfLIQIdlcGkPEIUiEiWdlauUfndFCIIBzkCFJiP6AduyKVARKKABuYzAh/v4SROSyCCIB2duwLOU4MwZJwbfv/Sq+jbty/OnDljfIumokNEM/JDgohNZ75A9qod6N53KPwjM2A/0ROhYeHS6W2VjgIRaaWbMDV+GXJFpiPNU1k5+adVtBtEsMt2xa7z6D1kNLyDozFxciBcPbxw8+YN4xu0Tswzbcfqidgqg0uxwDMUjFcF2H0On/nZEiJYeBEiWDg2Fp5GiKizHURUH/4UH9qNwnhvf6EB6Nm7H7Zs2WJ8g5aLkt4VH3Q0iGBPhGnllS984DaHEHEccxcUISy/VvYwmPpAgQjXwJgmlRsrMEJERO7qVkMEf8OGzMBRzhjpMhUTRF7o1rMPajZuMP73D8pjDxH5CkR8Ku1LZTAppSfCe06S0c6Ga9SFQucoEJFEiLjZcI1+4NAgh4BCkvIkRBgAkD66Lnsipj8CIlgX5K7ZKeqCIXCdEYrBY10w3H6EtEtzokNEM2ILiCgWlL/p9F2ZYTqO3pazb2fFLZQTKcd5zMCsWcEis7S8C1dNOgJEZFRskTrCKxjT4wsxNWZxgzrOjMLaA1eNcxLU7GM73XLuvmz99hk6Bi7TQzHJ1UMUXJ8a//vWi3mm7WjDGWGLa5EkWkWJVYelMuSye0gqCtbvlRMruRdD8trjDdepgWnLsZw9EcJPaoVfW5TPLN50FN1EwRmUkIuhI8ehbvs243/fOlHSe8eDiINydQZjcSSvOtrog3Un4RQYj1LZE1Eid1pNXt3oA3a7h2StQlHtYbgEGMbflWv0ZVTpLsxbVNnqXTzpg1LRyGLlxZ65YaMnPLIX6HGGiNX7riAyZxVCcjcKPxxrsGWsgAqXWXFyToTPnMQmdqZy7srs1GJkVWyCb0ye7HlouC78EFFUL/NQaEoB5i/dKnxj8DE/Gcp8WmQmtp5tfhfPree+xGyRB0Y4emPqnHiMd5z0UICg6BDRjFgbIly8pmLZZvZE3BXOYibrIMpJTOJ/Guvph5dffwdzQsOko60l7QsR38B/1mwkFW1A9ZHPkLt2N/LWNGruml0oqN6PDcdvqtvGxsrJe8HxOXj+xVfh6umFT69fN/7nbRPzTNsRIMKBEHHkBip3XURK0UakFtc2aErJJiQuXYfV+6/IOTkJBWvluYbry2qQWlIrfv+ZTWCPE/giFpbhra69MGj4aGzetMn4n7delPTe0SBiiYAItoITl65HiokPUoW9aXdCQImozM2v0wccEuT1zOXbDD4xuc48lr9un6p9LVG2jhOXrMGr73aDnf0YbNhQbfyvm5fHFyKmi7T+CZZuPISEJbRzY1pPXrZRVLCbBER8gZyVOx6wc3JRDXJW7cSqvZdknmjiQ14X95dtPyXqmqPyWabX6NNs8Uw+W80HbFCyTHKaEoTOvQZgopMLLn180fifNy86RDQjrYGIyZMnG781lU8/vY7R453gMzsWIYm5mC0qjo6iIYL6A2My8WanbvCdOtX4H1tP2hMimHBn+PljvJc/wlOXYG56IcLTljygs4UN1Gxjaw1JzEOvgcMxdPBgYYubxv+67WKeadsbIi5fvoRhoyagsOYIyreflsMS/DTVivqzsvArFwWL2nX2QpRuPylaytbXFTvPw26sC15/8y1s39a2HghFlPTekSDCUVQKKUWcW3K2GRuflRDXnA/Kxbkycb1ix9kHrwnlb9Tsa4mu2HkOIyZNxl9EZbSp1rIVYY8jRJw+dRJjnT0lcHEyNW1tbkeep00eZmf5Kfz14DXxSRX5xfyavM58ZGZ7Rcu2ncYSATZvdfkQAwYMEDa5avyvHy46RDQjlkIEE5aScZ2dnXHnzh3jlUZhQbxiRSXS0tKQkZHR4ZT/V3FxMb4S/6e1pT0hgsJx7dTUVGQsEO9KVXn/9tL09HTk5OTIwsqaYp5p2xsibty4gfETHTFizASMnjCpA6ozBg0eYjWAoCjpXUuI4HXmqV/96leIiop64P6AwEAMHTkaYya6qNigvdUZ/QcOeqDSfZhUVlZKiOCEPzXb8Fx7QsQvfvELWf6Y3s+/N9HJGSNGMy90ND+4YLjDOEx0dJLp0VIZOXKkhIjm7KLmBx0iTISJz97eHv/wD/+An/zkJ/D19TVe0YXS3hDxQxTzTNveECFF/Pabr0VB/NcOqMJG1hYlvWsJEffv30ddXR1+9rOfyaHVixcvPvCbb775Wt0GHUCF1Qz/pAVy/fp1xMfHS4hYuXKlauPNPB9oBRG3b99GcnIyfvrTn2LRokW4edO8l7ED54WvLW9I0g4XLlxA79698fzzz+P06dP4+usHV/Op+UGHCDOZMWOGTMw//vGPUVhYaDyrC0WHCO3FPNN2CIj4gYmS3rWECPqwZ8+eLJDxb//2bwgKUg/S9CRIXl4efv7zn8t3femll7Bv3z7jlUYxzwdaQcSmTZtkz/SPfvQjOcy9evVq45UnS2gLxlH5p3/6J9mIHj58uMUw94OFCKYdNSWNsQuRGfjevXvGuxtF3NJE+F3tOdQnTXSI0F7MM60OEdqLkt61hAhKQECAbND867/+K+rr641nO5DwFaygVy5fwXPPPSchws5usLCPOGl2j3k+0AoiOLzdrVs3+b917txZ+rMjCP/vL7/8UryLdfRLoWWlZQKWfize9e8RFxePr778qul998R94m/SBz9oiPj81uc4deq07K5R08uiEHBycsLcufNEgvwEZ8+cwbmzZ+TnWfHJMbszZ87KY547fZr64HNOnjyNixcePRv2cRIdIrQX88JThwjtRUnv1oQIKlt6t0UlxS5zNT1y5Ah++pOfYri9vfDfXXH/7Qa9K35L5X13hCrfeWz+HFNlpciKoC1y+cplnBZl6BlRzllDL178GD6TffAPP/p75OcvxscXLz5wz6lTJ6W9rA0R7LKXtmnGD/ybmVmZ+Kf/83+QkpxisLHRzvxUviv3Kn4wf86Dekv+D60VPiMiKgKx8VFW0YSkGMwJD8bTz/wKP/npv8MvcDoSk2Ob3BMVMx/pC9Lk8NMPGiKSk5PQu/MbcBsxAC72/ZropGH98GGnN8T1t+Bq3x9d334V/bq/i17vvY43Xvoj3vrLnzBhcG/0F+feePkFvCl0ZL8ecB3R/4FnOQ7pje5d35d/80kRHSK0Fx0i2l9sARGsBNxcnOE9aTymujk9oL7uzlJ7vPs6Rg/pj2lekzDNXTnvhClujob7PMT94juPlXPKd3P19XDGhFHDsGhhlvHNWi7fffc9htrb4Z3+v0WPES9aRT8Y9SK6DXsBL3X5BXqMfEmo2XWHF/Gnt55CVWWV1SGCPTxO48dgistEVZtN85gEtwmj0On1l+HhOEZ+px2l0g+ujvJzqvADfdPoA+Onmor7x42yx/bt241WbbmcOXkOv3v7P+GW8Sackl6zirqmv4mhM1/GAJ8XxPFbTa8nv4ZxMS+j2+BXsH/fgR82RCTGx2J53EzgxBrgYGWjHqrC93vL4TioB0b16Yz79UXo9vqfEOo2EhPFOb8JgzFxYA+UxMyQ58b064I5LiNwdmUGcGRV02dRDyzHgA+7gz1zT4roEKG96BDR/mILiLj8yVWMHtQbh4sTcG7lApypSn9AT1emITPYA1lCTy1PRcL0CVgY7Ib0ABdRHtlhluMQ1GaGoihiKmaMG4gg56FYnx6C86syVJ/38dos5IV4IGRWoPHNWi7ffPMt7Eb2xvz67kg7MRCpx62kxwYh5bAdUk8MeuBa5nk72M38A0pKS6wOESWlZQhiOa5iL+pZ4ZuDyxIQ4TMWq1Jm4VBxPAKdhmBFnB/muNojcOJgzPdywOGSRERPHgt/4ZcwtxHCr4nyt2rPvLgmEwHCd2VlZUartlxOnziLTsOfxaILQ5F2zM46etxO+iDpEI8HP3At4UA/2Ht3ERBx8IcNEcmJ8SiJniEr+r/uLmvQbwRA3K1bhsE93kG3N19C4sxJ6PTqC5gyeiAGdHkTS+b5IsBpGOZ6jYHniI/gJxJBzcJw3NyyBF/vKW/yLKm7SjCodw8dInSIaJPoENH+YiuI8Bw3DPfqikRZtALf71/eRHFghShXyjC8Vye8/fLzOFiahNde+C1chn6IcQO6I0JUWN6j+mG26wjMmmQPt2F9UBQ1A+fXZMmyzfx58pnHVmFjxhzMC2vdluiUbwVEDB3dD+GbeiL54CAkHXi0Jh+0k2o4FueEKueaPKOZ56WLCm3wjBdRXl5udYgor1iO5EAPaW9Vmx2uwhnRUHzu1z+Xdl6VMhu//O+fIH6GI3q89WcsnjcVQ3u+h/KEQFlPxPo6oiR2Ju7vKMHfmnvmkZWyfqkQf7u1cvrEObw39FksODlE1WYPaIPNDd/N/aDcx/NNfKKoOBezqy+Ge3XBAR0imoeIOwIiRvR5H34Th+KF557C5NED5PHArm/BcXBPvPz7Z3CkLAUe9n1FwnkXiX6TcHVDHr7dW9HkWVJ1iNAhwgqiQ0T7i60gwn3MUHy+dYkse8zLj29Ew+QLUR6N7tsVb7z4OwkL77/+Anwc+mNE785wG/6RhInsOd6YOWEohnzwrjy+XrtYPE+lPBLKMm9dWjDmagwRcbsHIH73QHE8EAl7ByBh/0DE7xmAuJ3ivPhU+42p2hoiEv1chb0ftBf1u33LcawiDX/67VPwHNkPDh91Qe/3XhMQNw7v/vmPCHKxh0PfLtiWF4meb/8Z08YNQnHMTHy1q1T1eVTCRdx0J+0gQvgpUdg8bld/JO4TfhDHCeKTx/QN/ZC4l/5R+a2iOkRY3hPBXobCiGkYIMCBXYnhnmMwaUhv3BdQEO07UXZr+TsOxZacCOHJanWAoOoQoUOEFUSHiPaX9oIIlkfj+vcQjZaP8P5rL8BjZF9MEQ2bMf26YZ4oh3q98wpWpwYjwHGY7CXdXRiHW9sK1XtGhbYHRPiXdseHzs/DzvdFhKz5ECNnvwKf7E7oPv5/0cvpeYyPeEP1d6ba3hBxpDwFPd78M6aPG4x3/vwHeAuQm+s1Gh91fh2x05zw4buv4PyahfjwvVexZL4v9hcndCiIIEA4J7yN7uN+hzHzXsPs1b0w1P/PcF/wLrqO/q30z7SlXQ1DGSq/l6pDxKMhgkrHX1y7CLe2LsW1mnx8tmkxrmzIwYXVC8W1MtzfWYITK9LFPQsNwxhmv2+iOkToEGEF0SGi/aU9IIIg8EV9MeKmOWJVSjAifcbJz4wgdyTMcMYnG/OwITNUDq8uCvFC/eIo4PiaZgGCqiVEsEKas6YXXv3w13BLfReDp70El5S35fdh/i/jT53/R1Ri7yGw4gPV35tqe0LEt/sqZPkf7uGAqqQgaf/c8MkojJohhy44H44+KoyaLn30+dZC4PBK1WcpqiVE0A+eGe9Ju09d3AUfuf9BwsOLwv79vf+EzvbPwXtRZ4Rv6PNwKNQhwjKIYAbkmBW7A78XiYef34nP7wWNEhjYOvh+/wr5/Zs9jT0QvPZA5tUhQocIK4gOEe0v7QIRxk+OrX+129Cq/WpnqfhejPv14pw4/nbvctzeXoR7Aja+FA2cv5q1fs3LJC0hIu3YYFE5dcLbg5423HfQDtF1/fBan99gRNBf8NQL/4kuI5+DV1YnpB55SAtYaHtCBP3AxiXt/hW/C5uyMXnf6AvOW2G9cHt7oYQ+tR4I88ZmI0RUGK3acrEUItKODobdtBdlT9DCs8OQuG8QZq3oiZe7/gKDpr6IZ1/5KXo5/l72Ej3UDzpEPBoimDhubC7A5eocCQ+m55lozq3JeiCzK/DAccirNfnyuOG6DhE6RFhBdIhof2kPiPjrLsMnh0t5nfqtKF/YMiY8sKxhxcfudsM9FeJc0wqLvaem37WEiFTRAg5d1xvvDH4ajrFvYuCUP8EjsxPe7P8Uhgf+Ge/aPYPIrX0Rv3uArKDUnqFoe0GEtJ2AAn5KG9Pm0hf0gfhfaHNxzfDdoPQLzyl2pw8UXyqqJUQQDHyyO+MdAXMeae+iv/cL8BFw90qvX0mfDJnxkpwTkSDgQu33DapDhCU9EaVYkRCA3Utj8fH6bJxbvRC3txXikjg+L453LI7GtY15OL0yAx+vzcaFtYvw2aYCmXCu1uQhJ3SyvF9JPDpE6BBhDdEhov1Fa4hgo2XfsgQ5ZMrWr6zIROX0pWj98jrLGMNxqaHlS3gQ+qWxFczrPL89Pwq3xPOVMklLiKCyK31mcXf083wBdlNfQlBlTzjFvYlpS7rCJekdJB9qZiWAmbYHRNBmNzYvEfVBXIPtv95t8BN7gZQGo+IT+Wk8J6+LewkdHBbfWxjf4BuqlhBB5eoLZ2H3Pi5/wKg5ryJk9YcYH/kGfHLfx4yibkg9Olj1d01Uh4iHQwQTzE2RYEI9RuFQaRL8Jg6R44yFkdMQ7GKPivgAxAunh7iOQmqAKwKdhiE71BtZs73kcxhjIjPYEweKEyWVyufqEKFDhBVEh4j2Fy0hgo0SLufMCZssGjA52J4XiUMlyTi7MhNbcyNwuCxZljO1i+Zjc/Z81AlQ2FecgPqCaGwS5/YUxePejmXyOby/LNZP9lbw2VpDBJUAwNZw+rEh4pPHgyVcPGoIw1TbAyJos6Ko6dL+x1ekoS4vCqeqMrBf2L4uP1Iu+9wm7MtVGZuF3TnR/mTlAtRkzRXXo3GkIkX6gM/KEXXFMZPvWkMEAWDBiSHS7unHxech2t/gBx6r/sZcdYh4OESQGDmhcp73OJFBE1AUOR3Hl6dijvsoRE4eL3sd5niMlscHRAth0RwvkbgikBbghu8PVskEV5UcjDVpsxsyrA4ROkRYQ3SIaH/REiLYCFkeHygBIH2WG9amzUG5aMRET52ANamzkRroiskOA0TF5INQdwc5yS9hhhM8R/RDZWKgLLM4+ZsV1dnVmXISJudMsOXcHhBBVbvP0t9SFYhgpasFRNBWd+qKpP33CihjhU9IyBe25mTKVcIPCdOd4Tqsj4wb4e3QT67KSJzpDK+R/VGdESYapA7S7rT5anH/8oTA9oMIo0qbG+3eEvtLFfdLiPDWIUK9J0IkIK7IiPAZh11LYhDsMkKCBMEgf+4UObyxIMhdDlmwJVAe5489hXEyuAt7MNidmBnkiaPlKRIimAi/FecGftgd34oK4EkRHSK0Fx0i2l80hQhRdrAFzG70yCnj5dJBVmRcan52VRYWz50K37F2sjeC5c/OghjkhU3BjPF2OC+ux0yZiAMlSfhOVFgXxG/TAt1wZ3uRfC57TNenz9YcIlqt4vn8G6woB8/8E0pKrB+xUg0i6I8bW5bI3uX6xdFI8p8k/LQUFQkBAizccWrlAgkBgc7D5Dw6gsUhUS+wt5p1yMV1izDXeww+E3XD3/YvR+3CuSiJmSkgorwB5uIF+JVrDBGtVfog5dAgxO7pi2EenbFvz34dItTmRDARbRAEuTTCV8LCOZEhOSGGmZxjlDe2FODmlqVyBi6Bg4FguJzn2sZ8kVmzsFSQKGdS39tRLBPWkbIkdH7rdZw5e07+3SdBdIjQXnSIaH/REiI4cXJnQawoh6bjaEWqaLAESN2cMx+FomGzLj0Ea9Pn4FRVuuxqZ68Dey18xw7CojnestX7SXUurmzIk/CRG+ojV5QRIr47WIW1KbMQHOgvGjffG9+uZaIlRMhgSDv7I2LrR+g69jlERERqAhEc3mZjkL09+4QNN2XPQ3m8P9ZnhMoehdI4PzmMUZkUJEChAKtTgnF+dZZcAsooomWikUl/XdmQK1dtsCHKRidX/nGi5T3xtxhnYuHChUartly0gwhDYLDIbX3hW9gZ7/T+A9asWqtDhBpEkBAJAZeqc+QESWVZJzM1r7MrSpKkOGaml9fEJ5eAKqBxumqB7HacMKA7XnjuN/Dy8pI7uj0pokOE9qJDRPuLlhDByv7WtqVYmxYiP9lg4SQ9VkBsxHBpOcsq0+WcLKPyw6fgZGW6fBYn8d3eXiS73S+vz5G/O1yWgk2iRew2rDdGO4zCnTt3jW/XMtEEIsRzWXFxVUfPib/Db1//Cf7y2kvYsnmLJhAhbSrK+3MCDDZmhUmb3hSNSPYqsNf6c2FPWS+I46+5/FaAAf3GSZQF86bi+qbFcsjii/plcl7LGuFL1ilHy1NRlTwLMycMxtt/eREFBQVGq7ZctICIlCN2CKrqiX4ef8Qb/X6Dnz/9b3B0nCjtq0OECkRQmTm/E9SugIOlyvu/F4mGdMkQqBPtesmtbb/+uvVbvXZE0SFCe9Ehov1FS4igskL7TlRYBAVDw4VqKGdYRvHY9H4DZKyQDRoJGPIcGzuG7wyZPVqUS395/lm88+67OHrsmPHNWi5aQAQn/M1a8QGef+u/0dPpf9G97zuo276jST6wNURQ2RtBODA0GGlLQx2hzG1osLXxk/YmaHxrnBennMfBKpxeuQD9338Dw3t2wmsv/gGJiUlGi7ZOtIAITsLs7/UCOtk/g+5j/heuHi64f+/LB/zwg4SIslgBEYdXSqdbQ5nY7tYVYfzA7nC064nAgJn44t49+feeJNEhQnvRIaL9RWuIsJayXDpdlYHBH7wj93pwGmOPEydOGN+qdaJAxLwtPZF62DBWbm1NP2YHx7g38aeuP0O/MZ2wo27nA/nAmhCR5O8mYY3AYAtlr8TK5CDY9+qEGU72WNiGrdgVIUR0GvYsMk9ztYW6Hdui9G387v4CIJ7F23ZPw2uqO+7euafqhx8cRCTGxyE31Et2FX5am28VvbF5MQ6VJOGpX/wM06f54qu/Plk9EIroEKG9mGdaHSK0FyW9Wxsi3EYPxa0tjDXDngPGFrCu/u1gpZyk2eudv2DiaHscaUMPhCLffvMdBo/sg8CV7yNy20dyvoK1Nbq+r6i4foM3334VO+p3yb9rng+sCRFx0yfJuWxcTWEL/UL4wn/iYNkDkZWZKd+nrXL65Fm8OfA3iN9jmDNibY2q6wv/sm749R/+A5NcnKXNKGp++MFBRPaiRRjUuzvcxgyHi8jE1lBX0aIYOagPJk+ZLIx9X/6dJ1F0iNBezDOtDhHai5LerQkRn1y9hrGD+8o9Lw6WJuJASYLVlRMzfUYNQOdOnXD8+Enj27RNmBadJk1Ez2FvYMCYzjbRfqPfwwe938fOHbuNf9V2ELF69RqMFmV31FQnRPk620id0OWt15CUnGx8m7bL5UtX8Nb7r2DgeHUbtlUHju2MD+zegKuLK+6Z9Kqr+eEHBxE0wO0793Dj8ztW1c9bOVHpcRIdIrQX80yrQ4T2oqR3a0IEC+aAgAC4iFaem6urTdTVxQU+3t44cdI6AKEIhzTu3rqPu5/bRu8I/ebrb41/zSDm+cBaEHHz5k1s3rIF66s3oHrDRpvouvXV2L1nj/FNrCdf3v8r7t5Ut6E19IvbDzaI1fzwg4MIXVovOkRoL+aZVocI7UVJ79aECN3+LRPzfGAtiND90DJR84MOEbpYLG2FCCY+/lbPuJaJYivaTbH1+h0XdYjQWGgr0/T+Wasg4mADROj5oGWi2Mo0HzA972sBRNAP5hCh+6Fl0pwffhgQUXQaH1/7Et99TwPo2lot23ylBRBxFUlFB3Dk9HXcu/+luO9rfP31t+I3pFi26nS1RGkv2o32ox3XbL+AnMqjLYKImPx9uH37riw8+Zxvvvm24flqfta1UU39oPjg2qe3MTdnj4CIK4+EiOvXr0uImJ9/AJ98ehdf/VXPB63RJvng3pe4dfsOdh++hMjc3RZDxA4BEZkVx3Hn7n29PGqlqvkhpeTgkw8RccWnsXbXdRw4cxv7Tt3StRW6X2ja8nPYcexzyyDi8lXEiBZwWe0Z7Dp6DTuPXsfu459hz4kbQm9i70ldH6W0E5V223n0U+w5dg0Lyo8ib+URWTlZUngePPExgjJ2Ydv+S9hx+Bp2HRPPET7Ye/JzqWq+1pVqsI9BDX6g7XYeuYoNuy4iMH0nLl56dE8E/fTZZzcwZ+E+VO+6hN3H9HzQUjXPB/WHPsH2A5ewdPVxROdbDhG7BERE5B3AtgOfiDJJ90NLVc0Pu45cxuyM3dhQf6bB1gIWnjyI2H3iFrJXX0De2ou6tlJz11xEcc1lXPv8K4sg4trVa1iz7RTSSo8gc8UJLKw8hUUrzyB71VmpOavO6foIVWxFu9F+GcuPS3vuOnRRFpSWFJ4XPr6KglXHkF52BFmVJxt8kLP6PHKpa3R9qAob5aw2+IO2y1pxEgvKjmJZ9QlpczWIkKrkA+GTGzduoHLzGWSIVrCeD1qu5vkgU+QDpufkZQdQs+OMRfmAMHfu4jUsWXtS90MrVc0PacIPaSUHcOJMY5oXsPDkQYQu1pXmIIIZVUlInxSuxrWitfistBqfV9Tg1vJa3FmxGXcqN+Nu1RZdLVTai3aj/W6Wb8RnJetxbdlafLJ0tcWFJyuxO3fugMuPlXkRnBjFsU1dH620FW1G29GGtCVtSnsrENEEIEwggn7S80Hbta35QC+PrKMP84NiawELOkTo8nCxBCJ0tb1aVHgqlZjI7Mz0typqcXvFJkNhoKtlysrGvOAUNr2yZNUjIUJX26sl+UBX7VTAgg4RujxcFIhgC42tM1OIuJJRgkv2/rg0wh+XRwTgyshAXBk1C584UINwVdcWK+1G+9GOtCftSvt+bO+HS9G5euHZTqpUXmoQ8XHaMoN/RF7Q84F11NJ8wHKIn8wHl9OL9fLIytqcH2jnKzF5phDxr0KbQoSoPAp11VUARKEAiCIBEEX37t1bJgCiRFRgpRcuXCg/c+ZMxbFjx1YcP358OfXUqVPLz549W8FrFy9elCoK2fLLly+X6fpwpZ0Um9F+tCPtSbvSxkePHl1x8uRJ2rji3Llz5UIraH9+Pzs7dd+5nm5XL/b0+IT6cS/PTz7u7fnJpd7eVy5T++jaUqXtaEPakjY9L9X9k5M+kUcUnyjpXhwvP3LkSCU/9XzQNrU0HzDt8zrzAfMDv/M8ryt+0f3Qen2UH6i0uYCF/xb6H0IJEf8ktBEidNHFKEwMTBRMHP9H6L8I/XehPxX6c6G/MuqvjZ+/EPo/RuV1KmlV14erYisqbUc7KnZVVLEtM+5/CeXv+J33/Uao6X2K3ZV7dbVcaTPFJ4ofFPvyU0nn1F8av5vaX7mu54OWq2Ir6sPyAa+bpm3+lucV++t+aJsqtqKq+YHHvEbbsz5gvcD64UdCdYjQpYkwMVCZOP5R6D8L/f+FsguLmVhJYCxMqTxWy7i6WqaK3UxtqtiV15lpCXA/MX4yw/N+08JTud/U/uaFhK7qauoHxQe0qwIPVF4zvd/cV4r9FR+Y+kFXy1Sxm7lt+Z12Zz5gHmArmJ+mIGH6G+W77ofWaXN+4DmW/6wHWB9wKIP1A+sJpc7QRRcpphDB3gh2WZE6/69QBSRMC1+qUsDq2no1tyftzMKSNmfBSfrnsSlImBeeSgFg+ixdH62K3UztSXjgd16nL2h3RVmB8Zz5c0z9qWvr1NyeSj5Q8gDLIaoCE3p5ZBs1tyfTPMsf2l4fytDlkcJEwcSh9EaQOplwTDOvaaGqq3VVgQcWmqR+zoSm8pj25z1K4dkcNJgWCLo+XJuzH22sFJ70haL0Ac/p+cC2agoPTPssg9ig4Se/K77Q/WBbVfygAIRpL4QOEbqoitIbYTo3QumRUCozpUWgq/VVAQel0OSQElWxP+9RKrLmMr2uLVNz+9G25iBH+ys+0POB7dU0HzD9s/IyVZ7X/WB7NU3/tDvrA9NeCB0idFEVU5BQhjYUmGBCMq3YdG27KvZUCkvamUqbk/qpPOY13q+0xtQyva5tV9qWNqaa+0PJA3o+sL6q5QPanMoySFElPyi+0P1gXW3OD+Y9EDpA6PJQUQMJ0wysq21UgQbF3rQ9VTnPe/SC03ZqWnia+sQ0/ev5wPaqpHfTPKCURVRTf6j9XlfrqLkfdIDQpUWiJBYFJhRVMrKu1lVTG1MVu5van/cphaeutlGlgjL3jZ4PtFFTG1OVMshUTa+rPUPXtqupjamK7XXRpcVimnmp5olLV+uouZ2pFOVYuU8tw+tqfX2YX6jKdV2tq2q2NhXza2rP0LXtam5nqi66tFnUEpau1tXmRO1eXW2vaqJ2n67WVUtE7Xe6WlcfIX/3d/8PYghTg9ZCaCQAAAAASUVORK5CYII=" style="width:70.0%" /><br /> +<br /> +</p> +<p><img src="data:image/png;base64,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" style="width:100.0%" /><br /> +<br /> +</p> +<div id="load-vif-from-previous-step" class="section level3"> +<h3>1 Load VIF from previous step</h3> +<p>To create a VIF for the current step, the VIF from the previous step has to be loaded. After the VIF is loaded, the consolidated data from the previous steps is displayed and the input data for the current step can be added.</p> +<p>Note: It is also possible to directly add the VIF from the previous step to the job list.</p> +</div> +<div id="load-input-for-current-step-optional" class="section level3"> +<h3>2 Load input for current step (optional)</h3> +<p>Instead of editing the input data for the current step manually, it is also possible to import previously saved input parameters. The input parameters can be saved during the creation of a VIF (see <a href="#save-and-close">Save and Close</a>) or can be created using <strong>File -> New File -> Create Interim/Completed Input</strong> (see <a href="#create-a-step-input-file">Create a step input file</a>).</p> +</div> +<div id="the-input-data-is-split-into-three-components." class="section level3"> +<h3>3 The input data is split into three components.</h3> +<ul> +<li><p><strong>Vehicle</strong> Contains the main vehicle parameters (manufacturer, model, masses, seats, dimensions, ADAS etc.)</p></li> +<li><p><strong>Airdrag</strong> Allows the loading of an airdrag component file, and displays the consolidated airdrag data from the previous steps. For more information see <a href="#airdrag">Airdrag</a></p></li> +<li><p><strong>Auxiliaries</strong> Contains the paremeters concering auxiliaries (HVAC, LED-Lights etc.).</p></li> +</ul> +</div> +<div id="mandatory-input-fields-for-every-simulation-step." class="section level3"> +<h3>4 Mandatory input fields for every simulation step.</h3> +<p>At the interim and completed step most input parameters can be provided individually. Four input parameters are mandatory (Manufacturer, Manufacturer Address, and VIN).</p> +</div> +<div id="consolidated-data" class="section level3"> +<h3>5 Consolidated Data</h3> +<p>The third column is readonly and shows the consolidated data from the previous steps. These are currently applicable values for the simulation. In case of the first interim step of course no previous values are available and therefore nothing is shown.</p> +</div> +<div id="enable-editing" class="section level3"> +<h3>6 Enable editing</h3> +<p>To edit a parameter in the current step, the editing has to be enabled by checking the corresponding checkbox. A special case is editing the input parameters that have to be provided as a group (i.e., dimensions, passenger count, ADAS). If the editing for one parameter of this group is enabled, all parameters from the group need to be provided.</p> +</div> +<div id="current-step-input-data" class="section level3"> +<h3>7 Current step input Data</h3> +<p>In this column the input data of the current step is displayed, and can be edited. The entries are checked with regard to the data type. The entered data is available and can be edited as long as VECTO wasn’t closed and the job wasn’t removed from the job list. In case a mandatory input field is empty, or the value provided by the user is invalid the input element is highlighted with a red border. To remove an entry from the current step uncheck the corresponding checkbox.</p> +</div> +<div id="save-and-close" class="section level3"> +<h3>8 Save and Close</h3> +<ul> +<li><strong>Save Input As …</strong>:<br /> +Saves the input of the current step to a new file.</li> +<li><strong>Save Input</strong>:<br /> +Saves the input of the current step to the loaded input file.</li> +<li><strong>Save as new VIF</strong>:<br /> +creates a new VIF and adds it to the job list. If ‘Vehicle Declaration Type’ is set to ‘Final’ and all required parameters are present, the file can directly be simulated.</li> +<li><strong>Close</strong>:<br /> +Closes the window. Note: As long as VECTO is open and the job is not removed from the job list, unsaved changes remain in the job for further editing.</li> +</ul> +</div> +</div> +<div id="new-primary-job-with-interim-input---special-case-i" class="section level2"> +<h2>New Primary Job with Interim Input - Special Case I</h2> +<p>If the manufacturer of the primary vehicle also adds certain components of the completed step (e.g., HVAC compressor), it is required that the VIF created at the primary step already contains the provided input parameters of the completed step. Therefore, at the primary step the input consists on the one hand of the input XML for the primary vehicle and on the other hand the XML with parts of the completed vehicle.</p> +<p><img src="data:image/png;base64,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" style="width:70.0%" /><br /> +<br /> +</p> +<p>To create primary job with interim input create new job with <strong>File -> New File -> New Primary Job with Interim Input</strong> The job is automatically added to the job list for further editing, but simulation is only possible when the job is saved.</p> +<p><img src="data:image/png;base64,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" style="width:70.0%" /><br /> +<br /> +</p> +<div id="load-primary-input-file" class="section level3"> +<h3>1 Load primary input file</h3> +<p>In the first simulation step the primary input is simulated and an intermediate VIF and a MRF are created. The step input is then added and the resulting VIF is written to disk.</p> +</div> +<div id="select-step-input-file" class="section level3"> +<h3>2 Select step input file</h3> +<p>Select the step input that should be applied in the first manufacturing step.</p> +<p>Note: If an exempted primary input is loaded, the step input has also be for an exempted vehicle.</p> +</div> +<div id="save-and-close-1" class="section level3"> +<h3>3 Save and Close</h3> +<p>After saving the file the job can be simulated.</p> +<p>Note: If the applied step input is completed and marked as “finalâ€, VECTO automatically starts the simulation (as in Special Case II).</p> +</div> +</div> +<div id="new-complete-job---special-case-ii" class="section level2"> +<h2>New Complete Job - Special Case II</h2> +<p>If a bus is produced and homologated in a single step (“completeâ€) it is required that the simulation of the whole vehicle is done in one VECTO invocation, applying the factor method. VECTO in this case creates the MRF of the primary step, the MRF of the completed step, the VIF of the first manufacturing step with the complete vehicle information, and the CIF. Thus, the input consists of both, the input XML for the primary vehicle and the XML with all parameters of the completed vehicle.</p> +<p><img src="data:image/png;base64,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" style="width:35.0%" /><br /> +<br /> +</p> +<p>To create a job for Special Case II, select <strong>File -> New File -> New Complete Job</strong>, the further steps are identical to <a href="#new-primary-job-with-interim-input---special-case-i">Special Case I</a>.</p> +<p>Note: If the VIF resulting from the primary input and the step input, cannot be simulated, add the resulting VIF to the job list and click the info icon to get additional information.</p> +</div> +</div> +<div id="create-a-step-input-file" class="section level1"> +<h1>Create a step input file</h1> +<p>As mentioned before it is possible to load step input files when creating new jobs. Apart from saving the step input while creating a VIF, there is also the possibility to create the step input without a VIF.</p> +<p>To create a new step input file select <strong>File -> New File -> Create Interim/Completed Input</strong>.</p> +<p><img src="data:image/png;base64,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" style="width:70.0%" /><br /> +</p> +<p>It is possible to create input files for</p> +<ul> +<li><p><a href="#non-exempted-step-input">Non exempted vehicles</a></p></li> +<li><p><a href="#exempted-step-input">Exempted vehicles</a></p></li> +</ul> +<div id="non-exempted-step-input" class="section level2"> +<h2>Non exempted step input</h2> +<p>When creating a new step input, it is automatically added to the job list for further editing.</p> +<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABQoAAAOuCAYAAABPACqaAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFxEAABcRAcom8z8AAP+lSURBVHhe7N0FfFV14wbw2d31lvqqf1+7sRALFQUURQWlJKQEURHp7u5mbLCxse7u7u7u7u54/r/fuXfkgIHE4vl+3ucd3nvuqXt22R5+5xwNY2NjGBoaQl9fn2EYhmEYhmEYhmEYhmH6bGRHJrsyjb5K7gAXFxdER0cjKioKkZGRDMMwDMMwDMMwDMMwDNNnIjsx2Y3Jjkx2ZerarO+RbancEURERERERERERH2Z7MhkV6auzfoeufGyNSUiIiIiIiIiIurLZEfW54tCOcSSiIiIiIiIiIioL5MdGYtCFoVERERERERERNTHsSgUG89Tj4mIiIiIiIiIqK/r86ceHzt2DBEREerdQURERERERERE1DfJjkx2ZerarO/R1tZGWFiYencQERERERERERH1TbIjk12Zujbre7S0tBAaGqreHURERERERERERH2T7MhkV6auzfoeufEcUUhERERERERERH2d7MhYFLIoJCIiIiIiIiKiPo5F4d8oCptamlFeW4mcsgJkFOcgsyQX6eJrXnkRGpoa0dberp4SqG2sF9MVimnylOlUX1XJOiNyXrnlhWhubVG/moiIiIiIiIiI6MpiUfg3isKahjok5KXBJNABB1yO47C7kfLV0N8W0VmJqKqrUU8JxOWmQMfHQplGU+SwuzEOe6iiJf7cEW3x3wdcxTwCbFFRW6V+NRERERERERER0ZXFovBvFIV1jfUITovGqN2z8fTsT/Hy/C/x3JzP8cHKUVhwfDPC0mOV6eTIwENuhnh94TC8OHcwXpo3RJn25QVf4RWRV+d/hddkxJ9fF/mfmNcX6ychrShbeT0RERERERERUXfTfsqZlNQ7sCj8G0WhPLU4uSADwzZPw83jnsPtE17ETWOfxYNT3sSHK0fBLsJDmU6eTjxXfwNu++kFZbrbxr+gTHv7hJdwh8idMuNfwl3i690TX4bGj0/h2TmDlNGKRERERERERETdVV1dHRITExEVFXXRiY2NRVlZmXpOvVN5eTmio6NRWlqqfqRr5H6Rr7va+4dF4d8oCqX6pgbM09+IZ/78FA9NfRP3Tn4dD4qvT/72EXS9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MMuX72Ur1ltmFiqKoiiKouSlLF2+js1bdxEXF2/99nJ/qSjMw1QUioiIiNyZ5ORkAoOC8b8UoCjKPyn+iqIof/dczozx37TgkFDS0tKs317uLxWFeZiKQhERERERERERuVdUFOZhKgpFREREREREROReUVGYh6koFBERERERERGRe0VFYR6molBERERERERERO4VFYV5mIpCERERERERERG5V1QU5mEqCkVERERERERE5F5RUZiHqSgUEREREREREZF7RUVhHqaiUERERERERERE7hUVhXmYikIREREREREREblXVBTmYSoKRURERERERETkXlFRmIepKBQRERERERERkXtFRWEepqJQRERERERERETuFRWFeZiKQhERERERERERuVdUFOZhKgpFREREREREROReUVGYh6koFBEREbkzKSmphEdEEhIapiiKoiiKkicTGRlNWnq69dvL/aWiMA9TUSgiIiJyZ0JDw3HcuI2Vqx1Ys3YDa9ZtVBRFURRFySPZwIpV9mzfsZe4uHjrt5f7S0VhHqaiUERERORGGRkZ1j/lLDAwmOUr17Nz9wHOeXhxxt1DURRFURTlvsf9rKclGzfvYJ39ZmJisi/H7jUVhXmYikIRERH5u4qPjyckJOSuJiwsjKSkJOsWcicgMJhVaxw5f8HHukREREQk7zh23A17hy0qClUU5kxFoYiIiPxd7dixg969e9OrVy9LzD//2ZjP79mzJwMHDsTNzc26hdwxZxSuXuuIp9cF6xIRERGRvMPF9ST2jluIiVVRqKIwB/ezKLzlCT25P9vnX+4fcqBu4/Suu/+Ss1thhj6CIiJ/A8uXL6d58+bMnj2bVatWsWzZsj+d1atXM3bsWMv6Dh48aN1C7mQWhRvw8FRRKCIiInmPikIVhbl2X2cUZiSTmhhDRES45TSf8PAIwsPiiEtIJc065P5LN/YxgSTjH1NSarqxXxmW/U6MiiE+Op6kdHPEvWTsT0I8ibFxxv5kkPZParMyjOObGG0c13AijH/A4VkSFhZDVEwSKdahf4W0pFiSE4ztp2RgvNUiIvI3YBZ8tra2xneJCOuSO2POJOzYsaOKQhEREflHUVGoojDX7n1RmGWmVtRmTi1uxleffsQbb7zKu+9+y5tv9qDb1MN4GA8nZ47K4l63YmZdGcSJeWNZ0qojS1zDjP2KJyVqKzNK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FBERERERERGRe0VFYR6molBERERERERERO4VFYV5mIpCERERERERERG5V1QU5mEqCkVERERERERE5F5RUZiHqSgUEREREREREZF7RUVhHvbnisKzxCUnWUeJiIiIiIiIiIjkzplAFYV51p+fUaiiUEREREREREREbo+KwjzsdovCDcafd3icwTsshODYaC5HRyqKoiiKoiiKoiiKoijKLRMYE2XJET9vHE8ft3RMKgrzmNspCjedOclGI1vOunHQx4ujF705bLy5iqIoiqIoiqIoiqIoinKrmAWhGfNMVbMkzJxR6EtsdIyKwrzidopCsyQ030jz5ybrDENFURRFURRFURRFURRFyW3MiWhm12Re3u7URRWFeUpuikLzjdt+7rSl9T3m74vLRR+OZmmCFUVRFEVRFEVRFEVRFCU3OXrRx9ItmX/2Dg4kxnLqcfYl392IisLbkJuicP0pV3Z7neVSVARh8bGWaxMqiqIoiqIoiqIoiqIoyp0kLPqvm0l4JSoKb0NuisK1J13Zf8GD+ORky/LU9HRFURRFURTFkjTSMtLJML4jKYqiKIqi/B1jfpcxv9Nk/13nr4u53YSEBCIjI7Mt+O5WVBTehtwVhS4cuOBJSlqa9RERERERuSLd+I5knjITZX7JjTS+kCqKoiiKovwtEmn5DpOWmmr9VnPvJSUlqSjMS3JbFO6/4EnSffzgiIiIiORV8fHxeHh44O7ubvmpKIqiKIryd8jZs2c5d+4csbHZl2b3gorCPEZFoYiIiMidiYuLs3zZ9vX1JSQkhODgYEVRFEVRlDwd8zuLn5+fpSiMiYmxfqu591QU5jEqCkVERETujFkUenp6EhAQYPlf5M0v24qiKIqiKHk55neWwMBAy//Yaf79flFRmMeoKBQRERG5M1eKwsuXLxN9D+7cpyiKoiiKcqcxy0Hzf+RUUXgtFYUqCkVERETuiIpCRVEURVH+blFRqKIwWyoKRURERO6MikJFURRFUf5uUVGoojBbKgpFRERE7oyKQkVRFEVR/m5RUaiiMFsqCkVEROTv6syZM6xcuZJly5axdOnSu5J169Zx6dIl6xZyR0WhoiiKoih/t6goVFGYLRWFIiIi8ne1atUqGjVqRPfu3enTpw+9e/f+0zGf36FDB5o3b87hw4etW8gdFYWKoiiKovzdoqJQRWG27llRmGH9eSsZ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RERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERHQZM7P/BxYEGp11M+7UAAAAAElFTkSuQmCC" style="width:70.0%" /><br /> +</p> +<p>The editing of a step input is very similar to the editing of the current step when creating a new VIF, the only difference is that there is no consolidated input data available. ### 1 Mandatory fields These field are mandatory for every manufacturing step. Mandatory fields don’t have a checkbox and are marked red while empty.</p> +<div id="enable-editing-1" class="section level3"> +<h3>2 Enable editing</h3> +<p>To edit an optional parameter, this checkbox has to be ticked.</p> +</div> +<div id="parameters-for-step-input" class="section level3"> +<h3>3 Parameters for step input</h3> +<p>In this column the input data of the current step is displayed, and can be edited. The entries are checked with regard to the data type. The entered data is available and can be edited as long as VECTO wasn’t closed and the job wasn’t removed from the job list. In case a mandatory input field is empty, or the value provided by the user is invalid the input element is highlighted with a red border. To remove an entry from the current step uncheck the corresponding checkbox.</p> +</div> +<div id="save-and-close-2" class="section level3"> +<h3>4 Save and Close</h3> +<p>Save the input data to .xml, the data will still be editable via the job list as long as Vecto was not closed and the file was not removed from the joblist.</p> +</div> +</div> +<div id="exempted-step-input" class="section level2"> +<h2>Exempted step input</h2> +<p>The process for creating an exempted step input are the same as for <a href="#non-exempted-step-input">non exempted input files</a>.</p> +</div> +</div> +<div id="airdrag" class="section level1"> +<h1>Airdrag</h1> +<p>In the <strong>Airdrag</strong> section the consolidated airdrag data is shown and an airdrag component file can be loaded as input for the current step.</p> +<p><img src="data:image/png;base64,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lMVisVgs1v1XDcd5T++zSM/IUn0bILoxBqSkERiQEhER0Z3U3Cl4LBaLxWKx7u+69m7zRM1jQEoagQEpERERERERERGpAwNS0ggMSImIiIiIiIiISB0YkJJGYEBKRERERERERETqwICUNAIDUiIiIiIiIiIiUgcGpKQRGJASEREREREREZE6MCAljcCAlIiIiIiIiIiI1IEBKWkEBqRERERERERERKQODEhJIzAgJSIiIiIiIiIidWBAShqBASkREREREREREakDA1LSCAxIiYiIiIiIiIhIHRiQkkZgQEpEREREREREROrAgJQ0AgNSIiIiIiIiIiJSBwakpBEYkBIRERERERERkTowICWNwICUiIiIiIiIiIjUgQEpaQQGpEREREREREREpA4MSEkjMCAlIiIiIiIiIiJ1YEBKGoEBKRERERERERERqQMDUtIIDEiJiIiIiIiIiEgdGJCSRmBASkRERERERERE6sCAlDQCA1IiIiIiIiIiIlIHBqSkERiQEhERERERERGROjAgJY3AgJSIiIiIiIiIiNSBASlpBAakRERERERERESkDgxISSMwICUiIiIiIiIiInVgQEoagQEpERERERERERGpAwNS0ggMSImIiIiIiIiISB0YkJJGYEBKRERERERERETqwICUNAIDUiIiIiIiIiIiUgcGpKQRGJASEREREREREZE6MCAljcCAlIiIiIiIiIiI1IEBKWkEBqRERERERERERKQODEhJIzAgJSIiIiIiIiIidWBAShqBASkREREREREREakDA1LSCAxIiYiIiIiIiIhIHRiQkkZgQEpEREREREREROrAgJQ0AgNSIiIiIiIiIiJSBwakpBEYkBIRERERERERkTowICWNwICUiIiIiIiIiIjUgQEpaQQGpEREREREREREpA4MSEkjMCAlIiIiIiIiIiJ1YEBKGoEBKRERERERERERqQMDUtIIDEiJiIiIiIiIiEgdGJCSRmBASkRERERERERE6sCAlDQCA1IiIiIiIiIiIlIHBqSkERiQEhERERERERGROjAgJY3AgJSIiIiIiIiIiNSBASlpBAakRERERERERESkDgxISSMwICUiIiIiIiIiInVgQEoagQEpERERERERERGpAwNS0ggMSImIiIiIiIiISB0YkJJGYEBKRERERERERETqwICUNAIDUiIiIiIiIiIiUgcGpKQRGJASEREREREREZE6MCAljcCAlIiIiIiIiIiI1IEBKWkEBqRERERERERERKQODEhJIzAgJSIiIiIiIiIidWBAShqBASkREREREREREakDA1LSCAxIiYiIiIiIiIhIHRiQkkZgQEpEREREREREROrAgJQ0AgNSIiIiIiIiIiJSBwakpBEYkBIRERERERERkTowICWNwICUiIiIiIiIiIjUgQEpaQQGpEREREREREREpA4MSEkjMCAlIiIiIiIiIiJ1YEBKGoEBKRERERERERERqQMDUtIIDEiJiIiIiIiIiEgdGJCSRmBASkRERERERERE6sCAlDQCA1IiIiIiIiIiIlIHBqSkERiQEhERERERERGROjAgJY3AgJSIiIiIiIiIiNSBASlpBAakRERERERERESkDgxISSMwICUiIiIiIiIiInVgQEoagQEpERERERERERGpAwNS0ggMSImIiIiIiIiISB0YkJJGYEBKRERERERERETqwICUNAIDUiIiIiIiIiIiUgcGpKQRGJASEREREREREZE6MCAljcCAlIiIiIiIiIiI1IEBKWkEBqRERERERERERKQODEhJIzAgJSIiIiIiIiIidWBAShqBASkREREREREREakDA1LSCAxIiYiIiIiIiIhIHRiQkkZgQEpEREREREREROrAgJQ0AgNSIiIiIiIiIiJSBwakpBEYkBIRERERERERkTowICWNwICUiIiIiIiIiIjUgQEpaQQGpEREREREREREpA4MSEkjMCAlIiIiIiIiIiJ1YEBKGoEBKRERERERERERqQMDUtIIDEiJiIiIiIiIiEgdGJCSRmBASkRERERERERE6sCAlDQCA1IiIiIiIiIiIlIHBqSkERiQEhERERERERGROjAgJY3AgJSIiIiIiIiIiNSBASlpBAakRERERERERESkDgxISSMwICUiIiIiIiIiInVgQEoagQEpERERERERERGpAwNS0ggMSImIiIiIiIiISB0YkJJGYEBKRERERERERETqwICUNAIDUiIiIiIiIiIiUgcGpKQRGJASEREREREREZE6MCAljcCAlIiIiIiIiIiI1IEBKWkEBqRERERERERERKQODEhJIzAgJSIiIiIiIiIidWBAShqBASkREREREREREakDA1LSCAxIiYiIiIiIiIhIHRiQkkZgQEpEREREREREROrAgJQ0AgNSIiIiIiIiIiJSBwakpBEYkBIRERERERERkTowICWNwICUiIiIiIiIiIjUgQEpaQQGpEREREREREREpA4MSEkjMCAlIiIiIiIiIiJ1uFlAmp+fryzpv0tLS695XnpMer00TFFR0TXPS8WAlG6KASkREREREREREanD9QLSxjA0IyMDaWlpKCwsvGaYxsrLy0N6eroyJG0uRGVASjfFgJSIiIiIiIiIiNThZgFpYmIioqOjkZ2drewhenUAKj0mhaONw5SVlV3xvFQMSOmmGJASEREREREREZE63CwgTUlJUYafCQkJyMrKujSs9HxjOBoXF4eYmBjk5OQwIKXbw4CUiIiIiIiIiIjU4WbXIJVCz6SkJERFRSn/5ubmKoeXwlHpudjYWGWAKgWpPMWebhsDUiIiIiIiIiIiUoebBaRSSdcYlXqQSr1Epb/S/0u9SePj45WPJScn3/AapQxI6aYYkBIRERERERERkTrcLCCVTpmXnpcCUSkclXqLSj1JpXBU+m8pHJV6lUo9R5vrPSoVA1K6KQakRERERERERESkDi3pQdpYmZmZyuuNRkREIDIy8lJv0usFo43FgJRuigEpERERERERERGpw60EpNJp9FJPUum6o9Ld7aVrkEqvZUBK/xgDUiIiIiIiIiIiUodbCUilkkJS6c712dnZLX4dA1K6KQakRERERERERESkDrcakN5OMSClm2JASkRERERERERE6nA7AemNbsjUXDEgpZtiQEpEREREREREROrAHqSkERiQEhERERERERGROjAgJY3AgJSIiIiIiIiIiNSBASlphFsJSBW1DEiJiIiIiIiIiOjfoaiqUoaYpXew5GVlyC8qgne8FJAGMyCla7U0IPVNjENtXZ3qGSIiIiIiIiIion+mRlGNstJSyJRVdkeqUlaOwuJiBqR0fS0JSB3CLsA9LgqxudlILsxHYn4ei8VisVgsFovFYrFYLBaLdXtV0FCx2VmISE9FpFQZaXekojPSEZaWAreYSDiEhzAgpWvdPCANh2NECE5Ghoq/F5X/3fCXxWKxWCwWi8VisVgsFovFut1qyJicIkVJf+9kifdoyLakgDScASld6UYBab7YWE6IDUg6xf54eIiyJ6k9i8VisVgsFovFYrFYLBaL9S+UlDU5hN+dkrItKeOSsi4p82oOA9IH1I0C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" style="width:70.0%" /><br /> +<br /> +<strong>1 Load Airdrag Component File</strong> To set the airdrag component for the current step, it has to be loaded from an existing airdrag component file. To remove the data from the current step, click the trash icon.</p> +<p><strong>2 Consolidated Airdrag Data</strong> In this section the consolidated airdrag data from the previous manufacturing steps is displayed.</p> +<p><strong>3 Current Step Airdrag Data</strong> In this section the airdrag data from the current step is displayed, the values cannot be edited directly in the GUI.</p> +<p>Contrary to all other components, for air drag it is defined that in case standard values shall be used for a particular vehicle, no component input data shall be provided. In this case VECTO automatically allocates the standard values applicable for the particular vehicle group in the simulations. Assuming an interim manufacturer mounts the body of the complete bus and provides measured air-drag data, this is written to the VIF. In case the body is modified in a later manufacturing step in such a way that the measured air-drag data is no longer applicable but no updated measurement data is available the standard value has to be applied. (learn more in <a href="#airdrag-modified-multistep">Airdrag Modified Multistep</a>).</p> +<div id="airdrag-modified-multistep" class="section level2"> +<h2>Airdrag Modified Multistep</h2> +<p>When airdrag data has been provided in any previous simulation step the <strong>Airdrag Modified Multistage</strong> parameter can be set in the <em>Vehicle</em> section, if no airdrag data has been provided in previous steps this parameter is hidden.</p> +<p>All manufacturing steps after the one where the air-drag component was added need to state whether modifications have been made that affect the air-drag.</p> +<ul> +<li>In case no modifications were made, “AirdragModifiedMultistep†has to be set to false and the previous air-drag component is used.</li> +<li>In case modifications were made, “AirdragModifiedMultistep†has to be set to true. The interim manufacturer can provide a new measured air-drag component to be used for the simulation. In case no updated measurement is provided VECTO applies the standard values. In the VIF this is indicated by using a special XML type for the air-drag component.</li> +</ul> +</div> +</div> +<div id="FOOTER"> +<a target="mainframe" href="mailto:vecto@jrc.ec.europa.eu">Contact</a> +<span style="text-align:right; float:right">Print View: <a href="javascript:$('div').show().not('.vecto2').not('.vecto3').css({'padding-left':'0px'}).filter('#CONTENT,#TOC,#HEADER,#FOOTER,#MathJax_Message').hide();void(0);">All</a>, <a href="javascript:$('div').not('.vecto2').not('.vecto3').css({'padding-left':'0px'}).filter('#TOC,#HEADER,#FOOTER,#MathJax_Message').hide();$('#CONTENT').css({'display':'inline'});void(0);">Current</a> +</div> +</body> +</html> diff --git a/Documentation/MultiStepTool/build_in_docker.sh b/Documentation/MultiStepTool/build_in_docker.sh new file mode 100644 index 0000000000000000000000000000000000000000..8719a17dafc75213188b94ce43ad7f1bf9b2ab9c --- /dev/null +++ b/Documentation/MultiStepTool/build_in_docker.sh @@ -0,0 +1,2 @@ +docker build -t ubuntu_pandoc . +docker run --rm --volume /mnt/c/Users/Harry/source/repos/hm_vecto-dev/Documentation/MultiStepTool:/documentation --entrypoint /documentation/convert.sh ubuntu_pandoc diff --git a/Documentation/MultiStepTool/convert.sh b/Documentation/MultiStepTool/convert.sh new file mode 100644 index 0000000000000000000000000000000000000000..a9a8e483932dd5b629d04991867534bacac3b61c --- /dev/null +++ b/Documentation/MultiStepTool/convert.sh @@ -0,0 +1,23 @@ +#!/bin/bash + + +#readarray [-d delim] [-n count] [-O origin] [-s count] + # [-t] [-u fd] [-C callback] [-c quantum] [array] +#ls + +cd documentation + +#ls + +declare -a FILES +mapfile -t FILES < files.txt +cat files.txt +echo "Running pandoc with these input files" +echo "${FILES[@]}" + +OUTPUTFILE="MultiStepToolHelp.html" + +#pandoc --verbose -f markdown+raw_html %LIST% -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o HashingToolHelp.html -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js +pandoc --verbose -f markdown+raw_html ${FILES[@]} -s -S --toc --toc-depth=2 --self-contained --email-obfuscation=none --section-divs --webtex -c includes/style.css -c includes/print.css -B includes/header.html -A includes/footer.html -o $OUTPUTFILE -H includes/jquery.js -H includes/jquery-ui.js -H includes/include.js + + diff --git a/Documentation/MultiStepTool/files.txt b/Documentation/MultiStepTool/files.txt new file mode 100644 index 0000000000000000000000000000000000000000..1f3ad720ca46a3fa868e70e1ff3ce51740707fd6 --- /dev/null +++ b/Documentation/MultiStepTool/files.txt @@ -0,0 +1,4 @@ +1-introduction/0_start.md +1-introduction/A_ui_intro.md +1-introduction/B_new_job.md +1-introduction/C_new_step_input.md \ No newline at end of file diff --git a/Documentation/MultiStepTool/graphics.pptx b/Documentation/MultiStepTool/graphics.pptx new file mode 100644 index 0000000000000000000000000000000000000000..fbc81e9113d57e5171239faedf7ed754cebb17a2 Binary files /dev/null and b/Documentation/MultiStepTool/graphics.pptx differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-edited.png b/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6696e9447f40406da5942fe38070c74f228753 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-edited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-unedited.png b/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..180a5ffd604be49f303a8876f0ef02cd503756c6 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/additional-info-1-unedited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/overview1-edited.png b/Documentation/MultiStepTool/images/1-ui-overview/overview1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..e1b659aa8a6b92341a3e275bad23e77e576631cc Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/overview1-edited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/overview1-unedited.png b/Documentation/MultiStepTool/images/1-ui-overview/overview1-unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..e849a2ef64f7395a016e46cd6995ff38cf8ceed7 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/overview1-unedited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/overview2-edited.png b/Documentation/MultiStepTool/images/1-ui-overview/overview2-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4b21c9d602c3fb7462be4712730adb0f340514 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/overview2-edited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/settings-1-edited.png b/Documentation/MultiStepTool/images/1-ui-overview/settings-1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..a9495faddba730f3aa2a74d466a22f11c3674d5e Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/settings-1-edited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/settings-1-unedited.png b/Documentation/MultiStepTool/images/1-ui-overview/settings-1-unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..533160370eb3a73ae0d16aa580832f2f00f94ebd Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/settings-1-unedited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-edited.png b/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..3719dc84aac8acf46eecda3d9f8cc1a61e1e749a Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-edited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-unedited.png b/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..25385cd9683ad9201c2537e5c12c1b0b2995b7a3 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/simulation-section1-unedited.png differ diff --git a/Documentation/MultiStepTool/images/1-ui-overview/simulation_finished.png b/Documentation/MultiStepTool/images/1-ui-overview/simulation_finished.png new file mode 100644 index 0000000000000000000000000000000000000000..eef2d1d12c93f8e38f3031c7e1c0fa7f64b50f50 Binary files /dev/null and b/Documentation/MultiStepTool/images/1-ui-overview/simulation_finished.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/airdrag-1-edited.png b/Documentation/MultiStepTool/images/2-new-job/airdrag-1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..386d143a43475b8aa1e1a28de3af442363543969 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/airdrag-1-edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/airdrag-1-unedited.png b/Documentation/MultiStepTool/images/2-new-job/airdrag-1-unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..edbfc8e225f737cb836e70c3ce9fe7d550c9736e Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/airdrag-1-unedited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/airdrag_unedited.png b/Documentation/MultiStepTool/images/2-new-job/airdrag_unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..95f90e13852c8e5d7b1f27c2cd214772e4f90d1c Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/airdrag_unedited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/general-case.png b/Documentation/MultiStepTool/images/2-new-job/general-case.png new file mode 100644 index 0000000000000000000000000000000000000000..ac1dfe015b268a864fc8e4723424fdd06201f2a4 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/general-case.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_job_1_edited.png b/Documentation/MultiStepTool/images/2-new-job/new_job_1_edited.png new file mode 100644 index 0000000000000000000000000000000000000000..ed2257082b429c2efb70256f5a9e0a41b515ded2 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_job_1_edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_job_1_unedited.png b/Documentation/MultiStepTool/images/2-new-job/new_job_1_unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..fc435b78aea8fccd3bf3eda7704abd2b4dd433d6 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_job_1_unedited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_step_input_1_edited.png b/Documentation/MultiStepTool/images/2-new-job/new_step_input_1_edited.png new file mode 100644 index 0000000000000000000000000000000000000000..127ecfeb39fb8a6d9ef442b6ba9445f3b573c6d3 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_step_input_1_edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_edited.png b/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_edited.png new file mode 100644 index 0000000000000000000000000000000000000000..deb189bd4ee4f084baaa6dd9d3fd34936a761998 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_unedited.png b/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_unedited.png new file mode 100644 index 0000000000000000000000000000000000000000..0bb665ab0a418f731fea5a3e67417098c507348f Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_step_input_2_unedited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/new_vif_edited.png b/Documentation/MultiStepTool/images/2-new-job/new_vif_edited.png new file mode 100644 index 0000000000000000000000000000000000000000..c5e259044d1cdf56fb6fdc16f3581c0bfcc152a1 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/new_vif_edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/special-case-1-edit.png b/Documentation/MultiStepTool/images/2-new-job/special-case-1-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb81d38a0707eee03209a603e59d41a8ac68158 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/special-case-1-edit.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/special-case-1-edited.png b/Documentation/MultiStepTool/images/2-new-job/special-case-1-edited.png new file mode 100644 index 0000000000000000000000000000000000000000..ba6b969197e070a0c71cb0f3eb6ee857ed3eb8c8 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/special-case-1-edited.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/special-case-1.png b/Documentation/MultiStepTool/images/2-new-job/special-case-1.png new file mode 100644 index 0000000000000000000000000000000000000000..27b19ed521d93aed41232c67e7dcdee5a1db83c6 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/special-case-1.png differ diff --git a/Documentation/MultiStepTool/images/2-new-job/special-case-2.png b/Documentation/MultiStepTool/images/2-new-job/special-case-2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a0ec5147b6cc1621b04ad83a48c1193d6182d52 Binary files /dev/null and b/Documentation/MultiStepTool/images/2-new-job/special-case-2.png differ diff --git a/Documentation/MultiStepTool/images/EuropeanCommission.jpg b/Documentation/MultiStepTool/images/EuropeanCommission.jpg new file mode 100644 index 0000000000000000000000000000000000000000..459c113b65a648c64103cc9b78a8ae91a86911ee Binary files /dev/null and b/Documentation/MultiStepTool/images/EuropeanCommission.jpg differ diff --git a/Documentation/MultiStepTool/images/VECTO-small.PNG b/Documentation/MultiStepTool/images/VECTO-small.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ccdc3b6e555df4c4232bfbfef1f7b2b45df1bcd0 Binary files /dev/null and b/Documentation/MultiStepTool/images/VECTO-small.PNG differ diff --git a/Documentation/MultiStepTool/images/VECTOlarge.png b/Documentation/MultiStepTool/images/VECTOlarge.png new file mode 100644 index 0000000000000000000000000000000000000000..278ec23c39baf18c988a0f26785ad3621065660e Binary files /dev/null and b/Documentation/MultiStepTool/images/VECTOlarge.png differ diff --git a/Documentation/MultiStepTool/images/vecto_multistage_large.jpg b/Documentation/MultiStepTool/images/vecto_multistage_large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8be00917ca4cce4495ba7b20cab80c405c508ec0 Binary files /dev/null and b/Documentation/MultiStepTool/images/vecto_multistage_large.jpg differ diff --git a/Documentation/MultiStepTool/images/vecto_multistage_large.png b/Documentation/MultiStepTool/images/vecto_multistage_large.png new file mode 100644 index 0000000000000000000000000000000000000000..8be00917ca4cce4495ba7b20cab80c405c508ec0 Binary files /dev/null and b/Documentation/MultiStepTool/images/vecto_multistage_large.png differ diff --git a/Documentation/MultiStepTool/includes/footer.html b/Documentation/MultiStepTool/includes/footer.html new file mode 100644 index 0000000000000000000000000000000000000000..29bd9d3873e5ba3d88590a96c15403578154fdbb --- /dev/null +++ b/Documentation/MultiStepTool/includes/footer.html @@ -0,0 +1,4 @@ +<div id="FOOTER"> +<a target="mainframe" href="mailto:vecto@jrc.ec.europa.eu">Contact</a> +<span style="text-align:right; float:right">Print View: <a href="javascript:$('div').show().not('.vecto2').not('.vecto3').css({'padding-left':'0px'}).filter('#CONTENT,#TOC,#HEADER,#FOOTER,#MathJax_Message').hide();void(0);">All</a>, <a href="javascript:$('div').not('.vecto2').not('.vecto3').css({'padding-left':'0px'}).filter('#TOC,#HEADER,#FOOTER,#MathJax_Message').hide();$('#CONTENT').css({'display':'inline'});void(0);">Current</a> +</div> \ No newline at end of file diff --git a/Documentation/MultiStepTool/includes/header.html b/Documentation/MultiStepTool/includes/header.html new file mode 100644 index 0000000000000000000000000000000000000000..311554279bfcf54d0968a2f09521d6b162d3fc26 --- /dev/null +++ b/Documentation/MultiStepTool/includes/header.html @@ -0,0 +1,13 @@ +<div id="HEADER"> + <div style="float:left"> + <a href="MultiStepToolHelp.html"><img style="vertical-align:middle" alt="VECTO-Logo" src="images/VECTO-small.PNG"></a> + <a href="MultiStepToolHelp.html">User Manual</a> + </div> + <div style="text-align: right"> + <a href="https://ec.europa.eu/clima/" target="_blank"><img style="border: 0px solid; height: 40px;" alt="European Commission" src="pics/EuropeanCommission.jpg" hspace="5"></a> +<!-- <a href="http://www.ivt.tugraz.at/" target="_blank"><img src="pics/IVT.png" alt="IVT-Logo" style="border: 0px solid; width: 74px; height: 36px;" hspace="5"></a> + <a href="http://portal.tugraz.at/pls/portal/url/page/TU_Graz" target="_blank"><img src="pics/TUG.png" alt="TUG-Logo" style="border: 0px solid; width: 96px; height: 36px;" hspace="5"></a> + --> </div> +</div> +<div id="CONTENT"> +</div> \ No newline at end of file diff --git a/Documentation/MultiStepTool/includes/include.js b/Documentation/MultiStepTool/includes/include.js new file mode 100644 index 0000000000000000000000000000000000000000..adeefd11c6fa43bc870ce80e5aaf66058b08a05a --- /dev/null +++ b/Documentation/MultiStepTool/includes/include.js @@ -0,0 +1,71 @@ +<script type="text/javascript"> +$(function(){ + var OnClick = function() { + showContent($($(this).attr("href").replace(".", "\\."))); + }; + + var showContent = function(element){ + $("#CONTENT").html(element.html()); + $("#CONTENT > a").click(OnClick); + $("#CONTENT").show(); + window.scrollTo(0, 0); + }; + + + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER):not(.vecto2):not(.vecto3)").hide(); + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER) > div:not(.vecto2):not(.vecto3)").hide(); + + window.onhashchange=function(){showContent($(window.location.hash.replace(".", "\\.")));}; + if (window.location.hash) { + showContent($(window.location.hash.replace(".", "\\."))); + } else { + showContent($("#user-manual")); + } + + $("#TOC").resizable(); + + $("#TOC").resizable({ + handles: "e", + resize: function(event, ui) { + $("body > div:not(#TOC):not(#HEADER):not(#FOOTER)").css("padding-left", ui.size.width); + } + }); + + $("#TOC").scroll(function() { + $(".ui-resizable-handle").css('top', $("#TOC").scrollTop()); + }); + + +/* hide some items from TOC */ + +$("#TOC li a[href='#electrical-auxiliaries-editor']").parent().hide() +$("#TOC li a[href='#combined-alternator-map-file-.aalt']").parent().hide() +$("#TOC li a[href='#pneumatic-auxiliaries-editor']").parent().hide() +$("#TOC li a[href='#hvac-auxiliaries-editor']").parent().hide() +/*-------------------------*/ + + $("td[align=left").filter(function() {return $(this).text().indexOf("Locked default")===0 || $(this).text().indexOf("Locked Calc") === 0; }).addClass("aaux_locked") +}); + +/* +javascript to check if all links are valid: +*/ + +function CheckGeneratedLinks() { + var content = jQuery("#CONTENT"); + content.html(""); + jQuery("a[href]").each(function(idx, elem) { + var link=jQuery(elem).attr("href"); + if(link.startsWith("javascript:")) {return true} + if (!link.startsWith("#")) { content.append("ignoring: " + link +"<br/>"); return true; } + var node=jQuery("*[id='" + link.replace("#", "") + "']"); + if (node.length) { + content.append("found: " + link) + } else { + content.append("missing: " + link) + }; + content.append("<br/>"); + }); +} + +</script> \ No newline at end of file diff --git a/Documentation/MultiStepTool/includes/jquery-ui.js b/Documentation/MultiStepTool/includes/jquery-ui.js new file mode 100644 index 0000000000000000000000000000000000000000..7f59f69a82a1d31a20804f05e4773738a9305883 --- /dev/null +++ b/Documentation/MultiStepTool/includes/jquery-ui.js @@ -0,0 +1,13 @@ +<script type="text/javascript">/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) +}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; +this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) +}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?" ":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} +},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog +},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1 +},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter; +this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});</script> \ No newline at end of file diff --git a/Documentation/MultiStepTool/includes/jquery.js b/Documentation/MultiStepTool/includes/jquery.js new file mode 100644 index 0000000000000000000000000000000000000000..c629aa714f25088776391b3f98cae07348309b9e --- /dev/null +++ b/Documentation/MultiStepTool/includes/jquery.js @@ -0,0 +1,4 @@ +<script type="text/javascript">/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=Array.isArray(d)))?(e?(e=!1,f=c&&Array.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,N,e),g(f,c,O,e)):(f++,j.call(a,g(f,c,N,e),g(f,c,O,e),g(f,c,N,c.notifyWith))):(d!==N&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), +a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},U=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function V(){this.expando=r.expando+V.uid++}V.uid=1,V.prototype={cache:function(a){var b=a[this.expando];return b||(b={},U(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){Array.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(L)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var W=new V,X=new V,Y=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function $(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:Y.test(a)?JSON.parse(a):a)}function _(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Z,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=$(c)}catch(e){}X.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return X.hasData(a)||W.hasData(a)},data:function(a,b,c){return X.access(a,b,c)},removeData:function(a,b){X.remove(a,b)},_data:function(a,b,c){return W.access(a,b,c)},_removeData:function(a,b){W.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=X.get(f),1===f.nodeType&&!W.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),_(f,d,e[d])));W.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){X.set(this,a)}):T(this,function(b){var c;if(f&&void 0===b){if(c=X.get(f,a),void 0!==c)return c;if(c=_(f,a),void 0!==c)return c}else this.each(function(){X.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=W.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var aa=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ba=new RegExp("^(?:([+-])=|)("+aa+")([a-z%]*)$","i"),ca=["Top","Right","Bottom","Left"],da=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},ea=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function fa(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&ba.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var ga={};function ha(a){var b,c=a.ownerDocument,d=a.nodeName,e=ga[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),ga[d]=e,e)}function ia(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=W.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&da(d)&&(e[f]=ha(d))):"none"!==c&&(e[f]="none",W.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ia(this,!0)},hide:function(){return ia(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){da(this)?r(this).show():r(this).hide()})}});var ja=/^(?:checkbox|radio)$/i,ka=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c<d;c++)W.set(a[c],"globalEval",!b||W.get(b[c],"globalEval"))}var pa=/<|&#?\w+;/;function qa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(pa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ka.exec(f)||["",""])[1].toLowerCase(),i=ma[h]||ma._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==xa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===xa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&B(this,"input"))return this.click(),!1},_default:function(a){return B(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?va:wa,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:wa,isPropagationStopped:wa,isImmediatePropagationStopped:wa,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=va,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=va,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=va,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&sa.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&ta.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return ya(this,a,b,c,d)},one:function(a,b,c,d){return ya(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=wa),this.each(function(){r.event.remove(this,a,c,b)})}});var za=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/<script|<style|<link/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,Ca=/^true\/(.*)/,Da=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}X.hasData(a)&&(h=X.access(a),i=r.extend({},h),X.set(b,i))}}function Ia(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ja.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ja(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,na(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Ga),l=0;l<i;l++)j=h[l],la.test(j.type||"")&&!W.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Da,""),k))}return a}function Ka(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(na(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&oa(na(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(za,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d<e;d++)Ia(f[d],g[d]);if(b)if(c)for(f=f||na(a),g=g||na(h),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);else Ha(a,h);return g=na(h,"script"),g.length>0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(na(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ja(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(na(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var La=/^margin/,Ma=new RegExp("^("+aa+")(?!px)[a-z%]+$","i"),Na=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",ra.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,ra.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Oa(a,b,c){var d,e,f,g,h=a.style;return c=c||Na(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&Ma.test(g)&&La.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Pa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Qa=/^(none|table(?!-c[ea]).+)/,Ra=/^--/,Sa={position:"absolute",visibility:"hidden",display:"block"},Ta={letterSpacing:"0",fontWeight:"400"},Ua=["Webkit","Moz","ms"],Va=d.createElement("div").style;function Wa(a){if(a in Va)return a;var b=a[0].toUpperCase()+a.slice(1),c=Ua.length;while(c--)if(a=Ua[c]+b,a in Va)return a}function Xa(a){var b=r.cssProps[a];return b||(b=r.cssProps[a]=Wa(a)||a),b}function Ya(a,b,c){var d=ba.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Za(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ca[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ca[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ca[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ca[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ca[f]+"Width",!0,e)));return g}function $a(a,b,c){var d,e=Na(a),f=Oa(a,b,e),g="border-box"===r.css(a,"boxSizing",!1,e);return Ma.test(f)?f:(d=g&&(o.boxSizingReliable()||f===a.style[b]),"auto"===f&&(f=a["offset"+b[0].toUpperCase()+b.slice(1)]),f=parseFloat(f)||0,f+Za(a,b,c||(g?"border":"content"),d,e)+"px")}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Oa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=Ra.test(b),j=a.style;return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:j[b]:(f=typeof c,"string"===f&&(e=ba.exec(c))&&e[1]&&(c=fa(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(j[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i?j.setProperty(b,c):j[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b),i=Ra.test(b);return i||(b=Xa(h)),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Oa(a,b,d)),"normal"===e&&b in Ta&&(e=Ta[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Qa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?$a(a,b,d):ea(a,Sa,function(){return $a(a,b,d)})},set:function(a,c,d){var e,f=d&&Na(a),g=d&&Za(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=ba.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Ya(a,c,g)}}}),r.cssHooks.marginLeft=Pa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Oa(a,"marginLeft"))||a.getBoundingClientRect().left-ea(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ca[d]+b]=f[d]||f[d-2]||f[0];return e}},La.test(a)||(r.cssHooks[a+b].set=Ya)}),r.fn.extend({css:function(a,b){return T(this,function(a,b,c){var d,e,f={},g=0;if(Array.isArray(b)){for(d=Na(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&da(a),q=W.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],cb.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=W.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ia([a],!0),j=a.style.display||j,k=r.css(a,"display"),ia([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=W.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ia([a],!0),m.done(function(){p||ia([a]),W.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=hb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],Array.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=kb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=ab||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(i||h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:ab||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);f<g;f++)if(d=kb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,hb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j}r.Animation=r.extend(kb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return fa(c.elem,a,ba.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(L);for(var c,d=0,e=a.length;d<e;d++)c=a[d],kb.tweeners[c]=kb.tweeners[c]||[],kb.tweeners[c].unshift(b)},prefilters:[ib],prefilter:function(a,b){b?kb.prefilters.unshift(a):kb.prefilters.push(a)}}),r.speed=function(a,b,c){var d=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off?d.duration=0:"number"!=typeof d.duration&&(d.duration in r.fx.speeds?d.duration=r.fx.speeds[d.duration]:d.duration=r.fx.speeds._default),null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){r.isFunction(d.old)&&d.old.call(this),d.queue&&r.dequeue(this,d.queue)},d},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(da).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=kb(this,r.extend({},a),f);(e||W.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=W.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&db.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=W.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),r.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(ab=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),ab=void 0},r.fx.timer=function(a){r.timers.push(a),r.fx.start()},r.fx.interval=13,r.fx.start=function(){bb||(bb=!0,eb())},r.fx.stop=function(){bb=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var lb,mb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return T(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), +null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!B(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Tb=[],Ub=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Tb.pop()||r.expando+"_"+ub++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Ub.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ub.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Ub,"$1"+e):b.jsonp!==!1&&(b.url+=(vb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Tb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=C.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=qa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=pb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length},r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),b=f.ownerDocument,c=b.documentElement,e=b.defaultView,{top:d.top+e.pageYOffset-c.clientTop,left:d.left+e.pageXOffset-c.clientLeft}):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),B(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||ra})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return T(this,function(a,d,e){var f;return r.isWindow(a)?f=a:9===a.nodeType&&(f=a.defaultView),void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Pa(o.pixelPosition,function(a,c){if(c)return c=Oa(a,b),Ma.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return T(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.holdReady=function(a){a?r.readyWait++:r.ready(!0)},r.isArray=Array.isArray,r.parseJSON=JSON.parse,r.nodeName=B,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Vb=a.jQuery,Wb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Wb),b&&a.jQuery===r&&(a.jQuery=Vb),r},b||(a.jQuery=a.$=r),r});</script> diff --git a/Documentation/MultiStepTool/includes/print.css b/Documentation/MultiStepTool/includes/print.css new file mode 100644 index 0000000000000000000000000000000000000000..f02fa0ca8e9f3c4602c149a30203e81ba8cb8c03 --- /dev/null +++ b/Documentation/MultiStepTool/includes/print.css @@ -0,0 +1,19 @@ +@media print { + #CONTENT { + display: none; + + } + #HEADER { + display: none; + } + body > div { + display: block; + padding-left: 2em; + } + .section.level2 { + page-break-before: always; + } + a, a:visited, a:link { + color: blue; + } +} \ No newline at end of file diff --git a/Documentation/MultiStepTool/includes/style.css b/Documentation/MultiStepTool/includes/style.css new file mode 100644 index 0000000000000000000000000000000000000000..35eb60b2a09077c3d530f4daf2ea80ec6ca59f42 --- /dev/null +++ b/Documentation/MultiStepTool/includes/style.css @@ -0,0 +1,165 @@ +body { + height: 100%; + min-height: 100%; + font-family: Calibri, sans-serif; +} + +.section.level1 {padding-left:336px} + +nav, #TOC { + position: fixed; + width: 21em; + left: 0px; + top: 3.5em; + bottom: 2em; + background-color: #eee; + overflow: scroll; +} + +#HEADER{ + top: 0px; + left: 1px; + border-bottom-style: solid; + border-bottom-width: thin; + border-bottom-color: #aaa; + height: 2.5em; +} + +#FOOTER { + border-top-style: solid; + border-top-width: thin; + border-top-color: #aaa; + bottom: 0px; + left: 1px; +} + +#HEADER, #FOOTER { + width: auto; + position: fixed; + width: 99%; + background: white; + padding: 5px; +} + +body > div:not(#TOC):not(#HEADER):not(#FOOTER) { + display: none; + padding-left: 21em; + padding-top: 2em; + padding-bottom: 2em; + margin-left: 1em; + width: 50em; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +nav ul { + line-height: 1.7em; + list-style-type: none; + list-style-position: inside; +} + +th { + font-weight: bold; +} + +th, td { + padding: 6px; + border-width: 1px; + border-style: solid; + border-color: #aaa; +} + +h1, h2, h3 { + padding-bottom: 3px; + border-bottom-width: 1px; + border-bottom-style: solid; + border-bottom-color: #aaa; +} + +dt { + font-style: italic; + font-weight: bold; +} + +.ui-resizable-handle { + position: absolute; + width: 20px; + cursor: ew-resize; + right: 0px; + height: 100%; + top: 0px; +} + +div.vecto2 { + border-left: 3px solid gray; + padding-left: 5px; + margin-top: 2em; + background: rgba(128,128,128,0.05); +} +div.vecto2:before { + content: 'Note: Vecto 2.2!'; + background: gray; + color: white; + padding: 5px 5px 5px 5px; + margin-left: -8px; + font-weight: bold; + display: inline-block; + font-size: smaller; +} + + +div.vecto3 { + border-left: 3px solid green; + padding-left: 5px; + margin-top: 2em; + background: rgba(0,128,0,0.05); +} +div.vecto3:before { + content: 'Note: Vecto 3.x!'; + background: green; + color: white; + padding: 5px 5px 5px 5px; + margin-left: -8px; + font-weight: bold; + display: inline-block; + font-size: smaller; +} + + +div.engineering{ + border-right: 5px solid #d51000; + margin-right: -50px; + background-image: url("../pics/icon_engineering-mode.svg"); + background-color: rgba(255,0,0,0.2); + padding: 2px 50px 2px 5px; + margin-bottom: 0.5em; + background-repeat: no-repeat; + background-size: 38px; + background-position: top right; +} + +div.declaration { + border-right: 5px solid #08c300; + margin-right: -50px; + background-image: url("../pics/icon_declaration-mode.svg"); + background-color: rgba(0,255,0,0.2); + padding: 2px 50px 2px 5px; + margin-bottom: 0.5em; + background-repeat: no-repeat; + background-size: 38px; + background-position: top right; +} + +pre { + padding: 2px; + border: 1px solid #EEEEEE; +} + + +.aaux_locked { + background: gray; + color: white; + } \ No newline at end of file diff --git a/Documentation/MultiStepTool/pics/EuropeanCommission.jpg b/Documentation/MultiStepTool/pics/EuropeanCommission.jpg new file mode 100644 index 0000000000000000000000000000000000000000..459c113b65a648c64103cc9b78a8ae91a86911ee Binary files /dev/null and b/Documentation/MultiStepTool/pics/EuropeanCommission.jpg differ diff --git a/Documentation/MultiStepTool/pics/icon_declaration-mode.svg b/Documentation/MultiStepTool/pics/icon_declaration-mode.svg new file mode 100644 index 0000000000000000000000000000000000000000..eb565550b1cc796a4634621e576e63836862d72b --- /dev/null +++ b/Documentation/MultiStepTool/pics/icon_declaration-mode.svg @@ -0,0 +1,100 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="49.796822mm" + height="49.796822mm" + viewBox="0 0 176.44543 176.44543" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="icon_declaration-mode.svg"> + <defs + id="defs4" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="17.292933" + inkscape:cy="46.828754" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1920" + inkscape:window-height="1138" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-266.34083,-53.486974)"> + <path + sodipodi:type="star" + style="fill:#08c300;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4143" + sodipodi:sides="12" + sodipodi:cx="354.56354" + sodipodi:cy="141.70969" + sodipodi:r1="77.680084" + sodipodi:r2="88.272827" + sodipodi:arg1="0.74897703" + sodipodi:arg2="1.0107764" + inkscape:flatsided="false" + inkscape:rounded="0.4" + inkscape:randomized="0" + d="m 411.45533,194.60127 c -6.55639,7.05225 -1.84276,16.78206 -10.00099,21.89709 -8.15824,5.11503 -14.86274,-3.36655 -24.06686,-0.53732 -9.20412,2.82923 -9.9869,13.61231 -19.60966,13.96293 -9.62275,0.35063 -11.18823,-10.34688 -20.57384,-12.49876 -9.38562,-2.15187 -15.45507,6.79516 -23.96393,2.28743 -8.50887,-4.50772 -4.51585,-14.55478 -11.5681,-21.11116 -7.05224,-6.55639 -16.78205,-1.84276 -21.89708,-10.001 -5.11503,-8.15823 3.36655,-14.86273 0.53732,-24.06685 -2.82924,-9.20412 -13.61231,-9.9869 -13.96294,-19.60966 -0.35063,-9.62275 10.34689,-11.18823 12.49876,-20.57385 2.15187,-9.38561 -6.79515,-15.45506 -2.28743,-23.96392 4.50773,-8.508867 14.55478,-4.515853 21.11117,-11.568099 6.55638,-7.052246 1.84275,-16.782056 10.00099,-21.897084 8.15824,-5.11503 14.86274,3.36655 24.06686,0.537318 9.20411,-2.829232 9.9869,-13.612309 19.60965,-13.962935 9.62276,-0.350627 11.18823,10.346886 20.57385,12.498759 9.38562,2.151872 15.45506,-6.795155 23.96393,-2.28743 8.50886,4.507727 4.51585,14.554783 11.56809,21.111168 7.05225,6.556384 16.78206,1.842755 21.89709,10.000992 5.11503,8.158241 -3.36655,14.862741 -0.53732,24.066851 2.82923,9.20412 13.61231,9.9869 13.96293,19.60966 0.35063,9.62275 -10.34688,11.18823 -12.49875,20.57385 -2.15188,9.38561 6.79515,15.45506 2.28742,23.96393 -4.50772,8.50886 -14.55478,4.51585 -21.11116,11.56809 z" + inkscape:transform-center-x="5.2453988" + inkscape:transform-center-y="-3.2833186" /> + <circle + style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4145" + cx="354.56354" + cy="141.70969" + r="50.507629" /> + <circle + style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:7.01602173;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4150" + cx="354.56354" + cy="141.70969" + r="62.899368" /> + <g + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#08c300;fill-opacity:1;stroke:#08c300;stroke-width:1.05754519;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="text4136" + transform="matrix(1.8911721,0,0,1.8911721,6.1173534,-48.694462)"> + <path + d="m 200.39705,85.245689 0.73242,1.269532 q -7.15332,5.053711 -13.25684,12.792968 -6.10351,7.739261 -8.81347,15.161131 l -1.07422,0.70801 q -1.3916,0.90332 -2.39258,1.80664 -0.1709,-0.87891 -0.95215,-2.83203 l -0.56152,-1.3916 q -1.83106,-4.5166 -3.10059,-6.29883 -1.24511,-1.80664 -2.70996,-1.95313 1.97754,-1.80664 3.44239,-1.80664 2.02636,0 4.44335,5.44434 l 0.87891,1.95313 q 4.32129,-7.73926 10.42481,-14.257817 6.12793,-6.518555 12.93945,-10.595704 z" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:50px;line-height:125%;font-family:'Wingdings 2';-inkscape-font-specification:'Wingdings 2, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#08c300;fill-opacity:1;stroke:#08c300;stroke-width:1.05754519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + id="path4141" + inkscape:connector-curvature="0" /> + </g> + </g> +</svg> diff --git a/Documentation/MultiStepTool/pics/icon_engineering-mode.svg b/Documentation/MultiStepTool/pics/icon_engineering-mode.svg new file mode 100644 index 0000000000000000000000000000000000000000..02e5c0a6a6264a60af5b411af8d62f9e18bfe722 --- /dev/null +++ b/Documentation/MultiStepTool/pics/icon_engineering-mode.svg @@ -0,0 +1,66 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="45.155556mm" + height="44.026669mm" + viewBox="0 0 160 156.00001" + id="svg4167" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="icon_engineering-mode.svg"> + <defs + id="defs4169" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.8" + inkscape:cx="18.258504" + inkscape:cy="97.237374" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" + inkscape:window-width="1920" + inkscape:window-height="1138" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" /> + <metadata + id="metadata4172"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-234.28571,-345.79078)"> + <path + inkscape:connector-curvature="0" + d="m 254.28571,345.79078 -2,4 21,12 c 0,10 -4,18 -13,23 l -21,-12 -1,2 c 5,15 15,25 35,25 5,0 20,15 28,23 l 16,-16 c -8,-8 -26,-26 -26,-31 0,-18 -5,-30 -37,-30 z m 125,5 -20,14 -2,8 -58,58 -8,-5 -4,4 c 0,12 -14,18 -20,18 l -33,33 c 0,10 11,21 21,21 l 33,-33 c 0,-6 6,-20 18,-20 l 4,-4 -5,-8 58,-58 8,-2 14,-20 -6,-6 z m -50,68 -16,16 c 12,12 28,28 28,33 0,18 5,30 37,30 l 2,-4 -21,-12 c 0,-10 4,-18 13,-23 l 21,12 1,-2 c -5,-15 -15,-25 -35,-25 -5,0 -18,-13 -30,-25 z" + id="imagebot_3-0" + style="fill:#d51000;fill-opacity:1" /> + </g> +</svg> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/completed_heavyBus_31b.VIF_Report_2.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/completed_heavyBus_31b.VIF_Report_2.xml index 2c0c3b8ebb62078bf234e4039f9beaeee270217e..a73717b581ae83abedd61b642d83452b2ad6048d 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/completed_heavyBus_31b.VIF_Report_2.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/completed_heavyBus_31b.VIF_Report_2.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:vif="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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> <Data id="VEH-88dcf76d37a64b5eaf70" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -571,9 +571,9 @@ </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-aec22451f48f47c484ac"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-aec22451f48f47c484ac"> + <HashPreviousStep> <di:Reference URI="#VEH-88dcf76d37a64b5eaf70"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -582,31 +582,31 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>4MFxDdYDnYyRrUdyIPFhEYwbyqqJl3MlYtXMaB/RQis=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-273285e977014470902e"> - <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-07T22: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> + </HashPreviousStep> + <vif:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-273285e977014470902e" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>10680</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <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="Components_Conventional_CompletedBusType"> + <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -627,33 +627,37 @@ <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> - </Vehicle> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> <Date>2021-06-08T19:22:47.3132288Z</Date> @@ -669,5 +673,5 @@ <di:DigestValue>aVAzUfhrvuQA2Q7Yb8IBOuVuRp0QVgDRI2NX5BiZZgI=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> \ No newline at end of file + </ManufacturingStep> +</VectoOutputMultistep> \ No newline at end of file diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_airdragonly.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_airdragonly.xml index 94d999194e4620ca1be529ecbd7fdcc68b1bd7f1..3533a571d3c96f5bb2903fabb31ddf41b5744be1 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_airdragonly.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_airdragonly.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="InterimStageInputType"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>TUG</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <VIN>VIN-1234</VIN> @@ -10,18 +10,18 @@ <VehicleWidth>2550</VehicleWidth> <EntranceHeight>250</EntranceHeight> <VehicleDeclarationType>interim</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> - <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> - <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> + <Data id="CabinX23h" xsi:type="v2.0: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> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_aux.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_aux.xml index 74713967028ad6245256d4ade6af36569360607d..54ee20aacdb9083a4751280b55334c86a5f575e4 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_aux.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/input_aux.xml @@ -1,31 +1,35 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="InterimStageInputType"> - <Manufacturer>IVT</Manufacturer> - <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> - <VIN>VIN-1234</VIN> - <Date>2021-06-06T22:00:00Z</Date> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> - <VehicleDeclarationType>interim</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> - <ElectricSystem> - <LEDLights> - <Interiorlights>false</Interiorlights> - <Positionlights>false</Positionlights> - <Headlights>false</Headlights> - </LEDLights> - </ElectricSystem> - <HVAC> - <SystemConfiguration>0</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 4-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> - </HVAC> - </Data> - </Auxiliaries> - </Components> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>IVT</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-06T22:00:00Z</Date> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Positionlights>false</Positionlights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF.xml index 3e73ce67f8242f68ccadbdeeb742c1a64c755b69..2570c5ed1fd450fa8cfcba3771cb6a5fc9efe9d4 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:vif="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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> <Data id="VEH-88dcf76d37a64b5eaf70" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -571,4 +571,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> \ No newline at end of file +</VectoOutputMultistep> \ No newline at end of file diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF_incl TC.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF_incl TC.xml index 5e21f4db5a69ea83fdb5759aa0b7572a71853223..cefefd28384a39a241324fb03dc268a4f5bbcafc 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF_incl TC.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/primary_heavyBus group_P31_32_Smart_ES.VIF_incl TC.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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"> +<VectoOutputMultistep xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:vif="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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-031eec78fb1746d280d9"> <Vehicle xsi:type="VehiclePIFType"> @@ -41,9 +41,9 @@ <RatedPower>220000</RatedPower> <MaxEngineTorque>1100</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>700</IdlingSpeed> @@ -579,4 +579,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/vecto_vehicle-completed_heavyBus_31b.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/vecto_vehicle-completed_heavyBus_31b.xml index f617c5c3545e266d7e7cbfae03eb933abcb5199a..14b541820f7eb020f54d36cfb5e4ed4d9f04638b 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 31b2/vecto_vehicle-completed_heavyBus_31b.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2/vecto_vehicle-completed_heavyBus_31b.xml @@ -1,6 +1,7 @@ <?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"> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -9,9 +10,9 @@ <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>10680</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>86</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -24,7 +25,14 @@ <EntranceHeight>270</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> @@ -48,7 +56,7 @@ </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -60,10 +68,14 @@ </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/airdrag.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/airdrag.xml new file mode 100644 index 0000000000000000000000000000000000000000..68b28667f25ce5cb4e58318e70a96ffcdc8f9df4 --- /dev/null +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/airdrag.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns: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> + </tns:AirDrag> +</tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_airdragonly.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_airdragonly.xml new file mode 100644 index 0000000000000000000000000000000000000000..4d13801f3ca7ae915073f4b2cd75f46b6f9a8222 --- /dev/null +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_airdragonly.xml @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>TUG</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-06T22:00:00Z</Date> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>250</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <Data id="CabinX23h" xsi:type="v2.0: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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_aux.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_aux.xml new file mode 100644 index 0000000000000000000000000000000000000000..0103dbb159b879db3c956b602010f243095fd952 --- /dev/null +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/input_aux.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>IVT</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-06T22:00:00Z</Date> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Positionlights>false</Positionlights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/primary_heavyBus group_P31_32_Smart_ES_NG-PI.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/primary_heavyBus group_P31_32_Smart_ES_NG-PI.xml new file mode 100644 index 0000000000000000000000000000000000000000..8b71858e0623c5eb69ca283f2190ce016737c132 --- /dev/null +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/primary_heavyBus group_P31_32_Smart_ES_NG-PI.xml @@ -0,0 +1,2221 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.10.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> + <Manufacturer>Generic Bus Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890_nonSmart</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>700</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <v2.10.2:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Entry gear="6" maxTorque="1800"/> + <Entry gear="1" maxTorque="2500"/> + </v2.10.2:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic primary bus 41 Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>7700</Displacement> + <IdlingSpeed>700</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>200000</RatedPower> + <MaxEngineTorque>1100</MaxEngineTorque> + <WHTCUrban>1.0600</WHTCUrban> + <WHTCRural>1.0300</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG PI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed='600.00' torque='-39.66' fuelConsumption='0.00'/> + <Entry engineSpeed='600.00' torque='0.00' fuelConsumption='580.60'/> + <Entry engineSpeed='600.00' torque='63.70' fuelConsumption='1457.17'/> + <Entry engineSpeed='600.00' torque='91.00' fuelConsumption='1838.29'/> + <Entry engineSpeed='600.00' torque='182.01' fuelConsumption='3031.03'/> + <Entry engineSpeed='600.00' torque='273.01' fuelConsumption='4233.11'/> + <Entry engineSpeed='600.00' torque='364.01' fuelConsumption='5425.95'/> + <Entry engineSpeed='600.00' torque='455.01' fuelConsumption='7261.20'/> + <Entry engineSpeed='600.00' torque='546.02' fuelConsumption='9123.12'/> + <Entry engineSpeed='800.00' torque='-48.83' fuelConsumption='0.00'/> + <Entry engineSpeed='800.00' torque='0.00' fuelConsumption='832.00'/> + <Entry engineSpeed='800.00' torque='63.70' fuelConsumption='1694.68'/> + <Entry engineSpeed='800.00' torque='91.00' fuelConsumption='2154.71'/> + <Entry engineSpeed='800.00' torque='182.01' fuelConsumption='3646.28'/> + <Entry engineSpeed='800.00' torque='273.01' fuelConsumption='5158.01'/> + <Entry engineSpeed='800.00' torque='364.01' fuelConsumption='6675.35'/> + <Entry engineSpeed='800.00' torque='455.01' fuelConsumption='8655.27'/> + <Entry engineSpeed='800.00' torque='546.02' fuelConsumption='10602.39'/> + <Entry engineSpeed='800.00' torque='637.02' fuelConsumption='12534.67'/> + <Entry engineSpeed='800.00' torque='728.02' fuelConsumption='14376.07'/> + <Entry engineSpeed='800.00' torque='760.78' fuelConsumption='15042.65'/> + <Entry engineSpeed='1000.00' torque='-56.44' fuelConsumption='0.00'/> + <Entry engineSpeed='1000.00' torque='0.00' fuelConsumption='1083.40'/> + <Entry engineSpeed='1000.00' torque='63.70' fuelConsumption='1932.20'/> + <Entry engineSpeed='1000.00' torque='91.00' fuelConsumption='2471.14'/> + <Entry engineSpeed='1000.00' torque='182.01' fuelConsumption='4261.53'/> + <Entry engineSpeed='1000.00' torque='273.01' fuelConsumption='6082.91'/> + <Entry engineSpeed='1000.00' torque='364.01' fuelConsumption='7924.76'/> + <Entry engineSpeed='1000.00' torque='455.01' fuelConsumption='10049.34'/> + <Entry engineSpeed='1000.00' torque='546.02' fuelConsumption='12081.67'/> + <Entry engineSpeed='1000.00' torque='637.02' fuelConsumption='14085.16'/> + <Entry engineSpeed='1000.00' torque='728.02' fuelConsumption='16091.69'/> + <Entry engineSpeed='1000.00' torque='819.02' fuelConsumption='18118.90'/> + <Entry engineSpeed='1000.00' torque='910.03' fuelConsumption='20145.67'/> + <Entry engineSpeed='1000.00' torque='973.73' fuelConsumption='21556.46'/> + <Entry engineSpeed='1200.00' torque='-67.29' fuelConsumption='0.00'/> + <Entry engineSpeed='1200.00' torque='0.00' fuelConsumption='1334.80'/> + <Entry engineSpeed='1200.00' torque='63.70' fuelConsumption='2169.71'/> + <Entry engineSpeed='1200.00' torque='91.00' fuelConsumption='2787.56'/> + <Entry engineSpeed='1200.00' torque='182.01' fuelConsumption='4876.78'/> + <Entry engineSpeed='1200.00' torque='273.01' fuelConsumption='7007.81'/> + <Entry engineSpeed='1200.00' torque='364.01' fuelConsumption='9174.17'/> + <Entry engineSpeed='1200.00' torque='455.01' fuelConsumption='11443.41'/> + <Entry engineSpeed='1200.00' torque='546.02' fuelConsumption='13560.95'/> + <Entry engineSpeed='1200.00' torque='637.02' fuelConsumption='15635.64'/> + <Entry engineSpeed='1200.00' torque='728.02' fuelConsumption='17807.32'/> + <Entry engineSpeed='1200.00' torque='819.02' fuelConsumption='20010.10'/> + <Entry engineSpeed='1200.00' torque='910.03' fuelConsumption='22214.23'/> + <Entry engineSpeed='1200.00' torque='1001.03' fuelConsumption='24405.18'/> + <Entry engineSpeed='1200.00' torque='1092.03' fuelConsumption='26937.53'/> + <Entry engineSpeed='1400.00' torque='-77.58' fuelConsumption='0.00'/> + <Entry engineSpeed='1400.00' torque='0.00' fuelConsumption='1768.39'/> + <Entry engineSpeed='1400.00' torque='63.70' fuelConsumption='2609.47'/> + <Entry engineSpeed='1400.00' torque='91.00' fuelConsumption='3331.51'/> + <Entry engineSpeed='1400.00' torque='182.01' fuelConsumption='5738.32'/> + <Entry engineSpeed='1400.00' torque='273.01' fuelConsumption='8220.47'/> + <Entry engineSpeed='1400.00' torque='364.01' fuelConsumption='10725.58'/> + <Entry engineSpeed='1400.00' torque='455.01' fuelConsumption='13167.60'/> + <Entry engineSpeed='1400.00' torque='546.02' fuelConsumption='15637.27'/> + <Entry engineSpeed='1400.00' torque='637.02' fuelConsumption='18217.82'/> + <Entry engineSpeed='1400.00' torque='728.02' fuelConsumption='20778.63'/> + <Entry engineSpeed='1400.00' torque='819.02' fuelConsumption='23209.12'/> + <Entry engineSpeed='1400.00' torque='910.03' fuelConsumption='25601.87'/> + <Entry engineSpeed='1400.00' torque='1001.03' fuelConsumption='28049.44'/> + <Entry engineSpeed='1400.00' torque='1092.03' fuelConsumption='30591.88'/> + <Entry engineSpeed='1600.00' torque='-87.88' fuelConsumption='0.00'/> + <Entry engineSpeed='1600.00' torque='0.00' fuelConsumption='2175.58'/> + <Entry engineSpeed='1600.00' torque='63.70' fuelConsumption='3071.70'/> + <Entry engineSpeed='1600.00' torque='91.00' fuelConsumption='3886.46'/> + <Entry engineSpeed='1600.00' torque='182.01' fuelConsumption='6602.31'/> + <Entry engineSpeed='1600.00' torque='273.01' fuelConsumption='9459.95'/> + <Entry engineSpeed='1600.00' torque='364.01' fuelConsumption='12314.99'/> + <Entry engineSpeed='1600.00' torque='455.01' fuelConsumption='15203.38'/> + <Entry engineSpeed='1600.00' torque='546.02' fuelConsumption='18046.03'/> + <Entry engineSpeed='1600.00' torque='637.02' fuelConsumption='20894.65'/> + <Entry engineSpeed='1600.00' torque='728.02' fuelConsumption='23760.26'/> + <Entry engineSpeed='1600.00' torque='819.02' fuelConsumption='26535.17'/> + <Entry engineSpeed='1600.00' torque='910.03' fuelConsumption='29166.53'/> + <Entry engineSpeed='1600.00' torque='1001.03' fuelConsumption='32054.59'/> + <Entry engineSpeed='1600.00' torque='1092.03' fuelConsumption='34958.85'/> + <Entry engineSpeed='1800.00' torque='-94.11' fuelConsumption='0.00'/> + <Entry engineSpeed='1800.00' torque='0.00' fuelConsumption='2630.39'/> + <Entry engineSpeed='1800.00' torque='63.70' fuelConsumption='3626.48'/> + <Entry engineSpeed='1800.00' torque='91.00' fuelConsumption='4518.67'/> + <Entry engineSpeed='1800.00' torque='182.01' fuelConsumption='7492.63'/> + <Entry engineSpeed='1800.00' torque='273.01' fuelConsumption='10723.22'/> + <Entry engineSpeed='1800.00' torque='364.01' fuelConsumption='13929.84'/> + <Entry engineSpeed='1800.00' torque='455.01' fuelConsumption='17153.22'/> + <Entry engineSpeed='1800.00' torque='546.02' fuelConsumption='20263.97'/> + <Entry engineSpeed='1800.00' torque='637.02' fuelConsumption='23432.40'/> + <Entry engineSpeed='1800.00' torque='728.02' fuelConsumption='26745.26'/> + <Entry engineSpeed='1800.00' torque='819.02' fuelConsumption='29986.85'/> + <Entry engineSpeed='1800.00' torque='910.03' fuelConsumption='33277.81'/> + <Entry engineSpeed='1800.00' torque='1001.03' fuelConsumption='36723.98'/> + <Entry engineSpeed='1800.00' torque='1022.87' fuelConsumption='37550.81'/> + <Entry engineSpeed='2000.00' torque='-100.76' fuelConsumption='0.00'/> + <Entry engineSpeed='2000.00' torque='0.00' fuelConsumption='3181.54'/> + <Entry engineSpeed='2000.00' torque='63.70' fuelConsumption='4374.30'/> + <Entry engineSpeed='2000.00' torque='91.00' fuelConsumption='5327.75'/> + <Entry engineSpeed='2000.00' torque='182.01' fuelConsumption='8505.93'/> + <Entry engineSpeed='2000.00' torque='273.01' fuelConsumption='12119.90'/> + <Entry engineSpeed='2000.00' torque='364.01' fuelConsumption='15645.31'/> + <Entry engineSpeed='2000.00' torque='455.01' fuelConsumption='19238.95'/> + <Entry engineSpeed='2000.00' torque='546.02' fuelConsumption='22808.60'/> + <Entry engineSpeed='2000.00' torque='637.02' fuelConsumption='26330.44'/> + <Entry engineSpeed='2000.00' torque='728.02' fuelConsumption='30061.06'/> + <Entry engineSpeed='2000.00' torque='819.02' fuelConsumption='33840.66'/> + <Entry engineSpeed='2000.00' torque='910.03' fuelConsumption='37508.22'/> + <Entry engineSpeed='2000.00' torque='944.61' fuelConsumption='38855.94'/> + <Entry engineSpeed='2200.00' torque='-113.36' fuelConsumption='0.00'/> + <Entry engineSpeed='2200.00' torque='0.00' fuelConsumption='3865.04'/> + <Entry engineSpeed='2200.00' torque='63.70' fuelConsumption='5036.10'/> + <Entry engineSpeed='2200.00' torque='91.00' fuelConsumption='6086.05'/> + <Entry engineSpeed='2200.00' torque='182.01' fuelConsumption='9585.86'/> + <Entry engineSpeed='2200.00' torque='273.01' fuelConsumption='13516.63'/> + <Entry engineSpeed='2200.00' torque='364.01' fuelConsumption='17425.54'/> + <Entry engineSpeed='2200.00' torque='455.01' fuelConsumption='21286.40'/> + <Entry engineSpeed='2200.00' torque='546.02' fuelConsumption='25325.51'/> + <Entry engineSpeed='2200.00' torque='637.02' fuelConsumption='29576.52'/> + <Entry engineSpeed='2200.00' torque='728.02' fuelConsumption='33783.46'/> + <Entry engineSpeed='2200.00' torque='819.02' fuelConsumption='37868.27'/> + <Entry engineSpeed='2200.00' torque='869.07' fuelConsumption='40086.82'/> + <Entry engineSpeed='2400.00' torque='-122.60' fuelConsumption='0.00'/> + <Entry engineSpeed='2400.00' torque='0.00' fuelConsumption='4500.17'/> + <Entry engineSpeed='2400.00' torque='63.70' fuelConsumption='5673.27'/> + <Entry engineSpeed='2400.00' torque='91.00' fuelConsumption='6848.54'/> + <Entry engineSpeed='2400.00' torque='182.01' fuelConsumption='10766.15'/> + <Entry engineSpeed='2400.00' torque='273.01' fuelConsumption='14963.98'/> + <Entry engineSpeed='2400.00' torque='364.01' fuelConsumption='19391.00'/> + <Entry engineSpeed='2400.00' torque='455.01' fuelConsumption='23957.03'/> + <Entry engineSpeed='2400.00' torque='546.02' fuelConsumption='28516.04'/> + <Entry engineSpeed='2400.00' torque='637.02' fuelConsumption='33412.68'/> + <Entry engineSpeed='2400.00' torque='728.02' fuelConsumption='38318.27'/> + <Entry engineSpeed='2400.00' torque='741.99' fuelConsumption='38989.24'/> + <Entry engineSpeed='2500.00' torque='-126.66' fuelConsumption='0.00'/> + <Entry engineSpeed='2500.00' torque='0.00' fuelConsumption='4857.60'/> + <Entry engineSpeed='2500.00' torque='63.70' fuelConsumption='5721.11'/> + <Entry engineSpeed='2500.00' torque='91.00' fuelConsumption='7036.25'/> + <Entry engineSpeed='2500.00' torque='182.01' fuelConsumption='11272.41'/> + <Entry engineSpeed='2500.00' torque='273.01' fuelConsumption='15682.12'/> + <Entry engineSpeed='2500.00' torque='364.01' fuelConsumption='20326.33'/> + <Entry engineSpeed='2500.00' torque='455.01' fuelConsumption='25430.26'/> + <Entry engineSpeed='2500.00' torque='546.02' fuelConsumption='30212.78'/> + <Entry engineSpeed='2500.00' torque='646.12' fuelConsumption='35844.80'/> + <Entry engineSpeed='2600.00' torque='-132.07' fuelConsumption='0.00'/> + <Entry engineSpeed='2600.00' torque='0.00' fuelConsumption='5036.31'/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed='600.00' maxTorque='546.02' dragTorque='-39.66'/> + <Entry engineSpeed='800.00' maxTorque='760.78' dragTorque='-48.83'/> + <Entry engineSpeed='1000.00' maxTorque='973.29' dragTorque='-56.44'/> + <Entry engineSpeed='1200.00' maxTorque='1092.03' dragTorque='-67.29'/> + <Entry engineSpeed='1400.00' maxTorque='1092.03' dragTorque='-77.58'/> + <Entry engineSpeed='1600.00' maxTorque='1092.03' dragTorque='-87.88'/> + <Entry engineSpeed='1800.00' maxTorque='1022.52' dragTorque='-94.11'/> + <Entry engineSpeed='2000.00' maxTorque='944.17' dragTorque='-100.76'/> + <Entry engineSpeed='2200.00' maxTorque='868.12' dragTorque='-113.36'/> + <Entry engineSpeed='2400.00' maxTorque='741.99' dragTorque='-122.60'/> + <Entry engineSpeed='2500.00' maxTorque='647.29' dragTorque='-126.66'/> + <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <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>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>AT 6 Gear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>3.364</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='1300.00' inputTorque='2610.00' torqueLoss='66.00'/> + <Entry inputSpeed='1300.00' inputTorque='2842.00' torqueLoss='71.00'/> + <Entry inputSpeed='1500.00' inputTorque='-812.00' torqueLoss='46.00'/> + <Entry inputSpeed='1500.00' inputTorque='-348.00' torqueLoss='37.00'/> + <Entry inputSpeed='1500.00' inputTorque='0.00' torqueLoss='13.00'/> + <Entry inputSpeed='1500.00' inputTorque='58.00' torqueLoss='16.00'/> + <Entry inputSpeed='1500.00' inputTorque='290.00' torqueLoss='21.00'/> + <Entry inputSpeed='1500.00' inputTorque='522.00' torqueLoss='26.00'/> + <Entry inputSpeed='1500.00' inputTorque='754.00' torqueLoss='30.00'/> + <Entry inputSpeed='1500.00' inputTorque='986.00' torqueLoss='35.00'/> + <Entry inputSpeed='1500.00' inputTorque='1218.00' torqueLoss='39.00'/> + <Entry inputSpeed='1500.00' inputTorque='1450.00' torqueLoss='44.00'/> + <Entry inputSpeed='1500.00' inputTorque='1682.00' torqueLoss='49.00'/> + <Entry inputSpeed='1500.00' inputTorque='1914.00' torqueLoss='53.00'/> + <Entry inputSpeed='1500.00' inputTorque='2146.00' torqueLoss='58.00'/> + <Entry inputSpeed='1500.00' inputTorque='2378.00' torqueLoss='63.00'/> + <Entry inputSpeed='1500.00' inputTorque='2610.00' torqueLoss='67.00'/> + <Entry inputSpeed='1500.00' inputTorque='2842.00' torqueLoss='72.00'/> + <Entry inputSpeed='1700.00' inputTorque='-812.00' torqueLoss='49.00'/> + <Entry inputSpeed='1700.00' inputTorque='-348.00' torqueLoss='39.00'/> + <Entry inputSpeed='1700.00' inputTorque='0.00' torqueLoss='14.00'/> + <Entry inputSpeed='1700.00' inputTorque='58.00' torqueLoss='17.00'/> + <Entry inputSpeed='1700.00' inputTorque='290.00' torqueLoss='22.00'/> + <Entry inputSpeed='1700.00' inputTorque='522.00' torqueLoss='27.00'/> + <Entry inputSpeed='1700.00' inputTorque='754.00' torqueLoss='31.00'/> + <Entry inputSpeed='1700.00' inputTorque='986.00' torqueLoss='36.00'/> + <Entry inputSpeed='1700.00' inputTorque='1218.00' torqueLoss='41.00'/> + <Entry inputSpeed='1700.00' inputTorque='1450.00' torqueLoss='45.00'/> + <Entry inputSpeed='1700.00' inputTorque='1682.00' torqueLoss='50.00'/> + <Entry inputSpeed='1700.00' inputTorque='1914.00' torqueLoss='55.00'/> + <Entry inputSpeed='1700.00' inputTorque='2146.00' torqueLoss='59.00'/> + <Entry inputSpeed='1700.00' inputTorque='2378.00' torqueLoss='64.00'/> + <Entry inputSpeed='1700.00' inputTorque='2610.00' torqueLoss='68.00'/> + <Entry inputSpeed='1700.00' inputTorque='2842.00' torqueLoss='73.00'/> + <Entry inputSpeed='1900.00' inputTorque='-812.00' torqueLoss='51.00'/> + <Entry inputSpeed='1900.00' inputTorque='-348.00' torqueLoss='42.00'/> + <Entry inputSpeed='1900.00' inputTorque='0.00' torqueLoss='15.00'/> + <Entry inputSpeed='1900.00' inputTorque='58.00' torqueLoss='19.00'/> + <Entry inputSpeed='1900.00' inputTorque='290.00' torqueLoss='23.00'/> + <Entry inputSpeed='1900.00' inputTorque='522.00' torqueLoss='28.00'/> + <Entry inputSpeed='1900.00' inputTorque='754.00' torqueLoss='32.00'/> + <Entry inputSpeed='1900.00' inputTorque='986.00' torqueLoss='37.00'/> + <Entry inputSpeed='1900.00' inputTorque='1218.00' torqueLoss='42.00'/> + <Entry inputSpeed='1900.00' inputTorque='1450.00' torqueLoss='46.00'/> + <Entry inputSpeed='1900.00' inputTorque='1682.00' torqueLoss='51.00'/> + <Entry inputSpeed='1900.00' inputTorque='1914.00' torqueLoss='56.00'/> + <Entry inputSpeed='1900.00' inputTorque='2146.00' torqueLoss='60.00'/> + <Entry inputSpeed='1900.00' inputTorque='2378.00' torqueLoss='65.00'/> + <Entry inputSpeed='1900.00' inputTorque='2610.00' torqueLoss='70.00'/> + <Entry inputSpeed='1900.00' inputTorque='2842.00' torqueLoss='74.00'/> + <Entry inputSpeed='2100.00' inputTorque='-812.00' torqueLoss='53.00'/> + <Entry inputSpeed='2100.00' inputTorque='-348.00' torqueLoss='44.00'/> + <Entry inputSpeed='2100.00' inputTorque='0.00' torqueLoss='16.00'/> + <Entry inputSpeed='2100.00' inputTorque='58.00' torqueLoss='20.00'/> + <Entry inputSpeed='2100.00' inputTorque='290.00' torqueLoss='24.00'/> + <Entry inputSpeed='2100.00' inputTorque='522.00' torqueLoss='29.00'/> + <Entry inputSpeed='2100.00' inputTorque='754.00' torqueLoss='34.00'/> + <Entry inputSpeed='2100.00' inputTorque='986.00' torqueLoss='38.00'/> + <Entry inputSpeed='2100.00' inputTorque='1218.00' torqueLoss='43.00'/> + <Entry inputSpeed='2100.00' inputTorque='1450.00' torqueLoss='48.00'/> + <Entry inputSpeed='2100.00' inputTorque='1682.00' torqueLoss='52.00'/> + <Entry inputSpeed='2100.00' inputTorque='1914.00' torqueLoss='57.00'/> + <Entry inputSpeed='2100.00' inputTorque='2146.00' torqueLoss='61.00'/> + <Entry inputSpeed='2100.00' inputTorque='2378.00' torqueLoss='66.00'/> + <Entry inputSpeed='2100.00' inputTorque='2610.00' torqueLoss='71.00'/> + <Entry inputSpeed='2100.00' inputTorque='2842.00' torqueLoss='75.00'/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.909</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.421</Ratio> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='50.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='52.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='54.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='57.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='60.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='68.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='59.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='61.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='63.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='66.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='69.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='77.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='68.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='70.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='75.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='78.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='86.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='91.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='80.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='84.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='87.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='90.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='98.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='103.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='92.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='96.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='99.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='102.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='110.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='115.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='107.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='109.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='111.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='117.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='125.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='130.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='122.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='124.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='126.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='129.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='132.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='140.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='145.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='50.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='52.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='54.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='57.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='60.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='68.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='59.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='61.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='63.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='66.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='69.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='77.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='68.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='70.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='75.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='78.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='86.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='91.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='80.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='84.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='87.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='90.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='98.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='103.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='92.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='96.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='99.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='102.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='110.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='115.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='107.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='109.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='111.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='117.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='125.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='130.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='122.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='124.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='126.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='129.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='132.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='140.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='145.00'/> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.720</Ratio> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.615</Ratio> + <MaxSpeed>2500</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='0.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='0.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='0.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='0.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='0.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='0.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='0.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='0.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='0.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='2500.00' torqueLoss='220.00'/> + <Entry inputSpeed='600.00' inputTorque='0.00' torqueLoss='48.00'/> + <Entry inputSpeed='600.00' inputTorque='-200.00' torqueLoss='56.00'/> + <Entry inputSpeed='600.00' inputTorque='-400.00' torqueLoss='64.00'/> + <Entry inputSpeed='600.00' inputTorque='-600.00' torqueLoss='72.00'/> + <Entry inputSpeed='600.00' inputTorque='-900.00' torqueLoss='84.00'/> + <Entry inputSpeed='600.00' inputTorque='-1200.00' torqueLoss='96.00'/> + <Entry inputSpeed='600.00' inputTorque='-1600.00' torqueLoss='112.00'/> + <Entry inputSpeed='600.00' inputTorque='-2000.00' torqueLoss='128.00'/> + <Entry inputSpeed='600.00' inputTorque='-2500.00' torqueLoss='148.00'/> + <Entry inputSpeed='900.00' inputTorque='0.00' torqueLoss='57.00'/> + <Entry inputSpeed='900.00' inputTorque='-200.00' torqueLoss='65.00'/> + <Entry inputSpeed='900.00' inputTorque='-400.00' torqueLoss='73.00'/> + <Entry inputSpeed='900.00' inputTorque='-600.00' torqueLoss='81.00'/> + <Entry inputSpeed='900.00' inputTorque='-900.00' torqueLoss='93.00'/> + <Entry inputSpeed='900.00' inputTorque='-1200.00' torqueLoss='105.00'/> + <Entry inputSpeed='900.00' inputTorque='-1600.00' torqueLoss='121.00'/> + <Entry inputSpeed='900.00' inputTorque='-2000.00' torqueLoss='137.00'/> + <Entry inputSpeed='900.00' inputTorque='-2500.00' torqueLoss='157.00'/> + <Entry inputSpeed='1200.00' inputTorque='0.00' torqueLoss='66.00'/> + <Entry inputSpeed='1200.00' inputTorque='-200.00' torqueLoss='74.00'/> + <Entry inputSpeed='1200.00' inputTorque='-400.00' torqueLoss='82.00'/> + <Entry inputSpeed='1200.00' inputTorque='-600.00' torqueLoss='90.00'/> + <Entry inputSpeed='1200.00' inputTorque='-900.00' torqueLoss='102.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1200.00' torqueLoss='114.00'/> + <Entry inputSpeed='1200.00' inputTorque='-1600.00' torqueLoss='130.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2000.00' torqueLoss='146.00'/> + <Entry inputSpeed='1200.00' inputTorque='-2500.00' torqueLoss='166.00'/> + <Entry inputSpeed='1600.00' inputTorque='0.00' torqueLoss='78.00'/> + <Entry inputSpeed='1600.00' inputTorque='-200.00' torqueLoss='86.00'/> + <Entry inputSpeed='1600.00' inputTorque='-400.00' torqueLoss='94.00'/> + <Entry inputSpeed='1600.00' inputTorque='-600.00' torqueLoss='102.00'/> + <Entry inputSpeed='1600.00' inputTorque='-900.00' torqueLoss='114.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1200.00' torqueLoss='126.00'/> + <Entry inputSpeed='1600.00' inputTorque='-1600.00' torqueLoss='142.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2000.00' torqueLoss='158.00'/> + <Entry inputSpeed='1600.00' inputTorque='-2500.00' torqueLoss='178.00'/> + <Entry inputSpeed='2000.00' inputTorque='0.00' torqueLoss='90.00'/> + <Entry inputSpeed='2000.00' inputTorque='-200.00' torqueLoss='98.00'/> + <Entry inputSpeed='2000.00' inputTorque='-400.00' torqueLoss='106.00'/> + <Entry inputSpeed='2000.00' inputTorque='-600.00' torqueLoss='114.00'/> + <Entry inputSpeed='2000.00' inputTorque='-900.00' torqueLoss='126.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1200.00' torqueLoss='138.00'/> + <Entry inputSpeed='2000.00' inputTorque='-1600.00' torqueLoss='154.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2000.00' torqueLoss='170.00'/> + <Entry inputSpeed='2000.00' inputTorque='-2500.00' torqueLoss='190.00'/> + <Entry inputSpeed='2500.00' inputTorque='0.00' torqueLoss='105.00'/> + <Entry inputSpeed='2500.00' inputTorque='-200.00' torqueLoss='113.00'/> + <Entry inputSpeed='2500.00' inputTorque='-400.00' torqueLoss='121.00'/> + <Entry inputSpeed='2500.00' inputTorque='-600.00' torqueLoss='129.00'/> + <Entry inputSpeed='2500.00' inputTorque='-900.00' torqueLoss='141.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1200.00' torqueLoss='153.00'/> + <Entry inputSpeed='2500.00' inputTorque='-1600.00' torqueLoss='169.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2000.00' torqueLoss='185.00'/> + <Entry inputSpeed='2500.00' inputTorque='-2500.00' torqueLoss='205.00'/> + <Entry inputSpeed='3000.00' inputTorque='0.00' torqueLoss='120.00'/> + <Entry inputSpeed='3000.00' inputTorque='-200.00' torqueLoss='128.00'/> + <Entry inputSpeed='3000.00' inputTorque='-400.00' torqueLoss='136.00'/> + <Entry inputSpeed='3000.00' inputTorque='-600.00' torqueLoss='144.00'/> + <Entry inputSpeed='3000.00' inputTorque='-900.00' torqueLoss='156.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1200.00' torqueLoss='168.00'/> + <Entry inputSpeed='3000.00' inputTorque='-1600.00' torqueLoss='184.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2000.00' torqueLoss='200.00'/> + <Entry inputSpeed='3000.00' inputTorque='-2500.00' torqueLoss='220.00'/> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio='0.0000' torqueRatio='1.80' inputTorqueRef='367.68'/> + <Entry speedRatio='0.1000' torqueRatio='1.71' inputTorqueRef='355.43'/> + <Entry speedRatio='0.2000' torqueRatio='1.61' inputTorqueRef='343.17'/> + <Entry speedRatio='0.3000' torqueRatio='1.52' inputTorqueRef='330.92'/> + <Entry speedRatio='0.4000' torqueRatio='1.42' inputTorqueRef='318.66'/> + <Entry speedRatio='0.5000' torqueRatio='1.33' inputTorqueRef='306.40'/> + <Entry speedRatio='0.6000' torqueRatio='1.23' inputTorqueRef='294.15'/> + <Entry speedRatio='0.6500' torqueRatio='1.19' inputTorqueRef='275.76'/> + <Entry speedRatio='0.7000' torqueRatio='1.14' inputTorqueRef='257.38'/> + <Entry speedRatio='0.7500' torqueRatio='1.09' inputTorqueRef='238.99'/> + <Entry speedRatio='0.8000' torqueRatio='1.04' inputTorqueRef='220.61'/> + <Entry speedRatio='0.8500' torqueRatio='1.00' inputTorqueRef='202.23'/> + <Entry speedRatio='0.9000' torqueRatio='0.95' inputTorqueRef='183.84'/> + <Entry speedRatio='0.9500' torqueRatio='0.95' inputTorqueRef='91.92'/> + <Entry speedRatio='1.0000' torqueRatio='0.95' inputTorqueRef='0.00'/> + <Entry speedRatio='1.1000' torqueRatio='1.00' inputTorqueRef='-40.34'/> + <Entry speedRatio='1.2200' torqueRatio='1.00' inputTorqueRef='-80.34'/> + <Entry speedRatio='1.3800' torqueRatio='1.00' inputTorqueRef='-136.11'/> + <Entry speedRatio='1.5700' torqueRatio='1.00' inputTorqueRef='-216.52'/> + <Entry speedRatio='1.8300' torqueRatio='1.00' inputTorqueRef='-335.19'/> + <Entry speedRatio='2.2000' torqueRatio='1.00' inputTorqueRef='-528.77'/> + <Entry speedRatio='2.5000' torqueRatio='1.00' inputTorqueRef='-721.00'/> + <Entry speedRatio='3.0000' torqueRatio='1.00' inputTorqueRef='-1122.00'/> + <Entry speedRatio='3.5000' torqueRatio='1.00' inputTorqueRef='-1648.00'/> + <Entry speedRatio='4.0000' torqueRatio='1.00' inputTorqueRef='-2326.00'/> + <Entry speedRatio='4.5000' torqueRatio='1.00' inputTorqueRef='-3182.00'/> + <Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/> + </Characteristics> + </Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic primary bus 41 Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="100.00" torqueLoss="10.02"/> + <Entry retarderSpeed="200.00" torqueLoss="10.08"/> + <Entry retarderSpeed="300.00" torqueLoss="10.18"/> + <Entry retarderSpeed="400.00" torqueLoss="10.32"/> + <Entry retarderSpeed="500.00" torqueLoss="10.50"/> + <Entry retarderSpeed="600.00" torqueLoss="10.72"/> + <Entry retarderSpeed="700.00" torqueLoss="10.98"/> + <Entry retarderSpeed="800.00" torqueLoss="11.28"/> + <Entry retarderSpeed="900.00" torqueLoss="11.62"/> + <Entry retarderSpeed="1000.00" torqueLoss="12.00"/> + <Entry retarderSpeed="1100.00" torqueLoss="12.42"/> + <Entry retarderSpeed="1200.00" torqueLoss="12.88"/> + <Entry retarderSpeed="1300.00" torqueLoss="13.38"/> + <Entry retarderSpeed="1400.00" torqueLoss="13.92"/> + <Entry retarderSpeed="1500.00" torqueLoss="14.50"/> + <Entry retarderSpeed="1600.00" torqueLoss="15.12"/> + <Entry retarderSpeed="1700.00" torqueLoss="15.78"/> + <Entry retarderSpeed="1800.00" torqueLoss="16.48"/> + <Entry retarderSpeed="1900.00" torqueLoss="17.22"/> + <Entry retarderSpeed="2000.00" torqueLoss="18.00"/> + <Entry retarderSpeed="2100.00" torqueLoss="18.82"/> + <Entry retarderSpeed="2200.00" torqueLoss="19.68"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> + </RetarderLossMap> + </Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic primary bus 41 AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>6.500</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed='0.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='0.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='0.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='0.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='0.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='0.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='0.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='0.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='0.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='0.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='0.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='0.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='0.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='0.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='0.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='0.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='0.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='0.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='0.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='0.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='0.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='0.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='0.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='0.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='0.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='0.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='0.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='0.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='0.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='0.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='0.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='0.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='0.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='0.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='0.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='325.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='325.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='325.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='325.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='325.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='325.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='325.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='325.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='325.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='325.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='325.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='325.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='325.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='325.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='325.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='325.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='325.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='325.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='325.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='325.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='325.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='325.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='325.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='325.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='325.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='325.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='325.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='325.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='325.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='325.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='325.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='325.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='325.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='325.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='325.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='650.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='650.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='650.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='650.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='650.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='650.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='650.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='650.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='650.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='650.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='650.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='650.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='650.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='650.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='650.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='650.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='650.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='650.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='650.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='650.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='650.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='650.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='650.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='650.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='650.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='650.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='650.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='650.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='650.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='650.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='650.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='650.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='650.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='650.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='650.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='975.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='975.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='975.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='975.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='975.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='975.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='975.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='975.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='975.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='975.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='975.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='975.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='975.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='975.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='975.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='975.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='975.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='975.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='975.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='975.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='975.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='975.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='975.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='975.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='975.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='975.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='975.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='975.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='975.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='975.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='975.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='975.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='975.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='975.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='975.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1300.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1300.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1300.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1300.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1300.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1300.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1300.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1300.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1300.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1300.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1300.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1300.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1300.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1300.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1300.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1300.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1300.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1300.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1300.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1300.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1300.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1300.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1300.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1300.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1300.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1300.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1300.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1300.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1300.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1300.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1300.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1300.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1300.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1300.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1300.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1625.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1625.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1625.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1625.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1625.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1625.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1625.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1625.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1625.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1625.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1625.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1625.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1625.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1625.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1625.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1625.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1625.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1625.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1625.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1625.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1625.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1625.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1625.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1625.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1625.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1625.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1625.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1625.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1625.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1625.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1625.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1625.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1625.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1625.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1625.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1950.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1950.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1950.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1950.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1950.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1950.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1950.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1950.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1950.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1950.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1950.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1950.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1950.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1950.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1950.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1950.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1950.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1950.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1950.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1950.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1950.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1950.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1950.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1950.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1950.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1950.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1950.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1950.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1950.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1950.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1950.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1950.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1950.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1950.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1950.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2275.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2275.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2275.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2275.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2275.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2275.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2275.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2275.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2275.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2275.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2275.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2275.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2275.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2275.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2275.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2275.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2275.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2275.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2275.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2275.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2275.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2275.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2275.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2275.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2275.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2275.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2275.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2275.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2275.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2275.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2275.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2275.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2275.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2275.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2275.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2600.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2600.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2600.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2600.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2600.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2600.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2600.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2600.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2600.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2600.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2600.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2600.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2600.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2600.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2600.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2600.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2600.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2600.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2600.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2600.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2600.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2600.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2600.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2600.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2600.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2600.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2600.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2600.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2600.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2600.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2600.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2600.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2600.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2600.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2600.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2925.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2925.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2925.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2925.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2925.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2925.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2925.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2925.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2925.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2925.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2925.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2925.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2925.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2925.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2925.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2925.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2925.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2925.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2925.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2925.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2925.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2925.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2925.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2925.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2925.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2925.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2925.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2925.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2925.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2925.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2925.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2925.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2925.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2925.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2925.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='3750.00' inputTorque='31.96' torqueLoss='31.96'/> + <Entry inputSpeed='3750.00' inputTorque='70.42' torqueLoss='31.96'/> + <Entry inputSpeed='3750.00' inputTorque='110.07' torqueLoss='33.15'/> + <Entry inputSpeed='3750.00' inputTorque='149.72' torqueLoss='34.34'/> + <Entry inputSpeed='3750.00' inputTorque='189.37' torqueLoss='35.53'/> + <Entry inputSpeed='3750.00' inputTorque='268.68' torqueLoss='37.91'/> + <Entry inputSpeed='3750.00' inputTorque='347.98' torqueLoss='40.29'/> + <Entry inputSpeed='3750.00' inputTorque='506.58' torqueLoss='45.04'/> + <Entry inputSpeed='3750.00' inputTorque='665.19' torqueLoss='49.80'/> + <Entry inputSpeed='3750.00' inputTorque='823.79' torqueLoss='54.56'/> + <Entry inputSpeed='3750.00' inputTorque='982.39' torqueLoss='59.32'/> + <Entry inputSpeed='3750.00' inputTorque='1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='3750.00' inputTorque='1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='3750.00' inputTorque='1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='3750.00' inputTorque='1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='3750.00' inputTorque='1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='3750.00' inputTorque='2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='3750.00' inputTorque='2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='3750.00' inputTorque='2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='3750.00' inputTorque='3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='3750.00' inputTorque='3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='3750.00' inputTorque='3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='3750.00' inputTorque='4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='3750.00' inputTorque='4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='3750.00' inputTorque='4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='3750.00' inputTorque='5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='3750.00' inputTorque='5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='3750.00' inputTorque='5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='3750.00' inputTorque='6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='3750.00' inputTorque='6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='3750.00' inputTorque='6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='3750.00' inputTorque='7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='3750.00' inputTorque='7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='3750.00' inputTorque='7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='3750.00' inputTorque='7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='0.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='0.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='0.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='0.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='0.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='0.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='0.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='0.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='0.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='0.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='0.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='0.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='0.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='0.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='0.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='0.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='0.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='0.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='0.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='0.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='0.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='0.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='0.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='0.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='0.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='0.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='0.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='0.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='0.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='0.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='0.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='0.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='0.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='0.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='0.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='325.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='325.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='325.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='325.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='325.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='325.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='325.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='325.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='325.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='325.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='325.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='325.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='325.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='325.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='325.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='325.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='325.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='325.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='325.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='325.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='325.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='325.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='325.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='325.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='325.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='325.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='325.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='325.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='325.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='325.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='325.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='325.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='325.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='325.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='325.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='650.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='650.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='650.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='650.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='650.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='650.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='650.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='650.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='650.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='650.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='650.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='650.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='650.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='650.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='650.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='650.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='650.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='650.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='650.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='650.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='650.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='650.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='650.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='650.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='650.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='650.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='650.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='650.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='650.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='650.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='650.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='650.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='650.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='650.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='650.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='975.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='975.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='975.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='975.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='975.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='975.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='975.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='975.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='975.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='975.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='975.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='975.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='975.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='975.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='975.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='975.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='975.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='975.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='975.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='975.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='975.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='975.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='975.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='975.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='975.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='975.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='975.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='975.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='975.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='975.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='975.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='975.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='975.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='975.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='975.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1300.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1300.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1300.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1300.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1300.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1300.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1300.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1300.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1300.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1300.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1300.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1300.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1300.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1300.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1300.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1300.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1300.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1300.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1300.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1300.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1300.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1300.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1300.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1300.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1300.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1300.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1300.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1300.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1300.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1300.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1300.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1300.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1300.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1300.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1300.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1625.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1625.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1625.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1625.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1625.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1625.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1625.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1625.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1625.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1625.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1625.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1625.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1625.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1625.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1625.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1625.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1625.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1625.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1625.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1625.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1625.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1625.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1625.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1625.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1625.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1625.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1625.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1625.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1625.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1625.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1625.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1625.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1625.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1625.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1625.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='1950.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='1950.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='1950.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='1950.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='1950.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='1950.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='1950.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='1950.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='1950.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='1950.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='1950.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='1950.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='1950.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='1950.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='1950.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='1950.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='1950.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='1950.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='1950.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='1950.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='1950.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='1950.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='1950.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='1950.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='1950.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='1950.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='1950.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='1950.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='1950.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='1950.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='1950.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='1950.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='1950.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='1950.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='1950.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2275.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2275.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2275.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2275.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2275.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2275.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2275.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2275.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2275.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2275.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2275.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2275.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2275.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2275.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2275.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2275.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2275.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2275.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2275.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2275.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2275.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2275.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2275.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2275.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2275.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2275.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2275.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2275.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2275.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2275.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2275.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2275.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2275.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2275.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2275.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2600.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2600.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2600.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2600.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2600.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2600.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2600.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2600.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2600.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2600.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2600.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2600.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2600.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2600.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2600.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2600.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2600.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2600.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2600.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2600.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2600.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2600.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2600.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2600.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2600.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2600.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2600.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2600.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2600.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2600.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2600.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2600.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2600.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2600.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2600.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='2925.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='2925.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='2925.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='2925.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='2925.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='2925.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='2925.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='2925.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='2925.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='2925.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='2925.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='2925.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='2925.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='2925.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='2925.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='2925.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='2925.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='2925.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='2925.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='2925.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='2925.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='2925.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='2925.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='2925.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='2925.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='2925.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='2925.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='2925.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='2925.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='2925.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='2925.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='2925.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='2925.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='2925.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='2925.00' inputTorque='-7960.98' torqueLoss='268.68'/> + <Entry inputSpeed='3250.00' inputTorque='-31.96' torqueLoss='31.96'/> + <Entry inputSpeed='3250.00' inputTorque='-70.42' torqueLoss='31.96'/> + <Entry inputSpeed='3250.00' inputTorque='-110.07' torqueLoss='33.15'/> + <Entry inputSpeed='3250.00' inputTorque='-149.72' torqueLoss='34.34'/> + <Entry inputSpeed='3250.00' inputTorque='-189.37' torqueLoss='35.53'/> + <Entry inputSpeed='3250.00' inputTorque='-268.68' torqueLoss='37.91'/> + <Entry inputSpeed='3250.00' inputTorque='-347.98' torqueLoss='40.29'/> + <Entry inputSpeed='3250.00' inputTorque='-506.58' torqueLoss='45.04'/> + <Entry inputSpeed='3250.00' inputTorque='-665.19' torqueLoss='49.80'/> + <Entry inputSpeed='3250.00' inputTorque='-823.79' torqueLoss='54.56'/> + <Entry inputSpeed='3250.00' inputTorque='-982.39' torqueLoss='59.32'/> + <Entry inputSpeed='3250.00' inputTorque='-1141.00' torqueLoss='64.08'/> + <Entry inputSpeed='3250.00' inputTorque='-1299.60' torqueLoss='68.83'/> + <Entry inputSpeed='3250.00' inputTorque='-1458.21' torqueLoss='73.59'/> + <Entry inputSpeed='3250.00' inputTorque='-1616.81' torqueLoss='78.35'/> + <Entry inputSpeed='3250.00' inputTorque='-1934.02' torqueLoss='87.87'/> + <Entry inputSpeed='3250.00' inputTorque='-2251.23' torqueLoss='97.38'/> + <Entry inputSpeed='3250.00' inputTorque='-2568.44' torqueLoss='106.90'/> + <Entry inputSpeed='3250.00' inputTorque='-2885.65' torqueLoss='116.42'/> + <Entry inputSpeed='3250.00' inputTorque='-3202.85' torqueLoss='125.93'/> + <Entry inputSpeed='3250.00' inputTorque='-3520.06' torqueLoss='135.45'/> + <Entry inputSpeed='3250.00' inputTorque='-3837.27' torqueLoss='144.96'/> + <Entry inputSpeed='3250.00' inputTorque='-4154.48' torqueLoss='154.48'/> + <Entry inputSpeed='3250.00' inputTorque='-4471.69' torqueLoss='164.00'/> + <Entry inputSpeed='3250.00' inputTorque='-4788.90' torqueLoss='173.51'/> + <Entry inputSpeed='3250.00' inputTorque='-5106.11' torqueLoss='183.03'/> + <Entry inputSpeed='3250.00' inputTorque='-5423.31' torqueLoss='192.55'/> + <Entry inputSpeed='3250.00' inputTorque='-5740.52' torqueLoss='202.06'/> + <Entry inputSpeed='3250.00' inputTorque='-6057.73' torqueLoss='211.58'/> + <Entry inputSpeed='3250.00' inputTorque='-6374.94' torqueLoss='221.09'/> + <Entry inputSpeed='3250.00' inputTorque='-6692.15' torqueLoss='230.61'/> + <Entry inputSpeed='3250.00' inputTorque='-7009.36' torqueLoss='240.13'/> + <Entry inputSpeed='3250.00' inputTorque='-7326.57' torqueLoss='249.64'/> + <Entry inputSpeed='3250.00' inputTorque='-7643.77' torqueLoss='259.16'/> + <Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/> + </TorqueLossMap> + </Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>smart</AlternatorTechnology> + <SmartAlternator> + <RatedCurrent>310</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <Battery> + <BatteryTechnology>li-ion battery - high power</BatteryTechnology> + <RatedCapacity>1</RatedCapacity> + <NominalVoltage>48</NominalVoltage> + </Battery> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/Vecto3GUI2020Test/TestData/vecto_vehicle-completed_heavyBus_31b.xml b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/vecto_vehicle-completed_heavyBus_31b.xml similarity index 66% rename from Vecto3GUI2020Test/TestData/vecto_vehicle-completed_heavyBus_31b.xml rename to Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/vecto_vehicle-completed_heavyBus_31b.xml index f617c5c3545e266d7e7cbfae03eb933abcb5199a..ed6fbe549d75d1af3c0d6c3664d9f5fa765ee070 100644 --- a/Vecto3GUI2020Test/TestData/vecto_vehicle-completed_heavyBus_31b.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 31b2_NG-PI/vecto_vehicle-completed_heavyBus_31b.xml @@ -1,6 +1,6 @@ <?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"> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" 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.10.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -9,9 +9,9 @@ <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>10680</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>86</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -24,7 +24,14 @@ <EntranceHeight>270</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> @@ -48,7 +55,7 @@ </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -60,10 +67,14 @@ </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 34f/completed_heavyBus_34f.VIF_Report_2.xml b/Generic Vehicles/Declaration Mode/CompletedBus 34f/completed_heavyBus_34f.VIF_Report_2.xml index d97ebe414e74f65662ce38c744971464a45fc969..a6b29451614c66db5b4cd585c7456bbff6734e73 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 34f/completed_heavyBus_34f.VIF_Report_2.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 34f/completed_heavyBus_34f.VIF_Report_2.xml @@ -1,5 +1,5 @@ -<?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 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistep 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <vif0.1:PrimaryVehicle> <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-7f30aafa027a41a1864b"> <vif0.1:Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +42,9 @@ <vif0.1:RatedPower>325032</vif0.1:RatedPower> <vif0.1:MaxEngineTorque>2134</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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </vif0.1:WHRType> <vif0.1:Mode> <vif0.1:IdlingSpeed>600</vif0.1:IdlingSpeed> @@ -602,9 +602,9 @@ </di:Reference> </vif0.1:Signature> </vif0.1:PrimaryVehicle> - <vif0.1:ManufacturingStage stageCount="2"> - <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-607e449d2b0e45228b69"> - <vif0.1:HashPreviousStage> + <vif0.1:ManufacturingStep stepCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStepDataType" id="MST-607e449d2b0e45228b69"> + <vif0.1:HashPreviousStep> <di:Reference URI="#PIF-7f30aafa027a41a1864b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -613,55 +613,59 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>a3ai89pd92w4O1za7mc+ut712QqNJqAfX0FeeZdfrFk=</di:DigestValue> </di:Reference> - </vif0.1:HashPreviousStage> - <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-684dbf252718426b9fde"> - <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-07T22:00:00Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:CorrectedActualMass>19400</v2.8:CorrectedActualMass> - <v2.8:TechnicalPermissibleMaximumLadenMass>25000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:ClassBus>II+III</v2.8:ClassBus> - <v2.8:NumberPassengerSeatsLowerDeck>16</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>0</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>56</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>0</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>4000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>13890</v2.8:VehicleLength> - <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> - <v2.8:EntranceHeight>300</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: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>30000</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>true</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>true</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> + </vif0.1:HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-684dbf252718426b9fde" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>19400</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>16</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>56</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>4000</HeightIntegratedBody> + <VehicleLength>13890</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>300</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> </vif0.1:Vehicle> <vif0.1:ApplicationInformation> <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> @@ -678,5 +682,5 @@ <di:DigestValue>D1pKqglxP9ST/vCUSHkr8y4L7miQhPPPywLTCCOIPZk=</di:DigestValue> </di:Reference> </vif0.1:Signature> - </vif0.1:ManufacturingStage> -</vif0.1:VectoOutputMultistage> \ No newline at end of file + </vif0.1:ManufacturingStep> +</vif0.1:VectoOutputMultistep> \ No newline at end of file diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 34f/primary_heavyBus group_P33_34_SmartPS.VIF.xml b/Generic Vehicles/Declaration Mode/CompletedBus 34f/primary_heavyBus group_P33_34_SmartPS.VIF.xml index 0254cb35dd72f2b937656e003bb1bed4eb405ee5..29bd41e9cc67966e152970c09d1d1b44dbd35617 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 34f/primary_heavyBus group_P33_34_SmartPS.VIF.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 34f/primary_heavyBus group_P33_34_SmartPS.VIF.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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: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 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-7f30aafa027a41a1864b"> <Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +42,9 @@ <RatedPower>325032</RatedPower> <MaxEngineTorque>2134</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>600</IdlingSpeed> @@ -602,4 +602,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 34f/vecto_vehicle-completed_heavyBus_34f.xml b/Generic Vehicles/Declaration Mode/CompletedBus 34f/vecto_vehicle-completed_heavyBus_34f.xml index e44502a740c47d7f4ebb9b93a76b15b10af2553d..d6b9ca9aff53adffdad68757d8095409b3479607 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 34f/vecto_vehicle-completed_heavyBus_34f.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 34f/vecto_vehicle-completed_heavyBus_34f.xml @@ -1,6 +1,6 @@ <?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"> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -9,9 +9,9 @@ <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>19400</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>16</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>56</NumberPassengerSeatsUpperDeck> @@ -24,9 +24,16 @@ <EntranceHeight>300</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -36,7 +43,7 @@ <TransferredCdxA>5.20</TransferredCdxA> <DeclaredCdxA>5.20</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -45,10 +52,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -60,10 +67,14 @@ </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 39a/completed_heavyBus_39a.VIF_Report_2.xml b/Generic Vehicles/Declaration Mode/CompletedBus 39a/completed_heavyBus_39a.VIF_Report_2.xml index b9fbad0730b636deda824d49ba8b646c9837b5cd..0c999e520b066e766f37495380ea4253bf022142 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 39a/completed_heavyBus_39a.VIF_Report_2.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 39a/completed_heavyBus_39a.VIF_Report_2.xml @@ -1,5 +1,6 @@ -<?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"> +<?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: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:VectoOutputMultistep 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/VectoOutputMultistep.0.1.xsd"> <vif0.1:PrimaryVehicle> <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-10652bf49ae0499f8689"> <vif0.1:Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +43,9 @@ <vif0.1:RatedPower>260</vif0.1:RatedPower> <vif0.1:MaxEngineTorque>2400</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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </vif0.1:WHRType> <vif0.1:Mode> <vif0.1:IdlingSpeed>600</vif0.1:IdlingSpeed> @@ -576,9 +577,9 @@ </di:Reference> </vif0.1:Signature> </vif0.1:PrimaryVehicle> - <vif0.1:ManufacturingStage stageCount="2"> - <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-9d0c3a409fce4a89a6ce"> - <vif0.1:HashPreviousStage> + <vif0.1:ManufacturingStep stepCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStepDataType" id="MST-9d0c3a409fce4a89a6ce"> + <vif0.1:HashPreviousStep> <di:Reference URI="#PIF-10652bf49ae0499f8689"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -587,31 +588,31 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>kNMmLf/SQo7//Wr3wmU1/x7c3q7VbmBEILJi39cdrz4=</di:DigestValue> </di:Reference> - </vif0.1:HashPreviousStage> - <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-f34a4a8615eb4037a7b7"> - <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-07T22:00:00Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:CorrectedActualMass>19000</v2.8:CorrectedActualMass> - <v2.8:TechnicalPermissibleMaximumLadenMass>37000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:ClassBus>II</v2.8:ClassBus> - <v2.8:NumberPassengerSeatsLowerDeck>181</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>CG</v2.8:BodyworkCode> - <v2.8:LowEntry>false</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>19700</v2.8:VehicleLength> - <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> - <v2.8:EntranceHeight>320</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> + </vif0.1:HashPreviousStep> + <vif0.1:Vehicle xsi:type="v2.10:Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-f34a4a8615eb4037a7b7"> + <v2.10:Manufacturer>Some Manufacturer</v2.10:Manufacturer> + <v2.10:ManufacturerAddress>Infinite Loop 1</v2.10:ManufacturerAddress> + <v2.10:VIN>VEH-1234567890</v2.10:VIN> + <v2.10:Date>2021-06-07T22:00:00Z</v2.10:Date> + <v2.10:LegislativeCategory>M3</v2.10:LegislativeCategory> + <v2.10:CorrectedActualMass>19000</v2.10:CorrectedActualMass> + <v2.10:TechnicalPermissibleMaximumLadenMass>37000</v2.10:TechnicalPermissibleMaximumLadenMass> + <v2.10:ClassBus>II</v2.10:ClassBus> + <v2.10:NgTankSystem>Compressed</v2.10:NgTankSystem> + <v2.10:NumberPassengerSeatsLowerDeck>181</v2.10:NumberPassengerSeatsLowerDeck> + <v2.10:NumberPassengersStandingLowerDeck>0</v2.10:NumberPassengersStandingLowerDeck> + <v2.10:NumberPassengerSeatsUpperDeck>0</v2.10:NumberPassengerSeatsUpperDeck> + <v2.10:NumberPassengersStandingUpperDeck>0</v2.10:NumberPassengersStandingUpperDeck> + <v2.10:BodyworkCode>CG</v2.10:BodyworkCode> + <v2.10:LowEntry>false</v2.10:LowEntry> + <v2.10:HeightIntegratedBody>3000</v2.10:HeightIntegratedBody> + <v2.10:VehicleLength>19700</v2.10:VehicleLength> + <v2.10:VehicleWidth>2550</v2.10:VehicleWidth> + <v2.10:EntranceHeight>320</v2.10:EntranceHeight> + <v2.10:DoorDriveTechnology>pneumatic</v2.10:DoorDriveTechnology> + <v2.10:VehicleDeclarationType>final</v2.10:VehicleDeclarationType> + <v2.10:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.10:Components_Conventional_CompletedBusType"> + <v2.10:AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -632,32 +633,35 @@ <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>7</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 3-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> + </v2.10:AirDrag> + <v2.10:Auxiliaries> + <v2.10:Data xsi:type="v2.10:AUX_Conventional_CompletedBusType"> + <v2.10:ElectricSystem> + <v2.10:LEDLights> + <v2.10:Interiorlights>true</v2.10:Interiorlights> + <v2.10:Dayrunninglights>true</v2.10:Dayrunninglights> + <v2.10:Positionlights>true</v2.10:Positionlights> + <v2.10:Brakelights>true</v2.10:Brakelights> + <v2.10:Headlights>true</v2.10:Headlights> + </v2.10:LEDLights> + </v2.10:ElectricSystem> + <v2.10:HVAC> + <v2.10:SystemConfiguration>7</v2.10:SystemConfiguration> + <v2.10:HeatPumpTypeDriverCompartment> + <v2.10:Cooling>non R-744 2-stage</v2.10:Cooling> + <v2.10:Heating>none</v2.10:Heating> + </v2.10:HeatPumpTypeDriverCompartment> + <v2.10:HeatPumpTypePassengerCompartment> + <v2.10:Cooling>non R-744 3-stage</v2.10:Cooling><v2.10:Heating>none</v2.10:Heating> + </v2.10:HeatPumpTypePassengerCompartment> + <v2.10:AuxiliaryHeaterPower>15000</v2.10:AuxiliaryHeaterPower> + <v2.10:DoubleGlazing>true</v2.10:DoubleGlazing> + <v2.10:AdjustableAuxiliaryHeater>false</v2.10:AdjustableAuxiliaryHeater> + <v2.10:SeparateAirDistributionDucts>false</v2.10:SeparateAirDistributionDucts> + </v2.10:HVAC> + </v2.10:Data> + </v2.10:Auxiliaries> + </v2.10:Components> </vif0.1:Vehicle> <vif0.1:ApplicationInformation> <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> @@ -674,5 +678,5 @@ <di:DigestValue>3YDwmAXmbJO9ExDXLz+Q4lNnQXHFBRThT6JdzG5uW3k=</di:DigestValue> </di:Reference> </vif0.1:Signature> - </vif0.1:ManufacturingStage> -</vif0.1:VectoOutputMultistage> \ No newline at end of file + </vif0.1:ManufacturingStep> +</vif0.1:VectoOutputMultistep> \ No newline at end of file diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 39a/primary_heavyBus group P39_40_nonSmart_ESS_VIF.xml b/Generic Vehicles/Declaration Mode/CompletedBus 39a/primary_heavyBus group P39_40_nonSmart_ESS_VIF.xml index 1cc890120187f477a1ffdab508e47ace0d7c9d8e..871d939011a50d131bf4ee0d19a54338405f8d5b 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 39a/primary_heavyBus group P39_40_nonSmart_ESS_VIF.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 39a/primary_heavyBus group P39_40_nonSmart_ESS_VIF.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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"> +<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: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"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-10652bf49ae0499f8689"> <Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +42,9 @@ <RatedPower>260</RatedPower> <MaxEngineTorque>2400</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>600</IdlingSpeed> @@ -576,4 +576,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/Generic Vehicles/Declaration Mode/CompletedBus 39a/vecto_vehicle-completed_heavyBus_39a.xml b/Generic Vehicles/Declaration Mode/CompletedBus 39a/vecto_vehicle-completed_heavyBus_39a.xml index 709891bb30d6f94dc57e1000b3fc890ea2aee8df..0a63f48d8f2df2d6f34b867273d1fd019cf01422 100644 --- a/Generic Vehicles/Declaration Mode/CompletedBus 39a/vecto_vehicle-completed_heavyBus_39a.xml +++ b/Generic Vehicles/Declaration Mode/CompletedBus 39a/vecto_vehicle-completed_heavyBus_39a.xml @@ -1,6 +1,6 @@ <?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"> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" 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.10="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -9,9 +9,9 @@ <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>19000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>37000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>181</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -24,7 +24,7 @@ <EntranceHeight>0320</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> @@ -48,7 +48,7 @@ </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -60,10 +60,14 @@ </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 3-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/Group 51/vecto_vehicle-medium_lorry_4x2F.xml b/Generic Vehicles/Declaration Mode/Group 51/vecto_vehicle-medium_lorry_4x2F.xml index c4af429b80f9a660042156aa65c45af1921dde95..3d955f9539e44c21be95d87f6807ee012e3e5119 100644 --- a/Generic Vehicles/Declaration Mode/Group 51/vecto_vehicle-medium_lorry_4x2F.xml +++ b/Generic Vehicles/Declaration Mode/Group 51/vecto_vehicle-medium_lorry_4x2F.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV//VectoDeclarationJob.xsd"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-ML2rFWD" xsi:type="VehicleMediumLorryDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/Generic Vehicles/Declaration Mode/Group 54 XML/vecto_vehicle-medium_lorry_4x2.xml b/Generic Vehicles/Declaration Mode/Group 54 XML/vecto_vehicle-medium_lorry_4x2.xml index f575f20e0ba548bd00b0a9c54306f296b5ebc08c..109dc88bc4ab924ab48db5bfa3913c3e7eea1610 100644 --- a/Generic Vehicles/Declaration Mode/Group 54 XML/vecto_vehicle-medium_lorry_4x2.xml +++ b/Generic Vehicles/Declaration Mode/Group 54 XML/vecto_vehicle-medium_lorry_4x2.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV//VectoDeclarationJob.xsd"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-ML2r" xsi:type="VehicleMediumLorryDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/Generic Vehicles/Declaration Mode/Group P31_32/primary_heavyBus group_P31_32_Smart_ES.xml b/Generic Vehicles/Declaration Mode/Group P31_32/primary_heavyBus group_P31_32_Smart_ES.xml index b3493936e31ea50f699ed4b2039602184583f3af..cef2f8a024b909cfb87995c94f963911d3a16bc3 100644 --- a/Generic Vehicles/Declaration Mode/Group P31_32/primary_heavyBus group_P31_32_Smart_ES.xml +++ b/Generic Vehicles/Declaration Mode/Group P31_32/primary_heavyBus group_P31_32_Smart_ES.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,18 +16,18 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic primary bus 41 Engine</Model> @@ -208,7 +209,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -217,10 +218,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>AT 6 Gear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1193,7 +1194,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1202,10 +1203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1242,15 +1243,15 @@ <Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1267,7 +1268,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1276,10 +1277,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1314,7 +1315,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1323,10 +1324,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2107,8 +2108,8 @@ <Entry inputSpeed='3250.00' inputTorque='-7643.77' torqueLoss='259.16'/> <Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2117,10 +2118,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -2178,9 +2179,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -2198,7 +2199,6 @@ <RatedCapacity>1</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -2215,7 +2215,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/Group P33_34/primary_heavyBus group_P33_34_SmartPS.xml b/Generic Vehicles/Declaration Mode/Group P33_34/primary_heavyBus group_P33_34_SmartPS.xml index 7ca77eecbb7348c828e7f76967a62edce1e6d491..b4864d94095fc42fbbd742303defad14ee2da939 100644 --- a/Generic Vehicles/Declaration Mode/Group P33_34/primary_heavyBus group_P33_34_SmartPS.xml +++ b/Generic Vehicles/Declaration Mode/Group P33_34/primary_heavyBus group_P33_34_SmartPS.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_SmartPS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartPS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Bus 6x2</Model> @@ -181,7 +182,7 @@ <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -190,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2580,8 +2581,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2590,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2605,16 +2606,16 @@ <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2630,8 +2631,8 @@ <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2640,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -2713,8 +2714,8 @@ <Entry retarderSpeed="5900.00" torqueLoss="13.70"/> <Entry retarderSpeed="6000.00" torqueLoss="14.00"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2723,10 +2724,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3230,7 +3231,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3239,10 +3240,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3327,9 +3328,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3338,7 +3339,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3355,7 +3355,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/Group P35_36/primary_heavyBus group_P35_36_nonSmart.xml b/Generic Vehicles/Declaration Mode/Group P35_36/primary_heavyBus group_P35_36_nonSmart.xml index 56c01167a5e177b2a3cca67413803193080687fd..a59fefa73709c5d7dba34c410f46d07e38a629c7 100644 --- a/Generic Vehicles/Declaration Mode/Group P35_36/primary_heavyBus group_P35_36_nonSmart.xml +++ b/Generic Vehicles/Declaration Mode/Group P35_36/primary_heavyBus group_P35_36_nonSmart.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>true</Articulated> @@ -15,18 +16,18 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic primary bus 43 Engine</Model> @@ -180,7 +181,7 @@ <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -189,10 +190,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>AT 6 Gear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1165,7 +1166,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1174,10 +1175,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1214,15 +1215,15 @@ <Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1239,7 +1240,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1248,10 +1249,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1286,7 +1287,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1295,10 +1296,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2080,7 +2081,7 @@ <Entry inputSpeed='3750.00' inputTorque='-7960.98' torqueLoss='268.68'/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2089,10 +2090,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -2177,9 +2178,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -2188,7 +2189,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -2205,7 +2205,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/Group P37_38/primary_heavyBus group_P37_38_SmartES_PS.xml b/Generic Vehicles/Declaration Mode/Group P37_38/primary_heavyBus group_P37_38_SmartES_PS.xml index 3e710f5c4241bff9f63b889f9e805983df1e273e..bb8e36d2472372ac0816aaf3c341d713dbd53341 100644 --- a/Generic Vehicles/Declaration Mode/Group P37_38/primary_heavyBus group_P37_38_SmartES_PS.xml +++ b/Generic Vehicles/Declaration Mode/Group P37_38/primary_heavyBus group_P37_38_SmartES_PS.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_SmartES-PS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartES-PS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartES-PS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>8x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine > <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +174,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +183,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2574,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2583,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2599,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2624,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2633,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2670,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2679,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3186,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3195,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3309,9 +3310,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3329,7 +3330,6 @@ <RatedCapacity>1</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3346,7 +3346,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/Group P39_40/primary_heavyBus group P39_40_nonSmart_ESS.xml b/Generic Vehicles/Declaration Mode/Group P39_40/primary_heavyBus group P39_40_nonSmart_ESS.xml index 6c21b1f947e842d5e7b48b6fe2578d1482bfc446..e476cae6d817fe56466b08e936704e24644ba035 100644 --- a/Generic Vehicles/Declaration Mode/Group P39_40/primary_heavyBus group P39_40_nonSmart_ESS.xml +++ b/Generic Vehicles/Declaration Mode/Group P39_40/primary_heavyBus group P39_40_nonSmart_ESS.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_nonSmart-ESS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart-ESS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart-ESS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>8x2</AxleConfiguration> <Articulated>true</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>8x2 articulated bus Engine</Model> @@ -209,7 +210,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-172.00'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -218,10 +219,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>8x2 Bus</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -627,7 +628,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -636,10 +637,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -654,15 +655,15 @@ <Entry speedRatio='3.6738' torqueRatio='1.22' inputTorqueRef='-3238.32'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -679,7 +680,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -688,10 +689,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -726,7 +727,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -735,10 +736,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>8x2 articulated bus</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1338,7 +1339,7 @@ <Entry inputSpeed='4930.00' inputTorque='5303.63' torqueLoss='131.21'/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1347,10 +1348,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -1462,9 +1463,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -1473,7 +1474,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -1490,7 +1490,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL.xml b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL.xml index c2c1726ade7b8d8be743fb77f74fd0158f91c0c1..f165a47db18a5c040e265a9dee9811abb754a3cb 100644 --- a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL.xml +++ b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL.xml @@ -6,9 +6,9 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-NA" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>TU Graz, IVT</Manufacturer> <ManufacturerAddress>N/A</ManufacturerAddress> @@ -39,7 +39,7 @@ </v2.1:ADAS> <v2.1:Components xsi:type="v2.0:VehicleComponentsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Engine xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>TU Graz, IVT</Manufacturer> <Model>325kW 12.7l Engine</Model> <CertificationNumber>ENG-325kW 12.7l Engine</CertificationNumber> diff --git a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF-DM_WHR.xml b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF-DM_WHR.xml index a505a654f03e0e3a76a0ed7f651a679017fb0d08..de2270f158e628e71bc9782d8450e6fd0987e020 100644 --- a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF-DM_WHR.xml +++ b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF-DM_WHR.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-NA_DF-DA_WHR" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>TU Graz, IVT</Manufacturer> <ManufacturerAddress>N/A</ManufacturerAddress> @@ -30,7 +31,7 @@ </v2.1:ADAS> <v2.1:Components xsi:type="v2.0:VehicleComponentsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Engine xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>TU Graz, IVT</Manufacturer> <Model>325kW 12.7l Engine</Model> <CertificationNumber>ENG-325kW 12.7l Engine</CertificationNumber> diff --git a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF.xml b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF.xml index 2043c944b2710112dd9cc25fedf83663c4d45e0f..f56ab2dbbe877e8abd631d628a84655624f1830d 100644 --- a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF.xml +++ b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_DF.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-NA_DF" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>TU Graz, IVT</Manufacturer> <ManufacturerAddress>N/A</ManufacturerAddress> @@ -30,7 +31,7 @@ </v2.1:ADAS> <v2.1:Components xsi:type="v2.0:VehicleComponentsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Engine xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>TU Graz, IVT</Manufacturer> <Model>325kW 12.7l Engine</Model> <CertificationNumber>ENG-325kW 12.7l Engine</CertificationNumber> diff --git a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_WHR.xml b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_WHR.xml index dcb2f2b7b433975cbd2adafaca319d1ce193bc3f..aea3118700623f8ede366f260082cf1ccb979dfb 100644 --- a/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_WHR.xml +++ b/Generic Vehicles/Declaration Mode/Group5_Tractor_4x2/Class5_Tractor_DECL_WHR.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-NA_WHR" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>TU Graz, IVT</Manufacturer> <ManufacturerAddress>N/A</ManufacturerAddress> @@ -30,7 +31,7 @@ </v2.1:ADAS> <v2.1:Components xsi:type="v2.0:VehicleComponentsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Engine xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>TU Graz, IVT</Manufacturer> <Model>325kW 12.7l Engine</Model> <CertificationNumber>ENG-325kW 12.7l Engine</CertificationNumber> diff --git a/Generic Vehicles/Declaration Mode/SingleBus_31b/primary_heavyBus group_P31_32_Smart_ES.xml b/Generic Vehicles/Declaration Mode/SingleBus_31b/primary_heavyBus group_P31_32_Smart_ES.xml index b3493936e31ea50f699ed4b2039602184583f3af..cef2f8a024b909cfb87995c94f963911d3a16bc3 100644 --- a/Generic Vehicles/Declaration Mode/SingleBus_31b/primary_heavyBus group_P31_32_Smart_ES.xml +++ b/Generic Vehicles/Declaration Mode/SingleBus_31b/primary_heavyBus group_P31_32_Smart_ES.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,18 +16,18 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic primary bus 41 Engine</Model> @@ -208,7 +209,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -217,10 +218,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>AT 6 Gear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1193,7 +1194,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1202,10 +1203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1242,15 +1243,15 @@ <Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1267,7 +1268,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1276,10 +1277,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1314,7 +1315,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1323,10 +1324,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2107,8 +2108,8 @@ <Entry inputSpeed='3250.00' inputTorque='-7643.77' torqueLoss='259.16'/> <Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2117,10 +2118,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -2178,9 +2179,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -2198,7 +2199,6 @@ <RatedCapacity>1</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -2215,7 +2215,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/SingleBus_31b/vecto_vehicle-completed_heavyBus_31b.xml b/Generic Vehicles/Declaration Mode/SingleBus_31b/vecto_vehicle-completed_heavyBus_31b.xml index d26a3385b1a827b1770571a08f536d807320b21b..868332c9851c4fb7a9a689f201172b51471f90d1 100644 --- a/Generic Vehicles/Declaration Mode/SingleBus_31b/vecto_vehicle-completed_heavyBus_31b.xml +++ b/Generic Vehicles/Declaration Mode/SingleBus_31b/vecto_vehicle-completed_heavyBus_31b.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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"> +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="v2.4:Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -16,9 +16,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.e <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>10680</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>86</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -31,7 +31,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.e <EntranceHeight>270</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> @@ -55,7 +62,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.e </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -67,10 +74,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://citnet.tech.e </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/SingleBus_34f/primary_heavyBus group_P33_34_SmartPS.xml b/Generic Vehicles/Declaration Mode/SingleBus_34f/primary_heavyBus group_P33_34_SmartPS.xml index 7ca77eecbb7348c828e7f76967a62edce1e6d491..b4864d94095fc42fbbd742303defad14ee2da939 100644 --- a/Generic Vehicles/Declaration Mode/SingleBus_34f/primary_heavyBus group_P33_34_SmartPS.xml +++ b/Generic Vehicles/Declaration Mode/SingleBus_34f/primary_heavyBus group_P33_34_SmartPS.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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-PrimaryBus_SmartPS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:/VectoCore/VectoCore/Resources/XSD//VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Bus Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartPS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Bus 6x2</Model> @@ -181,7 +182,7 @@ <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -190,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2580,8 +2581,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2590,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2605,16 +2606,16 @@ <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2630,8 +2631,8 @@ <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2640,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -2713,8 +2714,8 @@ <Entry retarderSpeed="5900.00" torqueLoss="13.70"/> <Entry retarderSpeed="6000.00" torqueLoss="14.00"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2723,10 +2724,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3230,7 +3231,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3239,10 +3240,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3327,9 +3328,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3338,7 +3339,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3355,7 +3355,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/Generic Vehicles/Declaration Mode/SingleBus_34f/vecto_vehicle-completed_heavyBus_34f.xml b/Generic Vehicles/Declaration Mode/SingleBus_34f/vecto_vehicle-completed_heavyBus_34f.xml index e44502a740c47d7f4ebb9b93a76b15b10af2553d..12d242b4caedb6e716be09599f2c78f7a71ab413 100644 --- a/Generic Vehicles/Declaration Mode/SingleBus_34f/vecto_vehicle-completed_heavyBus_34f.xml +++ b/Generic Vehicles/Declaration Mode/SingleBus_34f/vecto_vehicle-completed_heavyBus_34f.xml @@ -1,6 +1,6 @@ <?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"> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -9,9 +9,9 @@ <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>19400</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>16</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>56</NumberPassengerSeatsUpperDeck> @@ -24,9 +24,16 @@ <EntranceHeight>300</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -36,7 +43,7 @@ <TransferredCdxA>5.20</TransferredCdxA> <DeclaredCdxA>5.20</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -45,10 +52,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>true</Interiorlights> @@ -60,10 +67,14 @@ </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>N.A.</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/Generic Vehicles/Declaration Mode/VTP HeavyBus/CompletedBus_33c.MRF.xml b/Generic Vehicles/Declaration Mode/VTP HeavyBus/CompletedBus_33c.MRF.xml index ae812c1d3b5c95df1fc2c237a23ea9a04d110e4e..e8e3b724b4de28f57dcdc7fed5d3ba60384272cd 100644 --- a/Generic Vehicles/Declaration Mode/VTP HeavyBus/CompletedBus_33c.MRF.xml +++ b/Generic Vehicles/Declaration Mode/VTP HeavyBus/CompletedBus_33c.MRF.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> +<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:mrf0.8="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput v:\VectoCore\VectoCore\Resources\XSD/VectoOutputManufacturer.xsd"> <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-c0ed899015394103882d"> <Vehicle xsi:type="VehicleCompletedBusType"> <PrimaryVehicle> @@ -68,30 +68,32 @@ <CertificationMethod>Standard values</CertificationMethod> <CdxA>6.30</CdxA> </AirDrag> - <Auxiliaries xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="aux:CompletedVehicleAuxiliaryDataDeclarationType"> - <aux:ElectricSystem> - <aux:AlternatorTechnology>default</aux:AlternatorTechnology> - <aux:LEDLights> - <aux:Dayrunninglights>true</aux:Dayrunninglights> - <aux:Headlights>true</aux:Headlights> - <aux:Positionlights>true</aux:Positionlights> - <aux:Brakelights>true</aux:Brakelights> - <aux:Interiorlights>true</aux:Interiorlights> - </aux:LEDLights> - </aux:ElectricSystem> - <aux:HVAC> - <aux:SystemConfiguration>6</aux:SystemConfiguration> - <aux:CompressorType> - <aux:DriverAC>2-stage</aux:DriverAC> - <aux:PassengerAC>none</aux:PassengerAC> - </aux:CompressorType> - <aux:AuxiliaryHeaterPower>30000</aux:AuxiliaryHeaterPower> - <aux:DoubleGlasing>true</aux:DoubleGlasing> - <aux:HeatPump>false</aux:HeatPump> - <aux:AdjustableAuxiliaryHeater>true</aux:AdjustableAuxiliaryHeater> - <aux:SeparateAirDistributionDucts>true</aux:SeparateAirDistributionDucts> - </aux:HVAC> - </Auxiliaries> + <mrf0.8:Auxiliaries xsi:type="AUX_Conventional_CompletedBusType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </mrf0.8:Auxiliaries> </Components> <InputDataSignature> <di:Reference> @@ -134,7 +136,6 @@ <AverageGearboxEfficiency unit="%">96.02</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">96.62</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.136</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">697.4</FuelConsumption> <FuelConsumption unit="g/t-km">102.6</FuelConsumption> @@ -181,7 +182,6 @@ <AverageGearboxEfficiency unit="%">96.03</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">96.20</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.072</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">534.2</FuelConsumption> <FuelConsumption unit="g/t-km">328.1</FuelConsumption> @@ -228,7 +228,6 @@ <AverageGearboxEfficiency unit="%">96.08</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">95.54</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.070</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">417.8</FuelConsumption> <FuelConsumption unit="g/t-km">256.6</FuelConsumption> @@ -275,7 +274,6 @@ <AverageGearboxEfficiency unit="%">96.07</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">96.12</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.119</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">544.7</FuelConsumption> <FuelConsumption unit="g/t-km">80.1</FuelConsumption> @@ -322,7 +320,6 @@ <AverageGearboxEfficiency unit="%">96.21</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">95.64</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.086</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">459.8</FuelConsumption> <FuelConsumption unit="g/t-km">67.6</FuelConsumption> @@ -369,7 +366,6 @@ <AverageGearboxEfficiency unit="%">96.25</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">95.02</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.063</FuelConsumptionFactor> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">352.9</FuelConsumption> <FuelConsumption unit="g/t-km">216.7</FuelConsumption> diff --git a/HashingCmd/Program.cs b/HashingCmd/Program.cs index c8d1ad3857b5263d4e1a6ab82fd7b4ebc83e22b1..1aacf571650e8deb8ae27fe2f8be239f9027411c 100644 --- a/HashingCmd/Program.cs +++ b/HashingCmd/Program.cs @@ -42,6 +42,7 @@ using TUGraz.VectoCore.Utils; using TUGraz.VectoHashing; using XmlDocumentType = TUGraz.VectoCore.Utils.XmlDocumentType; + namespace HashingCmd { class Program diff --git a/HashingTool/Helper/HashingHelper.cs b/HashingTool/Helper/HashingHelper.cs index b9bffa7867358816115723c619b72329a3dda691..9d1f1db7b722b5d5f72a256230be90b230498291 100644 --- a/HashingTool/Helper/HashingHelper.cs +++ b/HashingTool/Helper/HashingHelper.cs @@ -105,7 +105,9 @@ namespace HashingTool.Helper var localName = x.DocumentElement.FirstChild.LocalName; var components = new[] { VectoComponents.Engine, VectoComponents.Airdrag, VectoComponents.Angledrive, VectoComponents.Axlegear, - VectoComponents.Gearbox, VectoComponents.Retarder, VectoComponents.TorqueConverter, VectoComponents.Tyre + VectoComponents.Gearbox, VectoComponents.Retarder, VectoComponents.TorqueConverter, VectoComponents.Tyre, + VectoComponents.BatterySystem, VectoComponents.CapacitorSystem, VectoComponents.ElectricMachineSystem, + VectoComponents.IEPC, VectoComponents.ADC }; var valid = components.Where(c => c.XMLElementName() == localName).Any(); if (!valid) { diff --git a/HashingTool/Properties/Version.cs b/HashingTool/Properties/Version.cs index c557105bc9eb04cf4da66322b4e18e3c30f9c043..1a0663e09d1d4b0a75827482bebed9818d898b6a 100644 --- a/HashingTool/Properties/Version.cs +++ b/HashingTool/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("0.2.0.2171")] -[assembly: AssemblyFileVersion("0.2.0.2171")] +[assembly: AssemblyVersion("0.2.0.2527")] +[assembly: AssemblyFileVersion("0.2.0.2527")] diff --git a/VECTO.sln b/VECTO.sln index 8b72b482c43336c2def0b2b9d3aee1b98e578c83..14fee3e5ed1dcdc6beac27419ca2aeeee1df63c6 100644 --- a/VECTO.sln +++ b/VECTO.sln @@ -36,9 +36,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ModelbasedTests", "VectoCor EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{D29E62A2-CF08-469F-B29F-1B25DCB35386}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoAPI", "..\VECTO_API\VectoAPI\VectoAPI.csproj", "{512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoAPI", "..\VECTO_API_DEV\VectoAPI\VectoAPI.csproj", "{DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoAPI Test", "..\VECTO_API\VectoAPI Test\VectoAPI Test.csproj", "{D959CB7C-F514-4F5E-9C33-684D0012474B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoAPI Test", "..\VECTO_API_DEV\VectoAPI Test\VectoAPI Test.csproj", "{F79D87B8-9C5A-439B-9EAD-D66386447719}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoEngineeringAPI", "..\VECTO_API\VectoEngineeringAPI\VectoEngineeringAPI.csproj", "{41314A40-AB3E-4F43-B1A4-58443F4014F2}" EndProject @@ -66,12 +66,14 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VECTO3GUI", "VECTO3GUI\VECT EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "PluginsDEV", "PluginsDEV", "{C4D97EBF-BA80-4943-9D27-33179405D8D5}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VectoAPI", "..\VECTO_API_DEV\VectoAPI\VectoAPI.csproj", "{DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VECTO3GUI2020", "VECTO3GUI2020\VECTO3GUI2020.csproj", "{7E9172D4-07E3-4077-814E-7117AB2B3E22}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Vecto3GUI2020Test", "Vecto3GUI2020Test\Vecto3GUI2020Test.csproj", "{7F4FF473-96B3-461E-9CE6-76D3B75F87CB}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ParameterDocumentation", "..\XMLSchemaDocumentation\ParameterDocumentation\ParameterDocumentation.csproj", "{F93B1450-A2A1-4148-81F2-1AE2C8E84257}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ParameterDocumentationTest", "..\vecto-SchemaDocumentation\ParameterDocumentation\ParameterDocumentationTest\ParameterDocumentationTest.csproj", "{057580BE-320A-4DF4-AA35-D97530F688D5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug PerformanceStats|Any CPU = Debug PerformanceStats|Any CPU @@ -370,52 +372,52 @@ Global {A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU {A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU {A0256B2A-09F8-45AD-B46A-FD98D7AAAA0C}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|x64.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Debug|x86.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.DebugTUG|x64.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.DebugTUG|x86.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|Any CPU.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|x64.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Deploy|x86.ActiveCfg = Debug|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|Any CPU.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|x64.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.Release|x86.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|x64.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Debug|x86.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.DebugTUG|x64.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.DebugTUG|x86.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|Any CPU.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|x64.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Deploy|x86.ActiveCfg = Debug|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|x64.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.Release|x86.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU - {D959CB7C-F514-4F5E-9C33-684D0012474B}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x64.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x86.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x64.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x86.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|Any CPU.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x64.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x86.ActiveCfg = Debug|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x64.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x86.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug|x64.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Debug|x86.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.DebugTUG|x64.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.DebugTUG|x86.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Deploy|Any CPU.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Deploy|x64.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Deploy|x86.ActiveCfg = Debug|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Release|x64.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.Release|x86.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU + {F79D87B8-9C5A-439B-9EAD-D66386447719}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU {41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU {41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU {41314A40-AB3E-4F43-B1A4-58443F4014F2}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU @@ -736,48 +738,6 @@ Global {A17C6067-4DD9-41FC-B335-39F3DE1DE6B3}.ReleaseTUG|x64.Build.0 = Release|Any CPU {A17C6067-4DD9-41FC-B335-39F3DE1DE6B3}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU {A17C6067-4DD9-41FC-B335-39F3DE1DE6B3}.ReleaseTUG|x86.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|Any CPU.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x64.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceStats|x86.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|Any CPU.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x64.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug PerformanceTrace|x86.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x64.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x64.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x86.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Debug|x86.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x64.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x64.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x86.ActiveCfg = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.DebugTUG|x86.Build.0 = Debug|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|Any CPU.ActiveCfg = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|Any CPU.Build.0 = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x64.ActiveCfg = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x64.Build.0 = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x86.ActiveCfg = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Deploy|x86.Build.0 = Deploy|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|Any CPU.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x64.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x64.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x86.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.Release|x86.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x64.Build.0 = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2}.ReleaseTUG|x86.Build.0 = Release|Any CPU {7E9172D4-07E3-4077-814E-7117AB2B3E22}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU {7E9172D4-07E3-4077-814E-7117AB2B3E22}.Debug PerformanceStats|Any CPU.Build.0 = Debug|Any CPU {7E9172D4-07E3-4077-814E-7117AB2B3E22}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU @@ -861,6 +821,90 @@ Global {7F4FF473-96B3-461E-9CE6-76D3B75F87CB}.ReleaseTUG|x64.Build.0 = Release|Any CPU {7F4FF473-96B3-461E-9CE6-76D3B75F87CB}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU {7F4FF473-96B3-461E-9CE6-76D3B75F87CB}.ReleaseTUG|x86.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|Any CPU.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|x64.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceStats|x86.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|Any CPU.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|x64.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug PerformanceTrace|x86.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|x64.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|x64.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|x86.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Debug|x86.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|x64.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|x64.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|x86.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.DebugTUG|x86.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|Any CPU.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|Any CPU.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|x64.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|x64.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|x86.ActiveCfg = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Deploy|x86.Build.0 = Debug|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|Any CPU.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|x64.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|x64.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|x86.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.Release|x86.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|x64.Build.0 = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU + {F93B1450-A2A1-4148-81F2-1AE2C8E84257}.ReleaseTUG|x86.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|Any CPU.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|Any CPU.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|x64.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|x64.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|x86.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceStats|x86.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|Any CPU.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|Any CPU.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|x64.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|x64.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|x86.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug PerformanceTrace|x86.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|x64.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|x64.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|x86.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Debug|x86.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|Any CPU.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|Any CPU.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|x64.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|x64.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|x86.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.DebugTUG|x86.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|Any CPU.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|Any CPU.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|x64.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|x64.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|x86.ActiveCfg = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Deploy|x86.Build.0 = Debug|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|Any CPU.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|x64.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|x64.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|x86.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.Release|x86.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|Any CPU.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|Any CPU.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|x64.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|x64.Build.0 = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|x86.ActiveCfg = Release|Any CPU + {057580BE-320A-4DF4-AA35-D97530F688D5}.ReleaseTUG|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -873,8 +917,8 @@ Global {2320CD6F-FE7B-4341-A9BB-3ABCA7EF18F6} = {351FF7E8-B56B-445E-8E98-A61E07C990DA} {E8B0B447-1A54-4BEC-A160-AF0017000781} = {351FF7E8-B56B-445E-8E98-A61E07C990DA} {79A066AD-69A9-4223-90F6-6ED5D2D084F4} = {73A5BF70-6168-456F-95E5-A1402BFA488C} - {512C2CD1-E5BE-4F6B-943B-2BFA7E0CBD64} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} - {D959CB7C-F514-4F5E-9C33-684D0012474B} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} + {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} + {F79D87B8-9C5A-439B-9EAD-D66386447719} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} {41314A40-AB3E-4F43-B1A4-58443F4014F2} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} {749F150A-F974-46DC-A1E2-F4153C54FC0D} = {351FF7E8-B56B-445E-8E98-A61E07C990DA} {2C58BA97-2954-4D19-920F-A24B78FC80A4} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} @@ -882,7 +926,8 @@ Global {B673E12F-D323-4C4C-8805-9915B2C72D3D} = {73A5BF70-6168-456F-95E5-A1402BFA488C} {760C1C5B-A767-463E-BA85-F0BCFC23A550} = {73A5BF70-6168-456F-95E5-A1402BFA488C} {C234077C-F81E-42FA-9367-1319753678A6} = {D29E62A2-CF08-469F-B29F-1B25DCB35386} - {DD260CC4-7978-45E3-8646-AD4F5E6A8FA2} = {C4D97EBF-BA80-4943-9D27-33179405D8D5} + {E672322E-44DC-41C8-A3A4-603233C72F92} = {351FF7E8-B56B-445E-8E98-A61E07C990DA} + {F93B1450-A2A1-4148-81F2-1AE2C8E84257} = {351FF7E8-B56B-445E-8E98-A61E07C990DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {B38F3172-132E-43F7-9C4B-5FDC3A28C051} diff --git a/VECTO/BusAuxiliaries/UI/frmHVACTool.vb b/VECTO/BusAuxiliaries/UI/frmHVACTool.vb index fd6426e8fc4f8ae2976d45299cca27f25efadd07..47f5eefe70781c7e76d8fed3502d61f34516fce1 100644 --- a/VECTO/BusAuxiliaries/UI/frmHVACTool.vb +++ b/VECTO/BusAuxiliaries/UI/frmHVACTool.vb @@ -18,10 +18,7 @@ Public Class frmHVACTool Private ahsmFilePath As String 'Private buses As IBusDatabase Private ssmTOOL As SSMTOOL - Private originalssmTOOL As SSMTOOL Private TabColors As Dictionary(Of TabPage, Color) = New Dictionary(Of TabPage, Color)() - Private editTechLine As SSMTechnology = New SSMTechnology() - Private gvTechListBinding As BindingList(Of SSMTechnology) Private DefaultCategories As String() = {"Cooling", "Heating", "Insulation", "Ventiliation"} Private vectoFile As String = String.Empty Private UserHitCancel As Boolean = False @@ -98,7 +95,7 @@ Public Class frmHVACTool Me.ahsmFilePath = ahsmFilePath ssmTOOL = New SSMTOOL(SSMInputData.ReadFile(ahsmFilePath, Nothing, DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions)) ' , New HVACConstants, False, useDefaults) - originalssmTOOL = New SSMTOOL(SSMInputData.ReadFile(ahsmFilePath, Nothing, DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions)) ' ahsmFilePath, New HVACConstants, False, useDefaults) + 'originalssmTOOL = New SSMTOOL(SSMInputData.ReadFile(ahsmFilePath, Nothing, DeclarationData.BusAuxiliaries.DefaultEnvironmentalConditions)) ' ahsmFilePath, New HVACConstants, False, useDefaults) 'If IO.File.Exists(ahsmFilePath) Then ' If ssmTOOL.Load(ahsmFilePath) AndAlso originalssmTOOL.Load(ahsmFilePath) Then diff --git a/VECTO/GUI/BatteryForm.vb b/VECTO/GUI/BatteryForm.vb index 5c98f978dc71facf3abe774f9926cc904bb67465..4fef46185e2ed2620a984dd4bb13595d5f129854 100644 --- a/VECTO/GUI/BatteryForm.vb +++ b/VECTO/GUI/BatteryForm.vb @@ -189,8 +189,8 @@ Public Class BatteryForm Dim battery As IBatteryPackEngineeringInputData = ctype(reess, IBatteryPackEngineeringInputData) tbCapacity.Text = battery.Capacity.AsAmpHour.ToGUIFormat() - tbSoCMin.Text = (battery.MinSOC * 100).ToGUIFormat() - tbSoCMax.Text = (battery.MaxSOC * 100).ToGUIFormat() + tbSoCMin.Text = (battery.MinSOC.Value * 100).ToGUIFormat() + tbSoCMax.Text = (battery.MaxSOC.Value * 100).ToGUIFormat() tbMaxCurrentMap.Text = GetRelativePath(battery.MaxCurrentMap.Source, basePath) tbSoCCurve.Text = GetRelativePath(battery.VoltageCurve.Source, basePath) diff --git a/VECTO/GUI/ElectricMotorForm.Designer.vb b/VECTO/GUI/ElectricMotorForm.Designer.vb index c0ed54b7cd2369e7a111800b38782d0c5905ce7f..c21aea205198e348bcd826b95ad6bf0112c9bd44 100644 --- a/VECTO/GUI/ElectricMotorForm.Designer.vb +++ b/VECTO/GUI/ElectricMotorForm.Designer.vb @@ -60,6 +60,10 @@ Partial Class ElectricMotorForm Me.OpenWithToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.ShowInFolderToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem() Me.pnInertia = New System.Windows.Forms.Panel() + Me.tbDragTorqueHi = New System.Windows.Forms.TextBox() + Me.lblDragTorqueHi = New System.Windows.Forms.Label() + Me.btnBrowseDragCurveHi = New System.Windows.Forms.Button() + Me.btnDragCurveOpenHi = New System.Windows.Forms.Button() Me.btnEmMapOpenHi = New System.Windows.Forms.Button() Me.btnBrowseEmMapHi = New System.Windows.Forms.Button() Me.lblPowerMapHi = New System.Windows.Forms.Label() @@ -73,11 +77,11 @@ Partial Class ElectricMotorForm Me.Panel1 = New System.Windows.Forms.Panel() Me.lblContTq = New System.Windows.Forms.Label() Me.lblContTqUnit = New System.Windows.Forms.Label() - Me.tbContTq = New System.Windows.Forms.TextBox() + Me.tbContTqLo = New System.Windows.Forms.TextBox() Me.Panel2 = New System.Windows.Forms.Panel() Me.lblOvlTime = New System.Windows.Forms.Label() Me.lblOvltimeUnit = New System.Windows.Forms.Label() - Me.tbOvlTime = New System.Windows.Forms.TextBox() + Me.tbOvlTimeLo = New System.Windows.Forms.TextBox() Me.Panel3 = New System.Windows.Forms.Panel() Me.lblOvlRecovery = New System.Windows.Forms.Label() Me.lblOvlRecoveryFactorUnit = New System.Windows.Forms.Label() @@ -85,24 +89,26 @@ Partial Class ElectricMotorForm Me.Panel4 = New System.Windows.Forms.Panel() Me.lblRatedSpeed = New System.Windows.Forms.Label() Me.lblRatedSpeedUnit = New System.Windows.Forms.Label() - Me.tbRatedSpeed = New System.Windows.Forms.TextBox() + Me.tbRatedSpeedLo = New System.Windows.Forms.TextBox() Me.pnOverloadTq = New System.Windows.Forms.Panel() Me.lblOverloadTq = New System.Windows.Forms.Label() Me.lblOverloadTqUnit = New System.Windows.Forms.Label() - Me.tbOverloadTq = New System.Windows.Forms.TextBox() + Me.tbOverloadTqLo = New System.Windows.Forms.TextBox() Me.Panel6 = New System.Windows.Forms.Panel() Me.lblOverloadSpeed = New System.Windows.Forms.Label() Me.lblOverloadSpeedUnit = New System.Windows.Forms.Label() - Me.tbOvlSpeed = New System.Windows.Forms.TextBox() - Me.gbVoltageLevelHi = New System.Windows.Forms.GroupBox() + Me.tbOvlSpeedLo = New System.Windows.Forms.TextBox() Me.lblVoltageHi = New System.Windows.Forms.Label() Me.lblVoltageHiUnit = New System.Windows.Forms.Label() Me.tbVoltageHi = New System.Windows.Forms.TextBox() - Me.gbVoltageLevelLow = New System.Windows.Forms.GroupBox() Me.lblVoltageLow = New System.Windows.Forms.Label() Me.lblVoltageLowUnit = New System.Windows.Forms.Label() Me.tbVoltageLow = New System.Windows.Forms.TextBox() Me.lblMaxTorqueLow = New System.Windows.Forms.Label() + Me.tbDragTorqueLow = New System.Windows.Forms.TextBox() + Me.lblDragTorqueLow = New System.Windows.Forms.Label() + Me.btnBrowseDragCurveLow = New System.Windows.Forms.Button() + Me.btnDragCurveOpenLow = New System.Windows.Forms.Button() Me.tbMapLow = New System.Windows.Forms.TextBox() Me.lblPowerMapLow = New System.Windows.Forms.Label() Me.btnBrowseEmMapLow = New System.Windows.Forms.Button() @@ -110,10 +116,29 @@ Partial Class ElectricMotorForm Me.tbMaxTorqueLow = New System.Windows.Forms.TextBox() Me.btnMaxTorqueCurveOpenLow = New System.Windows.Forms.Button() Me.btnBrowseMaxTorqueLow = New System.Windows.Forms.Button() - Me.tbDragTorqueLow = New System.Windows.Forms.TextBox() - Me.lblDragTorqueLow = New System.Windows.Forms.Label() - Me.btnBrowseDragCurveLow = New System.Windows.Forms.Button() - Me.btnDragCurveOpenLow = New System.Windows.Forms.Button() + Me.tcVoltageLevels = New System.Windows.Forms.TabControl() + Me.tpVoltageLow = New System.Windows.Forms.TabPage() + Me.tpVoltageHigh = New System.Windows.Forms.TabPage() + Me.Panel5 = New System.Windows.Forms.Panel() + Me.Label1 = New System.Windows.Forms.Label() + Me.Label2 = New System.Windows.Forms.Label() + Me.tbOvlSpeedHi = New System.Windows.Forms.TextBox() + Me.Panel7 = New System.Windows.Forms.Panel() + Me.Label3 = New System.Windows.Forms.Label() + Me.Label4 = New System.Windows.Forms.Label() + Me.tbOverloadTqHi = New System.Windows.Forms.TextBox() + Me.Panel8 = New System.Windows.Forms.Panel() + Me.Label5 = New System.Windows.Forms.Label() + Me.Label6 = New System.Windows.Forms.Label() + Me.tbRatedSpeedHi = New System.Windows.Forms.TextBox() + Me.Panel9 = New System.Windows.Forms.Panel() + Me.Label7 = New System.Windows.Forms.Label() + Me.Label8 = New System.Windows.Forms.Label() + Me.tbOvlTimeHi = New System.Windows.Forms.TextBox() + Me.Panel10 = New System.Windows.Forms.Panel() + Me.Label9 = New System.Windows.Forms.Label() + Me.Label10 = New System.Windows.Forms.Label() + Me.tbContTqHi = New System.Windows.Forms.TextBox() Me.ToolStrip1.SuspendLayout Me.StatusStrip1.SuspendLayout CType(Me.PictureBox1,System.ComponentModel.ISupportInitialize).BeginInit @@ -126,8 +151,14 @@ Partial Class ElectricMotorForm Me.Panel4.SuspendLayout Me.pnOverloadTq.SuspendLayout Me.Panel6.SuspendLayout - Me.gbVoltageLevelHi.SuspendLayout - Me.gbVoltageLevelLow.SuspendLayout + Me.tcVoltageLevels.SuspendLayout + Me.tpVoltageLow.SuspendLayout + Me.tpVoltageHigh.SuspendLayout + Me.Panel5.SuspendLayout + Me.Panel7.SuspendLayout + Me.Panel8.SuspendLayout + Me.Panel9.SuspendLayout + Me.Panel10.SuspendLayout Me.SuspendLayout ' 'tbInertia @@ -162,22 +193,22 @@ Partial Class ElectricMotorForm ' Me.ButCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.ButCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.ButCancel.Location = New System.Drawing.Point(1362, 696) + Me.ButCancel.Location = New System.Drawing.Point(1281, 637) Me.ButCancel.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ButCancel.Name = "ButCancel" Me.ButCancel.Size = New System.Drawing.Size(112, 35) - Me.ButCancel.TabIndex = 99 + Me.ButCancel.TabIndex = 13 Me.ButCancel.Text = "Cancel" Me.ButCancel.UseVisualStyleBackColor = true ' 'ButOK ' Me.ButOK.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.ButOK.Location = New System.Drawing.Point(1241, 696) + Me.ButOK.Location = New System.Drawing.Point(1160, 637) Me.ButOK.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ButOK.Name = "ButOK" Me.ButOK.Size = New System.Drawing.Size(112, 35) - Me.ButOK.TabIndex = 98 + Me.ButOK.TabIndex = 12 Me.ButOK.Text = "Save" Me.ButOK.UseVisualStyleBackColor = true ' @@ -189,7 +220,7 @@ Partial Class ElectricMotorForm Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) Me.ToolStrip1.Name = "ToolStrip1" Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 3, 0) - Me.ToolStrip1.Size = New System.Drawing.Size(1493, 33) + Me.ToolStrip1.Size = New System.Drawing.Size(1412, 33) Me.ToolStrip1.TabIndex = 30 Me.ToolStrip1.Text = "ToolStrip1" ' @@ -266,10 +297,10 @@ Partial Class ElectricMotorForm ' Me.StatusStrip1.ImageScalingSize = New System.Drawing.Size(24, 24) Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.LbStatus}) - Me.StatusStrip1.Location = New System.Drawing.Point(0, 737) + Me.StatusStrip1.Location = New System.Drawing.Point(0, 677) Me.StatusStrip1.Name = "StatusStrip1" Me.StatusStrip1.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0) - Me.StatusStrip1.Size = New System.Drawing.Size(1493, 32) + Me.StatusStrip1.Size = New System.Drawing.Size(1412, 32) Me.StatusStrip1.SizingGrip = false Me.StatusStrip1.TabIndex = 37 Me.StatusStrip1.Text = "StatusStrip1" @@ -337,32 +368,74 @@ Partial Class ElectricMotorForm Me.pnInertia.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.pnInertia.Name = "pnInertia" Me.pnInertia.Size = New System.Drawing.Size(332, 46) - Me.pnInertia.TabIndex = 1 + Me.pnInertia.TabIndex = 3 + ' + 'tbDragTorqueHi + ' + Me.tbDragTorqueHi.Location = New System.Drawing.Point(7, 141) + Me.tbDragTorqueHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbDragTorqueHi.Name = "tbDragTorqueHi" + Me.tbDragTorqueHi.Size = New System.Drawing.Size(607, 26) + Me.tbDragTorqueHi.TabIndex = 5 + ' + 'lblDragTorqueHi + ' + Me.lblDragTorqueHi.AutoSize = true + Me.lblDragTorqueHi.Location = New System.Drawing.Point(7, 117) + Me.lblDragTorqueHi.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.lblDragTorqueHi.Name = "lblDragTorqueHi" + Me.lblDragTorqueHi.Size = New System.Drawing.Size(143, 20) + Me.lblDragTorqueHi.TabIndex = 38 + Me.lblDragTorqueHi.Text = "Drag Torque Curve" + ' + 'btnBrowseDragCurveHi + ' + Me.btnBrowseDragCurveHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon + Me.btnBrowseDragCurveHi.Location = New System.Drawing.Point(628, 137) + Me.btnBrowseDragCurveHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.btnBrowseDragCurveHi.Name = "btnBrowseDragCurveHi" + Me.btnBrowseDragCurveHi.Size = New System.Drawing.Size(36, 37) + Me.btnBrowseDragCurveHi.TabIndex = 6 + Me.btnBrowseDragCurveHi.TabStop = false + Me.btnBrowseDragCurveHi.UseVisualStyleBackColor = true + ' + 'btnDragCurveOpenHi + ' + Me.btnDragCurveOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small + Me.btnDragCurveOpenHi.Location = New System.Drawing.Point(662, 137) + Me.btnDragCurveOpenHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.btnDragCurveOpenHi.Name = "btnDragCurveOpenHi" + Me.btnDragCurveOpenHi.Size = New System.Drawing.Size(36, 37) + Me.btnDragCurveOpenHi.TabIndex = 7 + Me.btnDragCurveOpenHi.TabStop = false + Me.btnDragCurveOpenHi.UseVisualStyleBackColor = true ' 'btnEmMapOpenHi ' Me.btnEmMapOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnEmMapOpenHi.Location = New System.Drawing.Point(664, 157) + Me.btnEmMapOpenHi.Location = New System.Drawing.Point(662, 200) Me.btnEmMapOpenHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnEmMapOpenHi.Name = "btnEmMapOpenHi" Me.btnEmMapOpenHi.Size = New System.Drawing.Size(36, 37) - Me.btnEmMapOpenHi.TabIndex = 9 + Me.btnEmMapOpenHi.TabIndex = 42 + Me.btnEmMapOpenHi.TabStop = false Me.btnEmMapOpenHi.UseVisualStyleBackColor = true ' 'btnBrowseEmMapHi ' Me.btnBrowseEmMapHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(630, 157) + Me.btnBrowseEmMapHi.Location = New System.Drawing.Point(628, 200) Me.btnBrowseEmMapHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnBrowseEmMapHi.Name = "btnBrowseEmMapHi" Me.btnBrowseEmMapHi.Size = New System.Drawing.Size(36, 37) - Me.btnBrowseEmMapHi.TabIndex = 8 + Me.btnBrowseEmMapHi.TabIndex = 41 + Me.btnBrowseEmMapHi.TabStop = false Me.btnBrowseEmMapHi.UseVisualStyleBackColor = true ' 'lblPowerMapHi ' Me.lblPowerMapHi.AutoSize = true - Me.lblPowerMapHi.Location = New System.Drawing.Point(9, 137) + Me.lblPowerMapHi.Location = New System.Drawing.Point(7, 180) Me.lblPowerMapHi.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblPowerMapHi.Name = "lblPowerMapHi" Me.lblPowerMapHi.Size = New System.Drawing.Size(242, 20) @@ -371,36 +444,38 @@ Partial Class ElectricMotorForm ' 'tbMapHi ' - Me.tbMapHi.Location = New System.Drawing.Point(9, 162) + Me.tbMapHi.Location = New System.Drawing.Point(7, 205) Me.tbMapHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbMapHi.Name = "tbMapHi" Me.tbMapHi.Size = New System.Drawing.Size(607, 26) - Me.tbMapHi.TabIndex = 7 + Me.tbMapHi.TabIndex = 40 ' 'btnMaxTorqueCurveOpenHi ' Me.btnMaxTorqueCurveOpenHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnMaxTorqueCurveOpenHi.Location = New System.Drawing.Point(664, 92) + Me.btnMaxTorqueCurveOpenHi.Location = New System.Drawing.Point(662, 75) Me.btnMaxTorqueCurveOpenHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnMaxTorqueCurveOpenHi.Name = "btnMaxTorqueCurveOpenHi" Me.btnMaxTorqueCurveOpenHi.Size = New System.Drawing.Size(36, 37) - Me.btnMaxTorqueCurveOpenHi.TabIndex = 3 + Me.btnMaxTorqueCurveOpenHi.TabIndex = 46 + Me.btnMaxTorqueCurveOpenHi.TabStop = false Me.btnMaxTorqueCurveOpenHi.UseVisualStyleBackColor = true ' 'btnBrowseMaxTorqueHi ' Me.btnBrowseMaxTorqueHi.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseMaxTorqueHi.Location = New System.Drawing.Point(630, 92) + Me.btnBrowseMaxTorqueHi.Location = New System.Drawing.Point(628, 75) Me.btnBrowseMaxTorqueHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnBrowseMaxTorqueHi.Name = "btnBrowseMaxTorqueHi" Me.btnBrowseMaxTorqueHi.Size = New System.Drawing.Size(36, 37) - Me.btnBrowseMaxTorqueHi.TabIndex = 2 + Me.btnBrowseMaxTorqueHi.TabIndex = 45 + Me.btnBrowseMaxTorqueHi.TabStop = false Me.btnBrowseMaxTorqueHi.UseVisualStyleBackColor = true ' 'lblMaxTorqueHi ' Me.lblMaxTorqueHi.AutoSize = true - Me.lblMaxTorqueHi.Location = New System.Drawing.Point(9, 71) + Me.lblMaxTorqueHi.Location = New System.Drawing.Point(7, 54) Me.lblMaxTorqueHi.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblMaxTorqueHi.Name = "lblMaxTorqueHi" Me.lblMaxTorqueHi.Size = New System.Drawing.Size(325, 20) @@ -409,18 +484,18 @@ Partial Class ElectricMotorForm ' 'tbMaxTorqueHi ' - Me.tbMaxTorqueHi.Location = New System.Drawing.Point(9, 97) + Me.tbMaxTorqueHi.Location = New System.Drawing.Point(7, 78) Me.tbMaxTorqueHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbMaxTorqueHi.Name = "tbMaxTorqueHi" Me.tbMaxTorqueHi.Size = New System.Drawing.Size(607, 26) - Me.tbMaxTorqueHi.TabIndex = 1 + Me.tbMaxTorqueHi.TabIndex = 44 ' 'lblTitle ' Me.lblTitle.AutoSize = true Me.lblTitle.BackColor = System.Drawing.Color.White Me.lblTitle.Font = New System.Drawing.Font("Microsoft Sans Serif", 18!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.lblTitle.Location = New System.Drawing.Point(172, 52) + Me.lblTitle.Location = New System.Drawing.Point(126, 52) Me.lblTitle.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblTitle.Name = "lblTitle" Me.lblTitle.Size = New System.Drawing.Size(281, 40) @@ -431,10 +506,10 @@ Partial Class ElectricMotorForm ' Me.PicBox.BackColor = System.Drawing.Color.LightGray Me.PicBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle - Me.PicBox.Location = New System.Drawing.Point(762, 43) + Me.PicBox.Location = New System.Drawing.Point(776, 43) Me.PicBox.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.PicBox.Name = "PicBox" - Me.PicBox.Size = New System.Drawing.Size(710, 408) + Me.PicBox.Size = New System.Drawing.Size(572, 408) Me.PicBox.TabIndex = 49 Me.PicBox.TabStop = false ' @@ -442,12 +517,12 @@ Partial Class ElectricMotorForm ' Me.Panel1.Controls.Add(Me.lblContTq) Me.Panel1.Controls.Add(Me.lblContTqUnit) - Me.Panel1.Controls.Add(Me.tbContTq) - Me.Panel1.Location = New System.Drawing.Point(18, 222) + Me.Panel1.Controls.Add(Me.tbContTqLo) + Me.Panel1.Location = New System.Drawing.Point(7, 249) Me.Panel1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(332, 46) - Me.Panel1.TabIndex = 2 + Me.Panel1.TabIndex = 25 ' 'lblContTq ' @@ -469,24 +544,24 @@ Partial Class ElectricMotorForm Me.lblContTqUnit.TabIndex = 24 Me.lblContTqUnit.Text = "[Nm]" ' - 'tbContTq + 'tbContTqLo ' - Me.tbContTq.Location = New System.Drawing.Point(190, 8) - Me.tbContTq.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbContTq.Name = "tbContTq" - Me.tbContTq.Size = New System.Drawing.Size(72, 26) - Me.tbContTq.TabIndex = 3 + Me.tbContTqLo.Location = New System.Drawing.Point(190, 8) + Me.tbContTqLo.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbContTqLo.Name = "tbContTqLo" + Me.tbContTqLo.Size = New System.Drawing.Size(72, 26) + Me.tbContTqLo.TabIndex = 3 ' 'Panel2 ' Me.Panel2.Controls.Add(Me.lblOvlTime) Me.Panel2.Controls.Add(Me.lblOvltimeUnit) - Me.Panel2.Controls.Add(Me.tbOvlTime) - Me.Panel2.Location = New System.Drawing.Point(18, 317) + Me.Panel2.Controls.Add(Me.tbOvlTimeLo) + Me.Panel2.Location = New System.Drawing.Point(7, 344) Me.Panel2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.Panel2.Name = "Panel2" Me.Panel2.Size = New System.Drawing.Size(332, 46) - Me.Panel2.TabIndex = 4 + Me.Panel2.TabIndex = 25 ' 'lblOvlTime ' @@ -508,24 +583,24 @@ Partial Class ElectricMotorForm Me.lblOvltimeUnit.TabIndex = 24 Me.lblOvltimeUnit.Text = "[s]" ' - 'tbOvlTime + 'tbOvlTimeLo ' - Me.tbOvlTime.Location = New System.Drawing.Point(190, 8) - Me.tbOvlTime.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbOvlTime.Name = "tbOvlTime" - Me.tbOvlTime.Size = New System.Drawing.Size(72, 26) - Me.tbOvlTime.TabIndex = 3 + Me.tbOvlTimeLo.Location = New System.Drawing.Point(190, 8) + Me.tbOvlTimeLo.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOvlTimeLo.Name = "tbOvlTimeLo" + Me.tbOvlTimeLo.Size = New System.Drawing.Size(72, 26) + Me.tbOvlTimeLo.TabIndex = 3 ' 'Panel3 ' Me.Panel3.Controls.Add(Me.lblOvlRecovery) Me.Panel3.Controls.Add(Me.lblOvlRecoveryFactorUnit) Me.Panel3.Controls.Add(Me.tbOverloadRecoveryFactor) - Me.Panel3.Location = New System.Drawing.Point(350, 317) + Me.Panel3.Location = New System.Drawing.Point(369, 166) Me.Panel3.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.Panel3.Name = "Panel3" Me.Panel3.Size = New System.Drawing.Size(392, 46) - Me.Panel3.TabIndex = 7 + Me.Panel3.TabIndex = 26 ' 'lblOvlRecovery ' @@ -559,12 +634,12 @@ Partial Class ElectricMotorForm ' Me.Panel4.Controls.Add(Me.lblRatedSpeed) Me.Panel4.Controls.Add(Me.lblRatedSpeedUnit) - Me.Panel4.Controls.Add(Me.tbRatedSpeed) - Me.Panel4.Location = New System.Drawing.Point(350, 222) + Me.Panel4.Controls.Add(Me.tbRatedSpeedLo) + Me.Panel4.Location = New System.Drawing.Point(339, 249) Me.Panel4.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.Panel4.Name = "Panel4" Me.Panel4.Size = New System.Drawing.Size(392, 46) - Me.Panel4.TabIndex = 5 + Me.Panel4.TabIndex = 26 ' 'lblRatedSpeed ' @@ -586,24 +661,24 @@ Partial Class ElectricMotorForm Me.lblRatedSpeedUnit.TabIndex = 24 Me.lblRatedSpeedUnit.Text = "[rpm]" ' - 'tbRatedSpeed + 'tbRatedSpeedLo ' - Me.tbRatedSpeed.Location = New System.Drawing.Point(266, 8) - Me.tbRatedSpeed.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbRatedSpeed.Name = "tbRatedSpeed" - Me.tbRatedSpeed.Size = New System.Drawing.Size(72, 26) - Me.tbRatedSpeed.TabIndex = 3 + Me.tbRatedSpeedLo.Location = New System.Drawing.Point(266, 8) + Me.tbRatedSpeedLo.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbRatedSpeedLo.Name = "tbRatedSpeedLo" + Me.tbRatedSpeedLo.Size = New System.Drawing.Size(72, 26) + Me.tbRatedSpeedLo.TabIndex = 3 ' 'pnOverloadTq ' Me.pnOverloadTq.Controls.Add(Me.lblOverloadTq) Me.pnOverloadTq.Controls.Add(Me.lblOverloadTqUnit) - Me.pnOverloadTq.Controls.Add(Me.tbOverloadTq) - Me.pnOverloadTq.Location = New System.Drawing.Point(18, 269) + Me.pnOverloadTq.Controls.Add(Me.tbOverloadTqLo) + Me.pnOverloadTq.Location = New System.Drawing.Point(7, 296) Me.pnOverloadTq.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.pnOverloadTq.Name = "pnOverloadTq" Me.pnOverloadTq.Size = New System.Drawing.Size(332, 46) - Me.pnOverloadTq.TabIndex = 3 + Me.pnOverloadTq.TabIndex = 26 ' 'lblOverloadTq ' @@ -625,24 +700,24 @@ Partial Class ElectricMotorForm Me.lblOverloadTqUnit.TabIndex = 24 Me.lblOverloadTqUnit.Text = "[Nm]" ' - 'tbOverloadTq + 'tbOverloadTqLo ' - Me.tbOverloadTq.Location = New System.Drawing.Point(190, 8) - Me.tbOverloadTq.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbOverloadTq.Name = "tbOverloadTq" - Me.tbOverloadTq.Size = New System.Drawing.Size(72, 26) - Me.tbOverloadTq.TabIndex = 3 + Me.tbOverloadTqLo.Location = New System.Drawing.Point(190, 8) + Me.tbOverloadTqLo.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOverloadTqLo.Name = "tbOverloadTqLo" + Me.tbOverloadTqLo.Size = New System.Drawing.Size(72, 26) + Me.tbOverloadTqLo.TabIndex = 3 ' 'Panel6 ' Me.Panel6.Controls.Add(Me.lblOverloadSpeed) Me.Panel6.Controls.Add(Me.lblOverloadSpeedUnit) - Me.Panel6.Controls.Add(Me.tbOvlSpeed) - Me.Panel6.Location = New System.Drawing.Point(350, 269) + Me.Panel6.Controls.Add(Me.tbOvlSpeedLo) + Me.Panel6.Location = New System.Drawing.Point(339, 296) Me.Panel6.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.Panel6.Name = "Panel6" Me.Panel6.Size = New System.Drawing.Size(392, 46) - Me.Panel6.TabIndex = 6 + Me.Panel6.TabIndex = 27 ' 'lblOverloadSpeed ' @@ -664,40 +739,18 @@ Partial Class ElectricMotorForm Me.lblOverloadSpeedUnit.TabIndex = 24 Me.lblOverloadSpeedUnit.Text = "[rpm]" ' - 'tbOvlSpeed - ' - Me.tbOvlSpeed.Location = New System.Drawing.Point(266, 8) - Me.tbOvlSpeed.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbOvlSpeed.Name = "tbOvlSpeed" - Me.tbOvlSpeed.Size = New System.Drawing.Size(72, 26) - Me.tbOvlSpeed.TabIndex = 3 - ' - 'gbVoltageLevelHi - ' - Me.gbVoltageLevelHi.Controls.Add(Me.lblVoltageHi) - Me.gbVoltageLevelHi.Controls.Add(Me.lblVoltageHiUnit) - Me.gbVoltageLevelHi.Controls.Add(Me.tbVoltageHi) - Me.gbVoltageLevelHi.Controls.Add(Me.lblMaxTorqueHi) - Me.gbVoltageLevelHi.Controls.Add(Me.tbMapHi) - Me.gbVoltageLevelHi.Controls.Add(Me.lblPowerMapHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseEmMapHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnEmMapOpenHi) - Me.gbVoltageLevelHi.Controls.Add(Me.tbMaxTorqueHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnMaxTorqueCurveOpenHi) - Me.gbVoltageLevelHi.Controls.Add(Me.btnBrowseMaxTorqueHi) - Me.gbVoltageLevelHi.Location = New System.Drawing.Point(749, 473) - Me.gbVoltageLevelHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.gbVoltageLevelHi.Name = "gbVoltageLevelHi" - Me.gbVoltageLevelHi.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.gbVoltageLevelHi.Size = New System.Drawing.Size(723, 206) - Me.gbVoltageLevelHi.TabIndex = 12 - Me.gbVoltageLevelHi.TabStop = false - Me.gbVoltageLevelHi.Text = "Voltage Level High" + 'tbOvlSpeedLo + ' + Me.tbOvlSpeedLo.Location = New System.Drawing.Point(266, 8) + Me.tbOvlSpeedLo.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOvlSpeedLo.Name = "tbOvlSpeedLo" + Me.tbOvlSpeedLo.Size = New System.Drawing.Size(72, 26) + Me.tbOvlSpeedLo.TabIndex = 3 ' 'lblVoltageHi ' Me.lblVoltageHi.AutoSize = true - Me.lblVoltageHi.Location = New System.Drawing.Point(18, 32) + Me.lblVoltageHi.Location = New System.Drawing.Point(16, 15) Me.lblVoltageHi.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblVoltageHi.Name = "lblVoltageHi" Me.lblVoltageHi.Size = New System.Drawing.Size(64, 20) @@ -707,7 +760,7 @@ Partial Class ElectricMotorForm 'lblVoltageHiUnit ' Me.lblVoltageHiUnit.AutoSize = true - Me.lblVoltageHiUnit.Location = New System.Drawing.Point(284, 32) + Me.lblVoltageHiUnit.Location = New System.Drawing.Point(282, 15) Me.lblVoltageHiUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblVoltageHiUnit.Name = "lblVoltageHiUnit" Me.lblVoltageHiUnit.Size = New System.Drawing.Size(28, 20) @@ -716,38 +769,16 @@ Partial Class ElectricMotorForm ' 'tbVoltageHi ' - Me.tbVoltageHi.Location = New System.Drawing.Point(204, 29) + Me.tbVoltageHi.Location = New System.Drawing.Point(202, 12) Me.tbVoltageHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbVoltageHi.Name = "tbVoltageHi" Me.tbVoltageHi.Size = New System.Drawing.Size(72, 26) - Me.tbVoltageHi.TabIndex = 0 - ' - 'gbVoltageLevelLow - ' - Me.gbVoltageLevelLow.Controls.Add(Me.lblVoltageLow) - Me.gbVoltageLevelLow.Controls.Add(Me.lblVoltageLowUnit) - Me.gbVoltageLevelLow.Controls.Add(Me.tbVoltageLow) - Me.gbVoltageLevelLow.Controls.Add(Me.lblMaxTorqueLow) - Me.gbVoltageLevelLow.Controls.Add(Me.tbMapLow) - Me.gbVoltageLevelLow.Controls.Add(Me.lblPowerMapLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseEmMapLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnEmMapOpenLow) - Me.gbVoltageLevelLow.Controls.Add(Me.tbMaxTorqueLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnMaxTorqueCurveOpenLow) - Me.gbVoltageLevelLow.Controls.Add(Me.btnBrowseMaxTorqueLow) - Me.gbVoltageLevelLow.Location = New System.Drawing.Point(18, 473) - Me.gbVoltageLevelLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.gbVoltageLevelLow.Name = "gbVoltageLevelLow" - Me.gbVoltageLevelLow.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.gbVoltageLevelLow.Size = New System.Drawing.Size(723, 206) - Me.gbVoltageLevelLow.TabIndex = 11 - Me.gbVoltageLevelLow.TabStop = false - Me.gbVoltageLevelLow.Text = "Voltage Level Low" + Me.tbVoltageHi.TabIndex = 49 ' 'lblVoltageLow ' Me.lblVoltageLow.AutoSize = true - Me.lblVoltageLow.Location = New System.Drawing.Point(18, 32) + Me.lblVoltageLow.Location = New System.Drawing.Point(16, 14) Me.lblVoltageLow.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblVoltageLow.Name = "lblVoltageLow" Me.lblVoltageLow.Size = New System.Drawing.Size(64, 20) @@ -757,7 +788,7 @@ Partial Class ElectricMotorForm 'lblVoltageLowUnit ' Me.lblVoltageLowUnit.AutoSize = true - Me.lblVoltageLowUnit.Location = New System.Drawing.Point(284, 32) + Me.lblVoltageLowUnit.Location = New System.Drawing.Point(282, 14) Me.lblVoltageLowUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblVoltageLowUnit.Name = "lblVoltageLowUnit" Me.lblVoltageLowUnit.Size = New System.Drawing.Size(28, 20) @@ -766,34 +797,74 @@ Partial Class ElectricMotorForm ' 'tbVoltageLow ' - Me.tbVoltageLow.Location = New System.Drawing.Point(204, 29) + Me.tbVoltageLow.Location = New System.Drawing.Point(202, 11) Me.tbVoltageLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbVoltageLow.Name = "tbVoltageLow" Me.tbVoltageLow.Size = New System.Drawing.Size(72, 26) - Me.tbVoltageLow.TabIndex = 0 + Me.tbVoltageLow.TabIndex = 49 ' 'lblMaxTorqueLow ' Me.lblMaxTorqueLow.AutoSize = true - Me.lblMaxTorqueLow.Location = New System.Drawing.Point(9, 71) + Me.lblMaxTorqueLow.Location = New System.Drawing.Point(7, 53) Me.lblMaxTorqueLow.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblMaxTorqueLow.Name = "lblMaxTorqueLow" Me.lblMaxTorqueLow.Size = New System.Drawing.Size(325, 20) Me.lblMaxTorqueLow.TabIndex = 47 Me.lblMaxTorqueLow.Text = "Max Drive and Max Generation Torque Curve" ' + 'tbDragTorqueLow + ' + Me.tbDragTorqueLow.Location = New System.Drawing.Point(7, 140) + Me.tbDragTorqueLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbDragTorqueLow.Name = "tbDragTorqueLow" + Me.tbDragTorqueLow.Size = New System.Drawing.Size(607, 26) + Me.tbDragTorqueLow.TabIndex = 5 + ' + 'lblDragTorqueLow + ' + Me.lblDragTorqueLow.AutoSize = true + Me.lblDragTorqueLow.Location = New System.Drawing.Point(7, 116) + Me.lblDragTorqueLow.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.lblDragTorqueLow.Name = "lblDragTorqueLow" + Me.lblDragTorqueLow.Size = New System.Drawing.Size(143, 20) + Me.lblDragTorqueLow.TabIndex = 38 + Me.lblDragTorqueLow.Text = "Drag Torque Curve" + ' + 'btnBrowseDragCurveLow + ' + Me.btnBrowseDragCurveLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon + Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(628, 136) + Me.btnBrowseDragCurveLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.btnBrowseDragCurveLow.Name = "btnBrowseDragCurveLow" + Me.btnBrowseDragCurveLow.Size = New System.Drawing.Size(36, 37) + Me.btnBrowseDragCurveLow.TabIndex = 6 + Me.btnBrowseDragCurveLow.TabStop = false + Me.btnBrowseDragCurveLow.UseVisualStyleBackColor = true + ' + 'btnDragCurveOpenLow + ' + Me.btnDragCurveOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small + Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(662, 136) + Me.btnDragCurveOpenLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.btnDragCurveOpenLow.Name = "btnDragCurveOpenLow" + Me.btnDragCurveOpenLow.Size = New System.Drawing.Size(36, 37) + Me.btnDragCurveOpenLow.TabIndex = 7 + Me.btnDragCurveOpenLow.TabStop = false + Me.btnDragCurveOpenLow.UseVisualStyleBackColor = true + ' 'tbMapLow ' - Me.tbMapLow.Location = New System.Drawing.Point(9, 160) + Me.tbMapLow.Location = New System.Drawing.Point(7, 204) Me.tbMapLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbMapLow.Name = "tbMapLow" Me.tbMapLow.Size = New System.Drawing.Size(607, 26) - Me.tbMapLow.TabIndex = 7 + Me.tbMapLow.TabIndex = 40 ' 'lblPowerMapLow ' Me.lblPowerMapLow.AutoSize = true - Me.lblPowerMapLow.Location = New System.Drawing.Point(9, 135) + Me.lblPowerMapLow.Location = New System.Drawing.Point(7, 179) Me.lblPowerMapLow.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.lblPowerMapLow.Name = "lblPowerMapLow" Me.lblPowerMapLow.Size = New System.Drawing.Size(242, 20) @@ -803,88 +874,319 @@ Partial Class ElectricMotorForm 'btnBrowseEmMapLow ' Me.btnBrowseEmMapLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(630, 155) + Me.btnBrowseEmMapLow.Location = New System.Drawing.Point(628, 199) Me.btnBrowseEmMapLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnBrowseEmMapLow.Name = "btnBrowseEmMapLow" Me.btnBrowseEmMapLow.Size = New System.Drawing.Size(36, 37) - Me.btnBrowseEmMapLow.TabIndex = 8 + Me.btnBrowseEmMapLow.TabIndex = 41 + Me.btnBrowseEmMapLow.TabStop = false Me.btnBrowseEmMapLow.UseVisualStyleBackColor = true ' 'btnEmMapOpenLow ' Me.btnEmMapOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnEmMapOpenLow.Location = New System.Drawing.Point(664, 155) + Me.btnEmMapOpenLow.Location = New System.Drawing.Point(662, 199) Me.btnEmMapOpenLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnEmMapOpenLow.Name = "btnEmMapOpenLow" Me.btnEmMapOpenLow.Size = New System.Drawing.Size(36, 37) - Me.btnEmMapOpenLow.TabIndex = 9 + Me.btnEmMapOpenLow.TabIndex = 42 + Me.btnEmMapOpenLow.TabStop = false Me.btnEmMapOpenLow.UseVisualStyleBackColor = true ' 'tbMaxTorqueLow ' - Me.tbMaxTorqueLow.Location = New System.Drawing.Point(9, 95) + Me.tbMaxTorqueLow.Location = New System.Drawing.Point(7, 77) Me.tbMaxTorqueLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbMaxTorqueLow.Name = "tbMaxTorqueLow" Me.tbMaxTorqueLow.Size = New System.Drawing.Size(607, 26) - Me.tbMaxTorqueLow.TabIndex = 1 + Me.tbMaxTorqueLow.TabIndex = 44 ' 'btnMaxTorqueCurveOpenLow ' Me.btnMaxTorqueCurveOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnMaxTorqueCurveOpenLow.Location = New System.Drawing.Point(664, 92) + Me.btnMaxTorqueCurveOpenLow.Location = New System.Drawing.Point(662, 74) Me.btnMaxTorqueCurveOpenLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnMaxTorqueCurveOpenLow.Name = "btnMaxTorqueCurveOpenLow" Me.btnMaxTorqueCurveOpenLow.Size = New System.Drawing.Size(36, 37) - Me.btnMaxTorqueCurveOpenLow.TabIndex = 3 + Me.btnMaxTorqueCurveOpenLow.TabIndex = 46 + Me.btnMaxTorqueCurveOpenLow.TabStop = false Me.btnMaxTorqueCurveOpenLow.UseVisualStyleBackColor = true ' 'btnBrowseMaxTorqueLow ' Me.btnBrowseMaxTorqueLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseMaxTorqueLow.Location = New System.Drawing.Point(630, 92) + Me.btnBrowseMaxTorqueLow.Location = New System.Drawing.Point(628, 74) Me.btnBrowseMaxTorqueLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnBrowseMaxTorqueLow.Name = "btnBrowseMaxTorqueLow" Me.btnBrowseMaxTorqueLow.Size = New System.Drawing.Size(36, 37) - Me.btnBrowseMaxTorqueLow.TabIndex = 2 + Me.btnBrowseMaxTorqueLow.TabIndex = 45 + Me.btnBrowseMaxTorqueLow.TabStop = false Me.btnBrowseMaxTorqueLow.UseVisualStyleBackColor = true ' - 'tbDragTorqueLow - ' - Me.tbDragTorqueLow.Location = New System.Drawing.Point(24, 409) - Me.tbDragTorqueLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.tbDragTorqueLow.Name = "tbDragTorqueLow" - Me.tbDragTorqueLow.Size = New System.Drawing.Size(607, 26) - Me.tbDragTorqueLow.TabIndex = 8 - ' - 'lblDragTorqueLow - ' - Me.lblDragTorqueLow.AutoSize = true - Me.lblDragTorqueLow.Location = New System.Drawing.Point(24, 385) - Me.lblDragTorqueLow.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) - Me.lblDragTorqueLow.Name = "lblDragTorqueLow" - Me.lblDragTorqueLow.Size = New System.Drawing.Size(143, 20) - Me.lblDragTorqueLow.TabIndex = 38 - Me.lblDragTorqueLow.Text = "Drag Torque Curve" - ' - 'btnBrowseDragCurveLow - ' - Me.btnBrowseDragCurveLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.btnBrowseDragCurveLow.Location = New System.Drawing.Point(646, 405) - Me.btnBrowseDragCurveLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.btnBrowseDragCurveLow.Name = "btnBrowseDragCurveLow" - Me.btnBrowseDragCurveLow.Size = New System.Drawing.Size(36, 37) - Me.btnBrowseDragCurveLow.TabIndex = 9 - Me.btnBrowseDragCurveLow.UseVisualStyleBackColor = true - ' - 'btnDragCurveOpenLow - ' - Me.btnDragCurveOpenLow.Image = Global.TUGraz.VECTO.My.Resources.Resources.application_export_icon_small - Me.btnDragCurveOpenLow.Location = New System.Drawing.Point(680, 405) - Me.btnDragCurveOpenLow.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) - Me.btnDragCurveOpenLow.Name = "btnDragCurveOpenLow" - Me.btnDragCurveOpenLow.Size = New System.Drawing.Size(36, 37) - Me.btnDragCurveOpenLow.TabIndex = 10 - Me.btnDragCurveOpenLow.UseVisualStyleBackColor = true + 'tcVoltageLevels + ' + Me.tcVoltageLevels.Controls.Add(Me.tpVoltageLow) + Me.tcVoltageLevels.Controls.Add(Me.tpVoltageHigh) + Me.tcVoltageLevels.Location = New System.Drawing.Point(18, 220) + Me.tcVoltageLevels.Name = "tcVoltageLevels" + Me.tcVoltageLevels.SelectedIndex = 0 + Me.tcVoltageLevels.Size = New System.Drawing.Size(751, 443) + Me.tcVoltageLevels.TabIndex = 52 + ' + 'tpVoltageLow + ' + Me.tpVoltageLow.Controls.Add(Me.lblVoltageLow) + Me.tpVoltageLow.Controls.Add(Me.tbVoltageLow) + Me.tpVoltageLow.Controls.Add(Me.lblVoltageLowUnit) + Me.tpVoltageLow.Controls.Add(Me.btnBrowseMaxTorqueLow) + Me.tpVoltageLow.Controls.Add(Me.Panel6) + Me.tpVoltageLow.Controls.Add(Me.btnMaxTorqueCurveOpenLow) + Me.tpVoltageLow.Controls.Add(Me.pnOverloadTq) + Me.tpVoltageLow.Controls.Add(Me.lblMaxTorqueLow) + Me.tpVoltageLow.Controls.Add(Me.Panel4) + Me.tpVoltageLow.Controls.Add(Me.tbMaxTorqueLow) + Me.tpVoltageLow.Controls.Add(Me.tbDragTorqueLow) + Me.tpVoltageLow.Controls.Add(Me.Panel2) + Me.tpVoltageLow.Controls.Add(Me.btnEmMapOpenLow) + Me.tpVoltageLow.Controls.Add(Me.Panel1) + Me.tpVoltageLow.Controls.Add(Me.lblDragTorqueLow) + Me.tpVoltageLow.Controls.Add(Me.btnBrowseEmMapLow) + Me.tpVoltageLow.Controls.Add(Me.btnBrowseDragCurveLow) + Me.tpVoltageLow.Controls.Add(Me.lblPowerMapLow) + Me.tpVoltageLow.Controls.Add(Me.btnDragCurveOpenLow) + Me.tpVoltageLow.Controls.Add(Me.tbMapLow) + Me.tpVoltageLow.Location = New System.Drawing.Point(4, 29) + Me.tpVoltageLow.Name = "tpVoltageLow" + Me.tpVoltageLow.Padding = New System.Windows.Forms.Padding(3) + Me.tpVoltageLow.Size = New System.Drawing.Size(743, 580) + Me.tpVoltageLow.TabIndex = 0 + Me.tpVoltageLow.Text = "Voltage Level Low" + Me.tpVoltageLow.UseVisualStyleBackColor = true + ' + 'tpVoltageHigh + ' + Me.tpVoltageHigh.Controls.Add(Me.Panel5) + Me.tpVoltageHigh.Controls.Add(Me.Panel7) + Me.tpVoltageHigh.Controls.Add(Me.Panel8) + Me.tpVoltageHigh.Controls.Add(Me.Panel9) + Me.tpVoltageHigh.Controls.Add(Me.Panel10) + Me.tpVoltageHigh.Controls.Add(Me.lblVoltageHi) + Me.tpVoltageHigh.Controls.Add(Me.tbMaxTorqueHi) + Me.tpVoltageHigh.Controls.Add(Me.lblVoltageHiUnit) + Me.tpVoltageHigh.Controls.Add(Me.btnBrowseMaxTorqueHi) + Me.tpVoltageHigh.Controls.Add(Me.tbVoltageHi) + Me.tpVoltageHigh.Controls.Add(Me.btnMaxTorqueCurveOpenHi) + Me.tpVoltageHigh.Controls.Add(Me.lblMaxTorqueHi) + Me.tpVoltageHigh.Controls.Add(Me.btnEmMapOpenHi) + Me.tpVoltageHigh.Controls.Add(Me.tbDragTorqueHi) + Me.tpVoltageHigh.Controls.Add(Me.btnBrowseEmMapHi) + Me.tpVoltageHigh.Controls.Add(Me.lblDragTorqueHi) + Me.tpVoltageHigh.Controls.Add(Me.lblPowerMapHi) + Me.tpVoltageHigh.Controls.Add(Me.btnBrowseDragCurveHi) + Me.tpVoltageHigh.Controls.Add(Me.tbMapHi) + Me.tpVoltageHigh.Controls.Add(Me.btnDragCurveOpenHi) + Me.tpVoltageHigh.Location = New System.Drawing.Point(4, 29) + Me.tpVoltageHigh.Name = "tpVoltageHigh" + Me.tpVoltageHigh.Padding = New System.Windows.Forms.Padding(3) + Me.tpVoltageHigh.Size = New System.Drawing.Size(743, 410) + Me.tpVoltageHigh.TabIndex = 1 + Me.tpVoltageHigh.Text = "Voltage Level High" + Me.tpVoltageHigh.UseVisualStyleBackColor = true + ' + 'Panel5 + ' + Me.Panel5.Controls.Add(Me.Label1) + Me.Panel5.Controls.Add(Me.Label2) + Me.Panel5.Controls.Add(Me.tbOvlSpeedHi) + Me.Panel5.Location = New System.Drawing.Point(339, 297) + Me.Panel5.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.Panel5.Name = "Panel5" + Me.Panel5.Size = New System.Drawing.Size(392, 46) + Me.Panel5.TabIndex = 55 + ' + 'Label1 + ' + Me.Label1.AutoSize = true + Me.Label1.Location = New System.Drawing.Point(4, 11) + Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(216, 20) + Me.Label1.TabIndex = 0 + Me.Label1.Text = "Test Speed Overload Torque:" + ' + 'Label2 + ' + Me.Label2.AutoSize = true + Me.Label2.Location = New System.Drawing.Point(344, 11) + Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label2.Name = "Label2" + Me.Label2.Size = New System.Drawing.Size(44, 20) + Me.Label2.TabIndex = 24 + Me.Label2.Text = "[rpm]" + ' + 'tbOvlSpeedHi + ' + Me.tbOvlSpeedHi.Location = New System.Drawing.Point(266, 8) + Me.tbOvlSpeedHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOvlSpeedHi.Name = "tbOvlSpeedHi" + Me.tbOvlSpeedHi.Size = New System.Drawing.Size(72, 26) + Me.tbOvlSpeedHi.TabIndex = 3 + ' + 'Panel7 + ' + Me.Panel7.Controls.Add(Me.Label3) + Me.Panel7.Controls.Add(Me.Label4) + Me.Panel7.Controls.Add(Me.tbOverloadTqHi) + Me.Panel7.Location = New System.Drawing.Point(7, 297) + Me.Panel7.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.Panel7.Name = "Panel7" + Me.Panel7.Size = New System.Drawing.Size(332, 46) + Me.Panel7.TabIndex = 53 + ' + 'Label3 + ' + Me.Label3.AutoSize = true + Me.Label3.Location = New System.Drawing.Point(4, 11) + Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label3.Name = "Label3" + Me.Label3.Size = New System.Drawing.Size(130, 20) + Me.Label3.TabIndex = 0 + Me.Label3.Text = "Overload Torque:" + ' + 'Label4 + ' + Me.Label4.AutoSize = true + Me.Label4.Location = New System.Drawing.Point(273, 12) + Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label4.Name = "Label4" + Me.Label4.Size = New System.Drawing.Size(41, 20) + Me.Label4.TabIndex = 24 + Me.Label4.Text = "[Nm]" + ' + 'tbOverloadTqHi + ' + Me.tbOverloadTqHi.Location = New System.Drawing.Point(190, 8) + Me.tbOverloadTqHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOverloadTqHi.Name = "tbOverloadTqHi" + Me.tbOverloadTqHi.Size = New System.Drawing.Size(72, 26) + Me.tbOverloadTqHi.TabIndex = 3 + ' + 'Panel8 + ' + Me.Panel8.Controls.Add(Me.Label5) + Me.Panel8.Controls.Add(Me.Label6) + Me.Panel8.Controls.Add(Me.tbRatedSpeedHi) + Me.Panel8.Location = New System.Drawing.Point(339, 250) + Me.Panel8.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.Panel8.Name = "Panel8" + Me.Panel8.Size = New System.Drawing.Size(392, 46) + Me.Panel8.TabIndex = 54 + ' + 'Label5 + ' + Me.Label5.AutoSize = true + Me.Label5.Location = New System.Drawing.Point(4, 11) + Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label5.Name = "Label5" + Me.Label5.Size = New System.Drawing.Size(234, 20) + Me.Label5.TabIndex = 0 + Me.Label5.Text = "Test Speed Continuous Torque:" + ' + 'Label6 + ' + Me.Label6.AutoSize = true + Me.Label6.Location = New System.Drawing.Point(344, 11) + Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label6.Name = "Label6" + Me.Label6.Size = New System.Drawing.Size(44, 20) + Me.Label6.TabIndex = 24 + Me.Label6.Text = "[rpm]" + ' + 'tbRatedSpeedHi + ' + Me.tbRatedSpeedHi.Location = New System.Drawing.Point(266, 8) + Me.tbRatedSpeedHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbRatedSpeedHi.Name = "tbRatedSpeedHi" + Me.tbRatedSpeedHi.Size = New System.Drawing.Size(72, 26) + Me.tbRatedSpeedHi.TabIndex = 3 + ' + 'Panel9 + ' + Me.Panel9.Controls.Add(Me.Label7) + Me.Panel9.Controls.Add(Me.Label8) + Me.Panel9.Controls.Add(Me.tbOvlTimeHi) + Me.Panel9.Location = New System.Drawing.Point(7, 345) + Me.Panel9.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.Panel9.Name = "Panel9" + Me.Panel9.Size = New System.Drawing.Size(332, 46) + Me.Panel9.TabIndex = 51 + ' + 'Label7 + ' + Me.Label7.AutoSize = true + Me.Label7.Location = New System.Drawing.Point(4, 11) + Me.Label7.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label7.Name = "Label7" + Me.Label7.Size = New System.Drawing.Size(141, 20) + Me.Label7.TabIndex = 0 + Me.Label7.Text = "Overload Duration:" + ' + 'Label8 + ' + Me.Label8.AutoSize = true + Me.Label8.Location = New System.Drawing.Point(270, 11) + Me.Label8.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label8.Name = "Label8" + Me.Label8.Size = New System.Drawing.Size(25, 20) + Me.Label8.TabIndex = 24 + Me.Label8.Text = "[s]" + ' + 'tbOvlTimeHi + ' + Me.tbOvlTimeHi.Location = New System.Drawing.Point(190, 8) + Me.tbOvlTimeHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbOvlTimeHi.Name = "tbOvlTimeHi" + Me.tbOvlTimeHi.Size = New System.Drawing.Size(72, 26) + Me.tbOvlTimeHi.TabIndex = 3 + ' + 'Panel10 + ' + Me.Panel10.Controls.Add(Me.Label9) + Me.Panel10.Controls.Add(Me.Label10) + Me.Panel10.Controls.Add(Me.tbContTqHi) + Me.Panel10.Location = New System.Drawing.Point(7, 250) + Me.Panel10.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.Panel10.Name = "Panel10" + Me.Panel10.Size = New System.Drawing.Size(332, 46) + Me.Panel10.TabIndex = 52 + ' + 'Label9 + ' + Me.Label9.AutoSize = true + Me.Label9.Location = New System.Drawing.Point(4, 11) + Me.Label9.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label9.Name = "Label9" + Me.Label9.Size = New System.Drawing.Size(148, 20) + Me.Label9.TabIndex = 0 + Me.Label9.Text = "Continuous Torque:" + ' + 'Label10 + ' + Me.Label10.AutoSize = true + Me.Label10.Location = New System.Drawing.Point(273, 12) + Me.Label10.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) + Me.Label10.Name = "Label10" + Me.Label10.Size = New System.Drawing.Size(41, 20) + Me.Label10.TabIndex = 24 + Me.Label10.Text = "[Nm]" + ' + 'tbContTqHi + ' + Me.tbContTqHi.Location = New System.Drawing.Point(190, 8) + Me.tbContTqHi.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.tbContTqHi.Name = "tbContTqHi" + Me.tbContTqHi.Size = New System.Drawing.Size(72, 26) + Me.tbContTqHi.TabIndex = 3 ' 'ElectricMotorForm ' @@ -892,19 +1194,9 @@ Partial Class ElectricMotorForm Me.AutoScaleDimensions = New System.Drawing.SizeF(9!, 20!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.CancelButton = Me.ButCancel - Me.ClientSize = New System.Drawing.Size(1493, 769) - Me.Controls.Add(Me.gbVoltageLevelLow) - Me.Controls.Add(Me.gbVoltageLevelHi) - Me.Controls.Add(Me.Panel6) - Me.Controls.Add(Me.tbDragTorqueLow) - Me.Controls.Add(Me.lblDragTorqueLow) - Me.Controls.Add(Me.pnOverloadTq) - Me.Controls.Add(Me.btnBrowseDragCurveLow) - Me.Controls.Add(Me.Panel4) - Me.Controls.Add(Me.btnDragCurveOpenLow) + Me.ClientSize = New System.Drawing.Size(1412, 709) + Me.Controls.Add(Me.tcVoltageLevels) Me.Controls.Add(Me.Panel3) - Me.Controls.Add(Me.Panel2) - Me.Controls.Add(Me.Panel1) Me.Controls.Add(Me.PicBox) Me.Controls.Add(Me.lblTitle) Me.Controls.Add(Me.pnInertia) @@ -944,10 +1236,21 @@ Partial Class ElectricMotorForm Me.pnOverloadTq.PerformLayout Me.Panel6.ResumeLayout(false) Me.Panel6.PerformLayout - Me.gbVoltageLevelHi.ResumeLayout(false) - Me.gbVoltageLevelHi.PerformLayout - Me.gbVoltageLevelLow.ResumeLayout(false) - Me.gbVoltageLevelLow.PerformLayout + Me.tcVoltageLevels.ResumeLayout(false) + Me.tpVoltageLow.ResumeLayout(false) + Me.tpVoltageLow.PerformLayout + Me.tpVoltageHigh.ResumeLayout(false) + Me.tpVoltageHigh.PerformLayout + Me.Panel5.ResumeLayout(false) + Me.Panel5.PerformLayout + Me.Panel7.ResumeLayout(false) + Me.Panel7.PerformLayout + Me.Panel8.ResumeLayout(false) + Me.Panel8.PerformLayout + Me.Panel9.ResumeLayout(false) + Me.Panel9.PerformLayout + Me.Panel10.ResumeLayout(false) + Me.Panel10.PerformLayout Me.ResumeLayout(false) Me.PerformLayout @@ -975,6 +1278,10 @@ End Sub Friend WithEvents OpenWithToolStripMenuItem As ToolStripMenuItem Friend WithEvents ShowInFolderToolStripMenuItem As ToolStripMenuItem Friend WithEvents pnInertia As Panel + Friend WithEvents tbDragTorqueHi As TextBox + Friend WithEvents lblDragTorqueHi As Label + Friend WithEvents btnBrowseDragCurveHi As Button + Friend WithEvents btnDragCurveOpenHi As Button Friend WithEvents btnEmMapOpenHi As Button Friend WithEvents btnBrowseEmMapHi As Button Friend WithEvents lblPowerMapHi As Label @@ -988,11 +1295,11 @@ End Sub Friend WithEvents Panel1 As Panel Friend WithEvents lblContTq As Label Friend WithEvents lblContTqUnit As Label - Friend WithEvents tbContTq As TextBox + Friend WithEvents tbContTqLo As TextBox Friend WithEvents Panel2 As Panel Friend WithEvents lblOvlTime As Label Friend WithEvents lblOvltimeUnit As Label - Friend WithEvents tbOvlTime As TextBox + Friend WithEvents tbOvlTimeLo As TextBox Friend WithEvents Panel3 As Panel Friend WithEvents lblOvlRecovery As Label Friend WithEvents lblOvlRecoveryFactorUnit As Label @@ -1000,20 +1307,18 @@ End Sub Friend WithEvents Panel4 As Panel Friend WithEvents lblRatedSpeed As Label Friend WithEvents lblRatedSpeedUnit As Label - Friend WithEvents tbRatedSpeed As TextBox + Friend WithEvents tbRatedSpeedLo As TextBox Friend WithEvents pnOverloadTq As Panel Friend WithEvents lblOverloadTq As Label Friend WithEvents lblOverloadTqUnit As Label - Friend WithEvents tbOverloadTq As TextBox + Friend WithEvents tbOverloadTqLo As TextBox Friend WithEvents Panel6 As Panel Friend WithEvents lblOverloadSpeed As Label Friend WithEvents lblOverloadSpeedUnit As Label - Friend WithEvents tbOvlSpeed As TextBox - Friend WithEvents gbVoltageLevelHi As GroupBox + Friend WithEvents tbOvlSpeedLo As TextBox Friend WithEvents lblVoltageHi As Label Friend WithEvents lblVoltageHiUnit As Label Friend WithEvents tbVoltageHi As TextBox - Friend WithEvents gbVoltageLevelLow As GroupBox Friend WithEvents lblVoltageLow As Label Friend WithEvents lblVoltageLowUnit As Label Friend WithEvents tbVoltageLow As TextBox @@ -1029,4 +1334,27 @@ End Sub Friend WithEvents tbMaxTorqueLow As TextBox Friend WithEvents btnMaxTorqueCurveOpenLow As Button Friend WithEvents btnBrowseMaxTorqueLow As Button + Friend WithEvents tcVoltageLevels As TabControl + Friend WithEvents tpVoltageLow As TabPage + Friend WithEvents tpVoltageHigh As TabPage + Friend WithEvents Panel5 As Panel + Friend WithEvents Label1 As Label + Friend WithEvents Label2 As Label + Friend WithEvents tbOvlSpeedHi As TextBox + Friend WithEvents Panel7 As Panel + Friend WithEvents Label3 As Label + Friend WithEvents Label4 As Label + Friend WithEvents tbOverloadTqHi As TextBox + Friend WithEvents Panel8 As Panel + Friend WithEvents Label5 As Label + Friend WithEvents Label6 As Label + Friend WithEvents tbRatedSpeedHi As TextBox + Friend WithEvents Panel9 As Panel + Friend WithEvents Label7 As Label + Friend WithEvents Label8 As Label + Friend WithEvents tbOvlTimeHi As TextBox + Friend WithEvents Panel10 As Panel + Friend WithEvents Label9 As Label + Friend WithEvents Label10 As Label + Friend WithEvents tbContTqHi As TextBox End Class diff --git a/VECTO/GUI/ElectricMotorForm.vb b/VECTO/GUI/ElectricMotorForm.vb index b1b93a450f00c8f1ec7c889dbe0afca779676ef4..1a714e20f4a7e77016419e50fb7403e3aa8e77a1 100644 --- a/VECTO/GUI/ElectricMotorForm.vb +++ b/VECTO/GUI/ElectricMotorForm.vb @@ -1,3 +1,4 @@ + Imports System.Drawing.Imaging Imports System.IO Imports System.Linq @@ -133,6 +134,7 @@ Public Class ElectricMotorForm tbMakeModel.Text = "" tbInertia.Text = "" tbMapHi.Text = "" + tbDragTorqueHi.Text = "" tbMaxTorqueHi.Text = "" DeclInit() @@ -172,26 +174,32 @@ Public Class ElectricMotorForm tbMakeModel.Text = engine.Model tbInertia.Text = engine.Inertia.ToGUIFormat() - tbOverloadTq.Text = If(engine.OverloadTorque?.Value().ToGUIFormat(), "") - tbOvlSpeed.Text = If(engine.OverloadTestSpeed?.AsRPM.ToGUIFormat(), "") - tbOvlTime.Text = engine.OverloadTime.Value().ToGUIFormat() - tbContTq.Text = engine.ContinuousTorque.ToGUIFormat() - tbRatedSpeed.Text = engine.ContinuousTorqueSpeed.AsRPM.ToGUIFormat() tbOverloadRecoveryFactor.Text = engine.OverloadRecoveryFactor.ToGUIFormat() - tbDragTorqueLow.Text = GetRelativePath(engine.DragCurve.Source, basePath) - + Dim voltageLevelLow As IElectricMotorVoltageLevel = engine.VoltageLevels.MinBy(function(level) level.VoltageLevel.Value()) Dim voltageLevelHigh As IElectricMotorVoltageLevel = engine.VoltageLevels.MaxBy(function(level) level.VoltageLevel.Value()) + tbOverloadTqLo.Text = If(voltageLevelLow.OverloadTorque?.Value().ToGUIFormat(), "") + tbOvlSpeedLo.Text = If(voltageLevelLow.OverloadTestSpeed?.AsRPM.ToGUIFormat(), "") + tbOvlTimeLo.Text = voltageLevelLow.OverloadTime.Value().ToGUIFormat() + tbContTqLo.Text = voltageLevelLow.ContinuousTorque.ToGUIFormat() + tbRatedSpeedLo.Text = voltageLevelLow.ContinuousTorqueSpeed.AsRPM.ToGUIFormat() + + tbOverloadTqHi.Text = If(voltageLevelHigh.OverloadTorque?.Value().ToGUIFormat(), "") + tbOvlSpeedHi.Text = If(voltageLevelHigh.OverloadTestSpeed?.AsRPM.ToGUIFormat(), "") + tbOvlTimeHi.Text = voltageLevelHigh.OverloadTime.Value().ToGUIFormat() + tbContTqHi.Text = voltageLevelHigh.ContinuousTorque.ToGUIFormat() + tbRatedSpeedHi.Text = voltageLevelHigh.ContinuousTorqueSpeed.AsRPM.ToGUIFormat() + + ' tbDragTorqueHi.Text = GetRelativePath(voltageLevelHigh.DragCurve.Source, basePath) tbMaxTorqueHi.Text = GetRelativePath(voltageLevelHigh.FullLoadCurve.Source, basePath) - tbMapHi.Text = GetRelativePath(voltageLevelHigh.EfficiencyMap.Source, basePath) + ' tbMapHi.Text = GetRelativePath(voltageLevelHigh.EfficiencyMap.Source, basePath) //PowerMap tbVoltageHi.Text = voltageLevelHigh.VoltageLevel.Value().ToGUIFormat() - Dim voltageLevelLow As IElectricMotorVoltageLevel = engine.VoltageLevels.MinBy(function(level) level.VoltageLevel.Value()) - + ' tbDragTorqueLow.Text = GetRelativePath(voltageLevelLow.DragCurve.Source, basePath) tbMaxTorqueLow.Text = GetRelativePath(voltageLevelLow.FullLoadCurve.Source, basePath) - tbMapLow.Text = GetRelativePath(voltageLevelLow.EfficiencyMap.Source, basePath) + ' tbMapLow.Text = GetRelativePath(voltageLevelLow.EfficiencyMap.Source, basePath) //PowerMap tbVoltageLow.Text = voltageLevelLow.VoltageLevel.Value().ToGUIFormat() DeclInit() @@ -228,19 +236,27 @@ Public Class ElectricMotorForm If Trim(em.ModelName) = "" Then em.ModelName = "Undefined" em.MotorInertia = tbInertia.Text.ToDouble(0) - em.OvlTq = tbOverloadTq.Text.ToDouble(0) - em.OvlSpeed = tbOvlSpeed.Text.ToDouble(0) - em.PeakPowerTime = tbOvlTime.Text.ToDouble(0) - em.RatedSpeed = tbRatedSpeed.Text.ToDouble(0) - em.ContTq = tbContTq.Text.ToDouble(0) + em.OvlTqLo = tbOverloadTqLo.Text.ToDouble(0) + em.OvlSpeedLo = tbOvlSpeedLo.Text.ToDouble(0) + em.PeakPowerTimeLo = tbOvlTimeLo.Text.ToDouble(0) + em.RatedSpeedLo = tbRatedSpeedLo.Text.ToDouble(0) + em.ContTqLo = tbContTqLo.Text.ToDouble(0) + + em.OvlTqHi = tbOverloadTqHi.Text.ToDouble(0) + em.OvlSpeedHi = tbOvlSpeedHi.Text.ToDouble(0) + em.PeakPowerTimeHi = tbOvlTimeHi.Text.ToDouble(0) + em.RatedSpeedHi = tbRatedSpeedHi.Text.ToDouble(0) + em.ContTqHi = tbContTqHi.Text.ToDouble(0) + em.OverloadRecoveryFactor = tbOverloadRecoveryFactor.Text.ToDouble(0) em.PathMaxTorqueLow = tbMaxTorqueLow.Text - em.PathDrag = tbDragTorqueLow.Text + em.PathDragLow = tbDragTorqueLow.Text em.PathMapLow = tbMapLow.Text em.VoltageLevelLow = tbVoltageLow.Text.ToDouble(0) em.PathMaxTorqueHi = tbMaxTorqueHi.Text + em.PathDragHi = tbDragTorqueHi.Text em.PathMapHi = tbMapHi.Text em.VoltageLevelHigh = tbVoltageHi.Text.ToDouble(0) @@ -298,19 +314,61 @@ Public Class ElectricMotorForm End If End Function - Private Sub DataChanged(sender As Object, e As EventArgs) Handles tbMakeModel.TextChanged, tbMapLow.TextChanged, tbMapHi.TextChanged, tbInertia.TextChanged, tbRatedSpeed.TextChanged, tbOvlTime.TextChanged, tbOvlSpeed.TextChanged, tbOverloadTq.TextChanged, tbOverloadRecoveryFactor.TextChanged, tbContTq.TextChanged, tbVoltageLow.TextChanged, tbVoltageHi.TextChanged + + Private Sub TbName_TextChanged(sender As Object, e As EventArgs) Handles tbMakeModel.TextChanged + Change() + End Sub + + Private Sub TbDispl_TextChanged(sender As Object, e As EventArgs) + Change() + DeclInit() + End Sub + + Private Sub TbInertia_TextChanged(sender As Object, e As EventArgs) Handles tbInertia.TextChanged + Change() + End Sub + + Private Sub TbNleerl_TextChanged(sender As Object, e As EventArgs) + UpdatePic() Change() End Sub - Private Sub DataChangedUpdatePic(sender As Object, e As EventArgs) _ - Handles tbMaxTorqueLow.TextChanged, tbMaxTorqueHi.TextChanged, tbDragTorqueLow.TextChanged + Private Sub TbMAP_TextChanged(sender As Object, e As EventArgs) _ + Handles tbDragTorqueHi.TextChanged UpdatePic() Change() End Sub + Private Sub TbWHTCurban_TextChanged(sender As Object, e As EventArgs) + Change() + End Sub + + Private Sub TbWHTCrural_TextChanged(sender As Object, e As EventArgs) + Change() + End Sub + + Private Sub TbWHTCmw_TextChanged(sender As Object, e As EventArgs) + Change() + End Sub + + #End Region + 'Open VMAP file + Private Sub BtMAPopen_Click(sender As Object, e As EventArgs) + Dim fldfile As String + + fldfile = FileRepl(tbDragTorqueHi.Text, GetPath(_emFile)) + + If fldfile <> NoFile AndAlso File.Exists(fldfile) Then + OpenFiles(FileRepl(tbMapHi.Text, GetPath(_emFile)), fldfile) + Else + OpenFiles(FileRepl(tbMapHi.Text, GetPath(_emFile))) + End If + End Sub + + 'Save and close Private Sub ButOK_Click(sender As Object, e As EventArgs) Handles ButOK.Click If SaveOrSaveAs(False) Then Close() @@ -334,7 +392,7 @@ Public Class ElectricMotorForm Try Dim fldFile As String = - If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueLow.Text) + If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbMaxTorqueHi.Text), tbDragTorqueHi.Text) If File.Exists(fldFile) Then _ fullLoadCurve = ElectricFullLoadCurveReader.Create(VectoCSVFile.Read(fldFile), 1) Catch ex As Exception @@ -349,7 +407,7 @@ Public Class ElectricMotorForm Try Dim dragFile As String = - If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueLow.Text), tbMapHi.Text) + If(Not String.IsNullOrWhiteSpace(_emFile), Path.Combine(Path.GetDirectoryName(_emFile), tbDragTorqueHi.Text), tbMapHi.Text) If File.Exists(dragFile) Then dragCurve = ElectricMotorDragCurveReader.Create(VectoCSVFile.Read(dragFile), 1) Catch ex As Exception End Try @@ -370,7 +428,7 @@ Public Class ElectricMotorForm series.ChartType = SeriesChartType.FastLine series.BorderWidth = 2 series.Color = Color.DarkBlue - series.Name = "Max drive torque (" & tbDragTorqueLow.Text & ")" + series.Name = "Max drive torque (" & tbDragTorqueHi.Text & ")" chart.Series.Add(series) series = New Series @@ -477,58 +535,54 @@ Public Class ElectricMotorForm #End Region - Private Sub CreateNewFile(textBox As Control) - Dim theFile As String: theFile = FileRepl(textBox.Text, GetPath(_emFile)) + Private Sub btnMaxTorqueCurveOpen_Click(sender As Object, e As EventArgs) Handles btnMaxTorqueCurveOpenHi.Click + Dim theFile As String + + theFile = FileRepl(tbMaxTorqueHi.Text, GetPath(_emFile)) + If theFile <> NoFile AndAlso File.Exists(theFile) Then - OpenFiles(FileRepl(textBox.Text, GetPath(_emFile)), theFile) + OpenFiles(FileRepl(tbMaxTorqueHi.Text, GetPath(_emFile)), theFile) Else - OpenFiles(FileRepl(textBox.Text, GetPath(_emFile))) + OpenFiles(FileRepl(tbMaxTorqueHi.Text, GetPath(_emFile))) End If End Sub - Private Sub SelectFile(fileBrowser As FileBrowser, textBox As Control) - If fileBrowser.OpenDialog(FileRepl(textBox.Text, GetPath(_emFile))) Then _ - textBox.Text = GetFilenameWithoutDirectory(fileBrowser.Files(0), GetPath(_emFile)) - End Sub - Private Sub btnMaxTorqueCurveOpen_Click(sender As Object, e As EventArgs) Handles btnMaxTorqueCurveOpenHi.Click - CreateNewFile(tbMaxTorqueHi) - End Sub + Private Sub btnDragCurveOpen_Click(sender As Object, e As EventArgs) Handles btnDragCurveOpenHi.Click + Dim theFile As String + theFile = FileRepl(tbDragTorqueHi.Text, GetPath(_emFile)) - Private Sub btnEmMapOpen_Click(sender As Object, e As EventArgs) Handles btnEmMapOpenHi.Click - CreateNewFile(tbMapHi) - End Sub - - Private Sub btnMaxTorqueCurveOpenLow_Click(sender As Object, e As EventArgs) Handles btnMaxTorqueCurveOpenLow.Click - CreateNewFile(tbMaxTorqueLow) + If theFile <> NoFile AndAlso File.Exists(theFile) Then + OpenFiles(FileRepl(tbDragTorqueHi.Text, GetPath(_emFile)), theFile) + Else + OpenFiles(FileRepl(tbDragTorqueHi.Text, GetPath(_emFile))) + End If End Sub - Private Sub btnDragCurveOpenLow_Click(sender As Object, e As EventArgs) Handles btnDragCurveOpenLow.Click - CreateNewFile(tbDragTorqueLow) - End Sub + Private Sub btnEmMapOpen_Click(sender As Object, e As EventArgs) Handles btnEmMapOpenHi.Click + Dim theFile As String - Private Sub btnEmMapOpenLow_Click(sender As Object, e As EventArgs) Handles btnEmMapOpenLow.Click - CreateNewFile(tbMapLow) - End Sub - - Private Sub btnBrowseMaxTorque_Click(sender As Object, e As EventArgs) Handles btnBrowseMaxTorqueHi.Click - SelectFile(ElectricMachineMaxTorqueFileBrowser, tbMaxTorqueHi) - End Sub + theFile = FileRepl(tbMapHi.Text, GetPath(_emFile)) - Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click - SelectFile(ElectricMachineEfficiencyMapFileBrowser, tbMapHi) + If theFile <> NoFile AndAlso File.Exists(theFile) Then + OpenFiles(FileRepl(tbMapHi.Text, GetPath(_emFile)), theFile) + Else + OpenFiles(FileRepl(tbMapHi.Text, GetPath(_emFile))) + End If End Sub - Private Sub btnBrowseMaxTorqueLow_Click(sender As Object, e As EventArgs) Handles btnBrowseMaxTorqueLow.Click - SelectFile(ElectricMachineMaxTorqueFileBrowser, tbMaxTorqueLow) + Private Sub btnBrowseMaxTorque_Click(sender As Object, e As EventArgs) Handles btnBrowseMaxTorqueHi.Click + If ElectricMachineMaxTorqueFileBrowser.OpenDialog(FileRepl(tbMaxTorqueHi.Text, GetPath(_emFile))) Then _ + tbMaxTorqueHi.Text = GetFilenameWithoutDirectory(ElectricMachineMaxTorqueFileBrowser.Files(0), GetPath(_emFile)) End Sub - Private Sub btnBrowseDragCurveLow_Click(sender As Object, e As EventArgs) Handles btnBrowseDragCurveLow.Click - SelectFile(ElectricMachineDragTorqueFileBrowser, tbDragTorqueLow) + Private Sub btnBrowseDragCurve_Click(sender As Object, e As EventArgs) Handles btnBrowseDragCurveHi.Click + If ElectricMachineDragTorqueFileBrowser.OpenDialog(FileRepl(tbDragTorqueHi.Text, GetPath(_emFile))) Then _ + tbDragTorqueHi.Text = GetFilenameWithoutDirectory(ElectricMachineDragTorqueFileBrowser.Files(0), GetPath(_emFile)) End Sub - Private Sub btnBrowseEmMapLow_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapLow.Click - SelectFile(ElectricMachineEfficiencyMapFileBrowser, tbMapLow) + Private Sub btnBrowseEmMap_Click(sender As Object, e As EventArgs) Handles btnBrowseEmMapHi.Click + If ElectricMachineEfficiencyMapFileBrowser.OpenDialog(FileRepl(tbMapHi.Text, GetPath(_emFile))) Then _ + tbMapHi.Text = GetFilenameWithoutDirectory(ElectricMachineEfficiencyMapFileBrowser.Files(0), GetPath(_emFile)) End Sub - End Class diff --git a/VECTO/GUI/MainForm.Designer.vb b/VECTO/GUI/MainForm.Designer.vb index 883e66e0d823092a94c6834335e9c47b944d5c6d..7c923f9df9a0df96597f4541a0f65800b97d7960 100644 --- a/VECTO/GUI/MainForm.Designer.vb +++ b/VECTO/GUI/MainForm.Designer.vb @@ -144,16 +144,17 @@ Partial Class MainForm ' Me.StatusBAR.ImageScalingSize = New System.Drawing.Size(24, 24) Me.StatusBAR.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripLbStatus, Me.ToolStripProgBarJob, Me.ToolStripProgBarOverall}) - Me.StatusBAR.Location = New System.Drawing.Point(0, 648) + Me.StatusBAR.Location = New System.Drawing.Point(0, 1009) Me.StatusBAR.Name = "StatusBAR" - Me.StatusBAR.Size = New System.Drawing.Size(1045, 22) + Me.StatusBAR.Padding = New System.Windows.Forms.Padding(2, 0, 21, 0) + Me.StatusBAR.Size = New System.Drawing.Size(1568, 22) Me.StatusBAR.TabIndex = 7 Me.StatusBAR.Text = "StatusBAR" ' 'ToolStripLbStatus ' Me.ToolStripLbStatus.Name = "ToolStripLbStatus" - Me.ToolStripLbStatus.Size = New System.Drawing.Size(1030, 17) + Me.ToolStripLbStatus.Size = New System.Drawing.Size(1545, 17) Me.ToolStripLbStatus.Spring = true Me.ToolStripLbStatus.Text = "Status Text" Me.ToolStripLbStatus.TextAlign = System.Drawing.ContentAlignment.MiddleLeft @@ -163,7 +164,7 @@ Partial Class MainForm Me.ToolStripProgBarJob.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right Me.ToolStripProgBarJob.AutoSize = false Me.ToolStripProgBarJob.Name = "ToolStripProgBarJob" - Me.ToolStripProgBarJob.Size = New System.Drawing.Size(100, 16) + Me.ToolStripProgBarJob.Size = New System.Drawing.Size(150, 25) Me.ToolStripProgBarJob.Style = System.Windows.Forms.ProgressBarStyle.Continuous Me.ToolStripProgBarJob.ToolTipText = "overall progress" Me.ToolStripProgBarJob.Visible = false @@ -173,7 +174,7 @@ Partial Class MainForm Me.ToolStripProgBarOverall.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right Me.ToolStripProgBarOverall.AutoSize = false Me.ToolStripProgBarOverall.Name = "ToolStripProgBarOverall" - Me.ToolStripProgBarOverall.Size = New System.Drawing.Size(100, 16) + Me.ToolStripProgBarOverall.Size = New System.Drawing.Size(150, 25) Me.ToolStripProgBarOverall.Style = System.Windows.Forms.ProgressBarStyle.Continuous Me.ToolStripProgBarOverall.ToolTipText = "job progress" Me.ToolStripProgBarOverall.Visible = false @@ -183,12 +184,12 @@ Partial Class MainForm Me.TabControl1.Controls.Add(Me.TabPageGEN) Me.TabControl1.Controls.Add(Me.TabPgOptions) Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill - Me.TabControl1.Location = New System.Drawing.Point(3, 3) + Me.TabControl1.Location = New System.Drawing.Point(4, 5) Me.TabControl1.Margin = New System.Windows.Forms.Padding(0) Me.TabControl1.Name = "TabControl1" Me.TabControl1.Padding = New System.Drawing.Point(0, 0) Me.TabControl1.SelectedIndex = 0 - Me.TabControl1.Size = New System.Drawing.Size(1042, 328) + Me.TabControl1.Size = New System.Drawing.Size(1564, 504) Me.TabControl1.TabIndex = 10 ' 'TabPageGEN @@ -205,10 +206,10 @@ Partial Class MainForm Me.TabPageGEN.Controls.Add(Me.LvGEN) Me.TabPageGEN.Controls.Add(Me.ButtonGENremove) Me.TabPageGEN.Controls.Add(Me.ButtonGENadd) - Me.TabPageGEN.Location = New System.Drawing.Point(4, 22) + Me.TabPageGEN.Location = New System.Drawing.Point(4, 29) Me.TabPageGEN.Margin = New System.Windows.Forms.Padding(0) Me.TabPageGEN.Name = "TabPageGEN" - Me.TabPageGEN.Size = New System.Drawing.Size(1034, 302) + Me.TabPageGEN.Size = New System.Drawing.Size(1556, 471) Me.TabPageGEN.TabIndex = 0 Me.TabPageGEN.Text = "Job Files" Me.TabPageGEN.UseVisualStyleBackColor = true @@ -216,9 +217,10 @@ Partial Class MainForm 'btnImportXML ' Me.btnImportXML.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) - Me.btnImportXML.Location = New System.Drawing.Point(460, 267) + Me.btnImportXML.Location = New System.Drawing.Point(690, 399) + Me.btnImportXML.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnImportXML.Name = "btnImportXML" - Me.btnImportXML.Size = New System.Drawing.Size(115, 30) + Me.btnImportXML.Size = New System.Drawing.Size(172, 46) Me.btnImportXML.TabIndex = 23 Me.btnImportXML.Text = "Import from XML" Me.btnImportXML.UseVisualStyleBackColor = true @@ -228,9 +230,10 @@ Partial Class MainForm ' Me.btnExportXML.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.btnExportXML.Enabled = false - Me.btnExportXML.Location = New System.Drawing.Point(344, 267) + Me.btnExportXML.Location = New System.Drawing.Point(516, 399) + Me.btnExportXML.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btnExportXML.Name = "btnExportXML" - Me.btnExportXML.Size = New System.Drawing.Size(115, 30) + Me.btnExportXML.Size = New System.Drawing.Size(172, 46) Me.btnExportXML.TabIndex = 22 Me.btnExportXML.Text = "Export as XML" Me.btnExportXML.UseVisualStyleBackColor = true @@ -239,9 +242,10 @@ Partial Class MainForm ' Me.Label6.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) Me.Label6.AutoSize = true - Me.Label6.Location = New System.Drawing.Point(814, 268) + Me.Label6.Location = New System.Drawing.Point(1222, 401) + Me.Label6.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label6.Name = "Label6" - Me.Label6.Size = New System.Drawing.Size(217, 13) + Me.Label6.Size = New System.Drawing.Size(324, 20) Me.Label6.TabIndex = 21 Me.Label6.Text = "(Double-Click to Edit, Right-Click for Options)" ' @@ -250,9 +254,10 @@ Partial Class MainForm Me.btStartV3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) Me.btStartV3.Image = Global.TUGraz.VECTO.My.Resources.Resources.Play_icon Me.btStartV3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btStartV3.Location = New System.Drawing.Point(3, 56) + Me.btStartV3.Location = New System.Drawing.Point(4, 86) + Me.btStartV3.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.btStartV3.Name = "btStartV3" - Me.btStartV3.Size = New System.Drawing.Size(108, 50) + Me.btStartV3.Size = New System.Drawing.Size(162, 77) Me.btStartV3.TabIndex = 20 Me.btStartV3.Text = "START" Me.btStartV3.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText @@ -263,7 +268,8 @@ Partial Class MainForm ' Me.LbDecl.AutoSize = true Me.LbDecl.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.LbDecl.Location = New System.Drawing.Point(5, 109) + Me.LbDecl.Location = New System.Drawing.Point(8, 168) + Me.LbDecl.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.LbDecl.Name = "LbDecl" Me.LbDecl.Size = New System.Drawing.Size(107, 13) Me.LbDecl.TabIndex = 19 @@ -273,9 +279,10 @@ Partial Class MainForm 'PictureBox1 ' Me.PictureBox1.Image = CType(resources.GetObject("PictureBox1.Image"),System.Drawing.Image) - Me.PictureBox1.Location = New System.Drawing.Point(3, 3) + Me.PictureBox1.Location = New System.Drawing.Point(4, 5) + Me.PictureBox1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.PictureBox1.Name = "PictureBox1" - Me.PictureBox1.Size = New System.Drawing.Size(108, 47) + Me.PictureBox1.Size = New System.Drawing.Size(162, 72) Me.PictureBox1.TabIndex = 18 Me.PictureBox1.TabStop = false ' @@ -283,9 +290,10 @@ Partial Class MainForm ' Me.BtGENdown.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.BtGENdown.Image = Global.TUGraz.VECTO.My.Resources.Resources.Actions_arrow_down_icon - Me.BtGENdown.Location = New System.Drawing.Point(307, 267) + Me.BtGENdown.Location = New System.Drawing.Point(460, 399) + Me.BtGENdown.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.BtGENdown.Name = "BtGENdown" - Me.BtGENdown.Size = New System.Drawing.Size(30, 30) + Me.BtGENdown.Size = New System.Drawing.Size(45, 46) Me.BtGENdown.TabIndex = 6 Me.ToolTip1.SetToolTip(Me.BtGENdown, "Move job down one row") Me.BtGENdown.UseVisualStyleBackColor = true @@ -294,9 +302,10 @@ Partial Class MainForm ' Me.BtGENup.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.BtGENup.Image = Global.TUGraz.VECTO.My.Resources.Resources.Actions_arrow_up_icon - Me.BtGENup.Location = New System.Drawing.Point(276, 267) + Me.BtGENup.Location = New System.Drawing.Point(414, 399) + Me.BtGENup.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.BtGENup.Name = "BtGENup" - Me.BtGENup.Size = New System.Drawing.Size(30, 30) + Me.BtGENup.Size = New System.Drawing.Size(45, 46) Me.BtGENup.TabIndex = 4 Me.ToolTip1.SetToolTip(Me.BtGENup, "Move job up one row") Me.BtGENup.UseVisualStyleBackColor = true @@ -305,9 +314,10 @@ Partial Class MainForm ' Me.ChBoxAllGEN.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.ChBoxAllGEN.AutoSize = true - Me.ChBoxAllGEN.Location = New System.Drawing.Point(195, 274) + Me.ChBoxAllGEN.Location = New System.Drawing.Point(292, 412) + Me.ChBoxAllGEN.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ChBoxAllGEN.Name = "ChBoxAllGEN" - Me.ChBoxAllGEN.Size = New System.Drawing.Size(70, 17) + Me.ChBoxAllGEN.Size = New System.Drawing.Size(94, 24) Me.ChBoxAllGEN.TabIndex = 16 Me.ChBoxAllGEN.Text = "Select All" Me.ToolTip1.SetToolTip(Me.ChBoxAllGEN, "Select All / None") @@ -326,9 +336,10 @@ Partial Class MainForm Me.LvGEN.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable Me.LvGEN.HideSelection = false Me.LvGEN.LabelEdit = true - Me.LvGEN.Location = New System.Drawing.Point(114, 3) + Me.LvGEN.Location = New System.Drawing.Point(171, 5) + Me.LvGEN.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.LvGEN.Name = "LvGEN" - Me.LvGEN.Size = New System.Drawing.Size(917, 263) + Me.LvGEN.Size = New System.Drawing.Size(1375, 391) Me.LvGEN.TabIndex = 14 Me.LvGEN.UseCompatibleStateImageBehavior = false Me.LvGEN.View = System.Windows.Forms.View.Details @@ -348,9 +359,10 @@ Partial Class MainForm Me.ButtonGENremove.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.ButtonGENremove.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) Me.ButtonGENremove.Image = Global.TUGraz.VECTO.My.Resources.Resources.minus_circle_icon - Me.ButtonGENremove.Location = New System.Drawing.Point(147, 267) + Me.ButtonGENremove.Location = New System.Drawing.Point(220, 399) + Me.ButtonGENremove.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ButtonGENremove.Name = "ButtonGENremove" - Me.ButtonGENremove.Size = New System.Drawing.Size(33, 30) + Me.ButtonGENremove.Size = New System.Drawing.Size(50, 46) Me.ButtonGENremove.TabIndex = 2 Me.ToolTip1.SetToolTip(Me.ButtonGENremove, "Remove selected entries") Me.ButtonGENremove.UseVisualStyleBackColor = true @@ -360,9 +372,10 @@ Partial Class MainForm Me.ButtonGENadd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left),System.Windows.Forms.AnchorStyles) Me.ButtonGENadd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) Me.ButtonGENadd.Image = Global.TUGraz.VECTO.My.Resources.Resources.plus_circle_icon - Me.ButtonGENadd.Location = New System.Drawing.Point(113, 267) + Me.ButtonGENadd.Location = New System.Drawing.Point(170, 399) + Me.ButtonGENadd.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ButtonGENadd.Name = "ButtonGENadd" - Me.ButtonGENadd.Size = New System.Drawing.Size(33, 30) + Me.ButtonGENadd.Size = New System.Drawing.Size(50, 46) Me.ButtonGENadd.TabIndex = 1 Me.ToolTip1.SetToolTip(Me.ButtonGENadd, "Add Job File") Me.ButtonGENadd.UseVisualStyleBackColor = true @@ -370,10 +383,11 @@ Partial Class MainForm 'TabPgOptions ' Me.TabPgOptions.Controls.Add(Me.PanelOptAllg) - Me.TabPgOptions.Location = New System.Drawing.Point(4, 22) + Me.TabPgOptions.Location = New System.Drawing.Point(4, 29) + Me.TabPgOptions.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.TabPgOptions.Name = "TabPgOptions" - Me.TabPgOptions.Padding = New System.Windows.Forms.Padding(3) - Me.TabPgOptions.Size = New System.Drawing.Size(1034, 302) + Me.TabPgOptions.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.TabPgOptions.Size = New System.Drawing.Size(1555, 472) Me.TabPgOptions.TabIndex = 2 Me.TabPgOptions.Text = "Options" Me.TabPgOptions.UseVisualStyleBackColor = true @@ -385,9 +399,10 @@ Partial Class MainForm Me.PanelOptAllg.Controls.Add(Me.GroupBox3) Me.PanelOptAllg.Controls.Add(Me.GroupBox2) Me.PanelOptAllg.Controls.Add(Me.GroupBox1) - Me.PanelOptAllg.Location = New System.Drawing.Point(6, 6) + Me.PanelOptAllg.Location = New System.Drawing.Point(9, 9) + Me.PanelOptAllg.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.PanelOptAllg.Name = "PanelOptAllg" - Me.PanelOptAllg.Size = New System.Drawing.Size(1022, 290) + Me.PanelOptAllg.Size = New System.Drawing.Size(1533, 446) Me.PanelOptAllg.TabIndex = 0 ' 'GroupBox5 @@ -397,9 +412,11 @@ Partial Class MainForm Me.GroupBox5.Controls.Add(Me.tbMinSpeedLAC) Me.GroupBox5.Controls.Add(Me.Label3) Me.GroupBox5.Controls.Add(Me.Label2) - Me.GroupBox5.Location = New System.Drawing.Point(183, 57) + Me.GroupBox5.Location = New System.Drawing.Point(274, 88) + Me.GroupBox5.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.GroupBox5.Name = "GroupBox5" - Me.GroupBox5.Size = New System.Drawing.Size(260, 100) + Me.GroupBox5.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.GroupBox5.Size = New System.Drawing.Size(390, 154) Me.GroupBox5.TabIndex = 20 Me.GroupBox5.TabStop = false Me.GroupBox5.Text = "Look-Ahead Coasting Override" @@ -407,9 +424,10 @@ Partial Class MainForm 'Label5 ' Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, CType(0,Byte)) - Me.Label5.Location = New System.Drawing.Point(7, 48) + Me.Label5.Location = New System.Drawing.Point(10, 74) + Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(247, 36) + Me.Label5.Size = New System.Drawing.Size(370, 55) Me.Label5.TabIndex = 4 Me.Label5.Text = "Overrides Look-Ahead Coasting in declaration mode. Leave empty to use default beh"& _ "aviour." @@ -417,33 +435,37 @@ Partial Class MainForm 'Label4 ' Me.Label4.AutoSize = true - Me.Label4.Location = New System.Drawing.Point(10, 44) + Me.Label4.Location = New System.Drawing.Point(15, 68) + Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label4.Name = "Label4" - Me.Label4.Size = New System.Drawing.Size(0, 13) + Me.Label4.Size = New System.Drawing.Size(0, 20) Me.Label4.TabIndex = 3 ' 'tbMinSpeedLAC ' - Me.tbMinSpeedLAC.Location = New System.Drawing.Point(96, 17) + Me.tbMinSpeedLAC.Location = New System.Drawing.Point(144, 26) + Me.tbMinSpeedLAC.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbMinSpeedLAC.Name = "tbMinSpeedLAC" - Me.tbMinSpeedLAC.Size = New System.Drawing.Size(56, 20) + Me.tbMinSpeedLAC.Size = New System.Drawing.Size(82, 26) Me.tbMinSpeedLAC.TabIndex = 2 ' 'Label3 ' Me.Label3.AutoSize = true - Me.Label3.Location = New System.Drawing.Point(158, 20) + Me.Label3.Location = New System.Drawing.Point(237, 31) + Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(38, 13) + Me.Label3.Size = New System.Drawing.Size(51, 20) Me.Label3.TabIndex = 1 Me.Label3.Text = "[km/h]" ' 'Label2 ' Me.Label2.AutoSize = true - Me.Label2.Location = New System.Drawing.Point(7, 19) + Me.Label2.Location = New System.Drawing.Point(10, 29) + Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0) Me.Label2.Name = "Label2" - Me.Label2.Size = New System.Drawing.Size(61, 13) + Me.Label2.Size = New System.Drawing.Size(89, 20) Me.Label2.TabIndex = 1 Me.Label2.Text = "Min Speed:" ' @@ -451,9 +473,11 @@ Partial Class MainForm ' Me.GroupBox4.Controls.Add(Me.BtTCfileBrowse) Me.GroupBox4.Controls.Add(Me.tbOutputFolder) - Me.GroupBox4.Location = New System.Drawing.Point(183, 4) + Me.GroupBox4.Location = New System.Drawing.Point(274, 6) + Me.GroupBox4.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.GroupBox4.Name = "GroupBox4" - Me.GroupBox4.Size = New System.Drawing.Size(260, 46) + Me.GroupBox4.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.GroupBox4.Size = New System.Drawing.Size(390, 71) Me.GroupBox4.TabIndex = 19 Me.GroupBox4.TabStop = false Me.GroupBox4.Text = "Output Directory" @@ -461,18 +485,20 @@ Partial Class MainForm 'BtTCfileBrowse ' Me.BtTCfileBrowse.Image = Global.TUGraz.VECTO.My.Resources.Resources.Open_icon - Me.BtTCfileBrowse.Location = New System.Drawing.Point(227, 14) + Me.BtTCfileBrowse.Location = New System.Drawing.Point(340, 22) + Me.BtTCfileBrowse.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.BtTCfileBrowse.Name = "BtTCfileBrowse" - Me.BtTCfileBrowse.Size = New System.Drawing.Size(24, 24) + Me.BtTCfileBrowse.Size = New System.Drawing.Size(36, 37) Me.BtTCfileBrowse.TabIndex = 27 Me.BtTCfileBrowse.TabStop = false Me.BtTCfileBrowse.UseVisualStyleBackColor = true ' 'tbOutputFolder ' - Me.tbOutputFolder.Location = New System.Drawing.Point(6, 17) + Me.tbOutputFolder.Location = New System.Drawing.Point(9, 26) + Me.tbOutputFolder.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.tbOutputFolder.Name = "tbOutputFolder" - Me.tbOutputFolder.Size = New System.Drawing.Size(215, 20) + Me.tbOutputFolder.Size = New System.Drawing.Size(320, 26) Me.tbOutputFolder.TabIndex = 0 ' 'GroupBox3 @@ -480,9 +506,11 @@ Partial Class MainForm Me.GroupBox3.Controls.Add(Me.cbSaveVectoRunData) Me.GroupBox3.Controls.Add(Me.cbActVmod) Me.GroupBox3.Controls.Add(Me.cbValidateRunData) - Me.GroupBox3.Location = New System.Drawing.Point(3, 177) + Me.GroupBox3.Location = New System.Drawing.Point(4, 272) + Me.GroupBox3.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.GroupBox3.Name = "GroupBox3" - Me.GroupBox3.Size = New System.Drawing.Size(173, 110) + Me.GroupBox3.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.GroupBox3.Size = New System.Drawing.Size(260, 169) Me.GroupBox3.TabIndex = 18 Me.GroupBox3.TabStop = false Me.GroupBox3.Text = "Misc" @@ -490,18 +518,20 @@ Partial Class MainForm 'cbSaveVectoRunData ' Me.cbSaveVectoRunData.AutoSize = true - Me.cbSaveVectoRunData.Location = New System.Drawing.Point(7, 86) + Me.cbSaveVectoRunData.Location = New System.Drawing.Point(10, 132) + Me.cbSaveVectoRunData.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.cbSaveVectoRunData.Name = "cbSaveVectoRunData" - Me.cbSaveVectoRunData.Size = New System.Drawing.Size(166, 17) + Me.cbSaveVectoRunData.Size = New System.Drawing.Size(238, 24) Me.cbSaveVectoRunData.TabIndex = 19 Me.cbSaveVectoRunData.Text = "Export ModelData (EXPERT!)" Me.cbSaveVectoRunData.UseVisualStyleBackColor = true ' 'cbActVmod ' - Me.cbActVmod.Location = New System.Drawing.Point(6, 34) + Me.cbActVmod.Location = New System.Drawing.Point(9, 52) + Me.cbActVmod.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.cbActVmod.Name = "cbActVmod" - Me.cbActVmod.Size = New System.Drawing.Size(167, 52) + Me.cbActVmod.Size = New System.Drawing.Size(250, 80) Me.cbActVmod.TabIndex = 18 Me.cbActVmod.Text = "Output values in vmod at beginning and end of simulation interval (EXPERT!)" Me.cbActVmod.UseVisualStyleBackColor = true @@ -511,9 +541,10 @@ Partial Class MainForm Me.cbValidateRunData.AutoSize = true Me.cbValidateRunData.Checked = true Me.cbValidateRunData.CheckState = System.Windows.Forms.CheckState.Checked - Me.cbValidateRunData.Location = New System.Drawing.Point(6, 19) + Me.cbValidateRunData.Location = New System.Drawing.Point(9, 29) + Me.cbValidateRunData.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.cbValidateRunData.Name = "cbValidateRunData" - Me.cbValidateRunData.Size = New System.Drawing.Size(90, 17) + Me.cbValidateRunData.Size = New System.Drawing.Size(125, 24) Me.cbValidateRunData.TabIndex = 17 Me.cbValidateRunData.Text = "Validate Data" Me.cbValidateRunData.UseVisualStyleBackColor = true @@ -522,9 +553,11 @@ Partial Class MainForm ' Me.GroupBox2.Controls.Add(Me.ChBoxModOut) Me.GroupBox2.Controls.Add(Me.ChBoxMod1Hz) - Me.GroupBox2.Location = New System.Drawing.Point(3, 82) + Me.GroupBox2.Location = New System.Drawing.Point(4, 126) + Me.GroupBox2.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.GroupBox2.Name = "GroupBox2" - Me.GroupBox2.Size = New System.Drawing.Size(173, 89) + Me.GroupBox2.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.GroupBox2.Size = New System.Drawing.Size(260, 137) Me.GroupBox2.TabIndex = 16 Me.GroupBox2.TabStop = false Me.GroupBox2.Text = "Output" @@ -534,9 +567,10 @@ Partial Class MainForm Me.ChBoxModOut.AutoSize = true Me.ChBoxModOut.Checked = true Me.ChBoxModOut.CheckState = System.Windows.Forms.CheckState.Checked - Me.ChBoxModOut.Location = New System.Drawing.Point(6, 19) + Me.ChBoxModOut.Location = New System.Drawing.Point(9, 29) + Me.ChBoxModOut.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ChBoxModOut.Name = "ChBoxModOut" - Me.ChBoxModOut.Size = New System.Drawing.Size(115, 17) + Me.ChBoxModOut.Size = New System.Drawing.Size(163, 24) Me.ChBoxModOut.TabIndex = 0 Me.ChBoxModOut.Text = "Write modal results" Me.ChBoxModOut.UseVisualStyleBackColor = true @@ -544,9 +578,10 @@ Partial Class MainForm 'ChBoxMod1Hz ' Me.ChBoxMod1Hz.AutoSize = true - Me.ChBoxMod1Hz.Location = New System.Drawing.Point(6, 42) + Me.ChBoxMod1Hz.Location = New System.Drawing.Point(9, 65) + Me.ChBoxMod1Hz.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.ChBoxMod1Hz.Name = "ChBoxMod1Hz" - Me.ChBoxMod1Hz.Size = New System.Drawing.Size(121, 17) + Me.ChBoxMod1Hz.Size = New System.Drawing.Size(171, 24) Me.ChBoxMod1Hz.TabIndex = 16 Me.ChBoxMod1Hz.Text = "Modal results in 1Hz" Me.ChBoxMod1Hz.UseVisualStyleBackColor = true @@ -555,9 +590,11 @@ Partial Class MainForm ' Me.GroupBox1.Controls.Add(Me.RbDev) Me.GroupBox1.Controls.Add(Me.RbDecl) - Me.GroupBox1.Location = New System.Drawing.Point(3, 3) + Me.GroupBox1.Location = New System.Drawing.Point(4, 5) + Me.GroupBox1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.GroupBox1.Name = "GroupBox1" - Me.GroupBox1.Size = New System.Drawing.Size(173, 72) + Me.GroupBox1.Padding = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.GroupBox1.Size = New System.Drawing.Size(260, 111) Me.GroupBox1.TabIndex = 15 Me.GroupBox1.TabStop = false Me.GroupBox1.Text = "Mode" @@ -566,9 +603,10 @@ Partial Class MainForm ' Me.RbDev.AutoSize = true Me.RbDev.Checked = true - Me.RbDev.Location = New System.Drawing.Point(6, 42) + Me.RbDev.Location = New System.Drawing.Point(9, 65) + Me.RbDev.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.RbDev.Name = "RbDev" - Me.RbDev.Size = New System.Drawing.Size(111, 17) + Me.RbDev.Size = New System.Drawing.Size(156, 24) Me.RbDev.TabIndex = 1 Me.RbDev.TabStop = true Me.RbDev.Text = "Engineering Mode" @@ -577,9 +615,10 @@ Partial Class MainForm 'RbDecl ' Me.RbDecl.AutoSize = true - Me.RbDecl.Location = New System.Drawing.Point(6, 19) + Me.RbDecl.Location = New System.Drawing.Point(9, 29) + Me.RbDecl.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) Me.RbDecl.Name = "RbDecl" - Me.RbDecl.Size = New System.Drawing.Size(109, 17) + Me.RbDecl.Size = New System.Drawing.Size(152, 24) Me.RbDecl.TabIndex = 0 Me.RbDecl.TabStop = true Me.RbDecl.Text = "Declaration Mode" @@ -638,7 +677,7 @@ Partial Class MainForm Me.LvMsg.Location = New System.Drawing.Point(0, 0) Me.LvMsg.Margin = New System.Windows.Forms.Padding(0) Me.LvMsg.Name = "LvMsg" - Me.LvMsg.Size = New System.Drawing.Size(1045, 281) + Me.LvMsg.Size = New System.Drawing.Size(1568, 433) Me.LvMsg.TabIndex = 0 Me.LvMsg.UseCompatibleStateImageBehavior = false Me.LvMsg.View = System.Windows.Forms.View.Details @@ -663,7 +702,7 @@ Partial Class MainForm Me.SplitContainer1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ Or System.Windows.Forms.AnchorStyles.Left) _ Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) - Me.SplitContainer1.Location = New System.Drawing.Point(0, 27) + Me.SplitContainer1.Location = New System.Drawing.Point(0, 42) Me.SplitContainer1.Margin = New System.Windows.Forms.Padding(0) Me.SplitContainer1.Name = "SplitContainer1" Me.SplitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal @@ -671,13 +710,14 @@ Partial Class MainForm 'SplitContainer1.Panel1 ' Me.SplitContainer1.Panel1.Controls.Add(Me.TabControl1) - Me.SplitContainer1.Panel1.Padding = New System.Windows.Forms.Padding(3, 3, 0, 2) + Me.SplitContainer1.Panel1.Padding = New System.Windows.Forms.Padding(4, 5, 0, 3) ' 'SplitContainer1.Panel2 ' Me.SplitContainer1.Panel2.Controls.Add(Me.LvMsg) - Me.SplitContainer1.Size = New System.Drawing.Size(1045, 618) - Me.SplitContainer1.SplitterDistance = 333 + Me.SplitContainer1.Size = New System.Drawing.Size(1568, 951) + Me.SplitContainer1.SplitterDistance = 512 + Me.SplitContainer1.SplitterWidth = 6 Me.SplitContainer1.TabIndex = 12 ' 'ToolStrip1 @@ -688,7 +728,8 @@ Partial Class MainForm Me.ToolStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripBtNew, Me.ToolStripBtOpen, Me.ToolStripSeparator2, Me.ToolStripDrDnBtTools, Me.ToolStripDrDnBtInfo}) Me.ToolStrip1.Location = New System.Drawing.Point(0, 0) Me.ToolStrip1.Name = "ToolStrip1" - Me.ToolStrip1.Size = New System.Drawing.Size(1045, 31) + Me.ToolStrip1.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0) + Me.ToolStrip1.Size = New System.Drawing.Size(1568, 31) Me.ToolStrip1.TabIndex = 11 Me.ToolStrip1.Text = "ToolStrip1" ' @@ -884,14 +925,15 @@ Partial Class MainForm 'MainForm ' Me.AcceptButton = Me.btStartV3 - Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) + Me.AutoScaleDimensions = New System.Drawing.SizeF(9!, 20!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(1045, 670) + Me.ClientSize = New System.Drawing.Size(1568, 1031) Me.Controls.Add(Me.ToolStrip1) Me.Controls.Add(Me.SplitContainer1) Me.Controls.Add(Me.StatusBAR) Me.Icon = CType(resources.GetObject("$this.Icon"),System.Drawing.Icon) - Me.MinimumSize = New System.Drawing.Size(785, 485) + Me.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5) + Me.MinimumSize = New System.Drawing.Size(1170, 725) Me.Name = "MainForm" Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen Me.Text = "VECTO" diff --git a/VECTO/GUI/MainForm.vb b/VECTO/GUI/MainForm.vb index a0faa2a09ec87a5287dd189b0187fbc4c9884a97..005ca70e4616cefb6a61b5c3e26c1b15f03e35ce 100644 --- a/VECTO/GUI/MainForm.vb +++ b/VECTO/GUI/MainForm.vb @@ -49,6 +49,7 @@ Imports TUGraz.VectoCommon.Utils Imports TUGraz.VectoCore Imports TUGraz.VectoCore.InputData.FileIO.XML Imports TUGraz.VectoCore.Models.Simulation +Imports TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory Imports TUGraz.VectoCore.Models.SimulationComponent.Data Imports TUGraz.VectoCore.OutputData Imports TUGraz.VectoCore.OutputData.FileIO @@ -59,7 +60,7 @@ Imports TUGraz.VectoCore.Utils ''' </summary> ''' <remarks></remarks> - Public Class MainForm +Public Class MainForm Private _jobListView As FileListView Private _cycleListView As FileListView @@ -77,7 +78,7 @@ Imports TUGraz.VectoCore.Utils #Region "SLEEP Control - Prevent sleep while VECTO is running" - Private Declare Function SetThreadExecutionState Lib "kernel32"(esFlags As Long) As Long + Private Declare Function SetThreadExecutionState Lib "kernel32" (esFlags As Long) As Long Private Shared Sub AllowSleepOff() #If Not PLATFORM = "x86" Then @@ -118,7 +119,7 @@ Imports TUGraz.VectoCore.Utils JobfileFileBrowser = New FileBrowser("vecto") VehicleFileBrowser = New FileBrowser("vveh") VehicleXMLFileBrowser = New FileBrowser("vveh_xml") - ManRXMLFileBrowser = new FileBrowser("xml") + ManRXMLFileBrowser = New FileBrowser("xml") FuelConsumptionMapFileBrowser = New FileBrowser("vmap") DrivingCycleFileBrowser = New FileBrowser("vdri") FullLoadCurveFileBrowser = New FileBrowser("vfld") @@ -138,7 +139,7 @@ Imports TUGraz.VectoCore.Utils CrossWindCorrectionFileBrowser = New FileBrowser("vcdx") ElectricMotorFileBrowser = New FileBrowser("vem") REESSFileBrowser = New FileBrowser("vreess") - EmADCLossMapFileBrowser = new FileBrowser("vtlm") + EmADCLossMapFileBrowser = New FileBrowser("vtlm") DriverDecisionFactorVelocityDropFileBrowser = New FileBrowser("DfVelocityDrop") DriverDecisionFactorTargetSpeedFileBrowser = New FileBrowser("DfTargetSpeed") DriverDecisionFactorVelocityDropFileBrowser.Extensions = New String() {"csv"} @@ -148,12 +149,12 @@ Imports TUGraz.VectoCore.Utils ElectricMachineMaxTorqueFileBrowser = New FileBrowser("vemp") ElectricMachineEfficiencyMapFileBrowser = New FileBrowser("vemo") HCUFileBrowser = New FileBrowser("vhctl") - BusAuxFileBrowser = new FileBrowser(".vaux") - BusAuxCompressorMapFileBrowser = new FileBrowser(".acmp") - BatteryMaxCurrentCurveFileBrowser = new FileBrowser("vimax") + BusAuxFileBrowser = New FileBrowser(".vaux") + BusAuxCompressorMapFileBrowser = New FileBrowser(".acmp") + BatteryMaxCurrentCurveFileBrowser = New FileBrowser("vimax") BatteryInternalResistanceCurveFileBrowser = New FileBrowser("vbatr") BatterySoCCurveFileBrowser = New FileBrowser("vbatv") - PropulsionTorqueLimitFileBrowser = new FileBrowser("vtqp") + PropulsionTorqueLimitFileBrowser = New FileBrowser("vtqp") ModalResultsFileBrowser = New FileBrowser("vmod") @@ -176,25 +177,25 @@ Imports TUGraz.VectoCore.Utils TransmissionLossMapFileBrowser.Extensions = New String() {"vtlm"} PtoLossMapFileBrowser.Extensions = New String() {"vptol"} PTODrivingCycleStandstillFileBrowser.Extensions = New String() {"vptoc"} - PTODrivingCycleDrivingFileBrowser.Extensions = New String() { "vptor" } + PTODrivingCycleDrivingFileBrowser.Extensions = New String() {"vptor"} TorqueConverterFileBrowser.Extensions = New String() {"vtcc"} TorqueConverterShiftPolygonFileBrowser.Extensions = New String() {"vgbs"} CrossWindCorrectionFileBrowser.Extensions = New String() {"vcdv", "vcdb"} ElectricMotorFileBrowser.Extensions = New String() {"vem"} REESSFileBrowser.Extensions = New String() {"vreess"} - EmADCLossMapFileBrowser.Extensions = new String(){"vtlm"} + EmADCLossMapFileBrowser.Extensions = New String() {"vtlm"} ElectricMachineDragTorqueFileBrowser.Extensions = New String() {"vemd"} ElectricMachineMaxTorqueFileBrowser.Extensions = New String() {"vemp"} ElectricMachineEfficiencyMapFileBrowser.Extensions = New String() {"vemo"} - BatteryMaxCurrentCurveFileBrowser.Extensions = new String() {"vimax"} + BatteryMaxCurrentCurveFileBrowser.Extensions = New String() {"vimax"} BatteryInternalResistanceCurveFileBrowser.Extensions = New String() {"vbatr"} BatterySoCCurveFileBrowser.Extensions = New String() {"vbatv"} HCUFileBrowser.Extensions = New String() {"vhctl"} - BusAuxFileBrowser.Extensions = New String(){"vaux"} - BusAuxCompressorMapFileBrowser.Extensions = new String(){"acmp"} - PropulsionTorqueLimitFileBrowser.Extensions = new String(){"vtqp"} + BusAuxFileBrowser.Extensions = New String() {"vaux"} + BusAuxCompressorMapFileBrowser.Extensions = New String() {"acmp"} + PropulsionTorqueLimitFileBrowser.Extensions = New String() {"vtqp"} ModalResultsFileBrowser.Extensions = New String() {"vmod"} End Sub @@ -269,17 +270,17 @@ Imports TUGraz.VectoCore.Utils 'FileLists - _jobListView = New FileListView(path.Combine(MyConfPath, CONFIG_JOBLIST_FILE)) + _jobListView = New FileListView(Path.Combine(MyConfPath, CONFIG_JOBLIST_FILE)) _jobListView.LVbox = LvGEN - _cycleListView = New FileListView(path.Combine(MyConfPath, CONFIG_CYCLELIST_FILE)) + _cycleListView = New FileListView(Path.Combine(MyConfPath, CONFIG_CYCLELIST_FILE)) _jobListView.LoadList() LoadOptions() 'Resize columns ... after Loading the @file-lists - LvGEN.Columns(1).Width = - 2 - LvMsg.Columns(2).Width = - 2 + LvGEN.Columns(1).Width = -2 + LvMsg.Columns(2).Width = -2 'Initialize BackgroundWorker @@ -541,7 +542,7 @@ Imports TUGraz.VectoCore.Utils lastindx = LvGEN.SelectedIndices(LvGEN.SelectedItems.Count - 1) - For i = UBound(selIx) To 0 Step - 1 + For i = UBound(selIx) To 0 Step -1 LvGEN.Items.RemoveAt(selIx(i)) Next @@ -610,14 +611,14 @@ Imports TUGraz.VectoCore.Utils Dim p As Integer Dim f As Integer Dim fList As String() - Dim fListDim As Integer = - 1 + Dim fListDim As Integer = -1 Dim listViewItem As ListViewItem 'If VECTO runs: Cancel operation (because Mode-change during calculation is not very clever) If VectoWorkerV3.IsBusy Then Exit Sub pDim = UBound(path) - ReDim fList(0) 'um Nullverweisausnahme-Warnung zu verhindern + ReDim fList(0) 'um Nullverweisausnahme-Warnung zu verhindern '******************************************* Begin Update '******************************************* LvGEN.BeginUpdate() @@ -659,13 +660,13 @@ Imports TUGraz.VectoCore.Utils End If 'Otherwise: Add File (without WorkDir) - listViewItem = New ListViewItem(path(p)) 'fFileWD(Path(p))) + listViewItem = New ListViewItem(path(p)) 'fFileWD(Path(p))) listViewItem.SubItems.Add(" ") listViewItem.Checked = True listViewItem.Selected = True LvGEN.Items.Add(listViewItem) listViewItem.EnsureVisible() - lbFound: +lbFound: Next LvGEN.EndUpdate() @@ -937,8 +938,8 @@ Imports TUGraz.VectoCore.Utils Status("Launching VECTO ...") JobFileList.Clear() JobFileList.AddRange( - From listViewItem As ListViewItem In LvGEN.CheckedItems.Cast (Of ListViewItem)() - Select fFileRepl = FileRepl(listViewItem.SubItems(0).Text)) + From listViewItem As ListViewItem In LvGEN.CheckedItems.Cast(Of ListViewItem)() + Select fFileRepl = FileRepl(listViewItem.SubItems(0).Text)) SetOptions() Cfg.Save() @@ -978,7 +979,7 @@ Imports TUGraz.VectoCore.Utils mode = ExecutionMode.Declaration Else mode = ExecutionMode.Engineering - Physics.AirDensity = Cfg.AirDensity.SI (Of KilogramPerCubicMeter)() + Physics.AirDensity = Cfg.AirDensity.SI(Of KilogramPerCubicMeter)() End If 'dictionary of run-identifiers to fileWriters (used for output directory of modfile) @@ -999,16 +1000,16 @@ Imports TUGraz.VectoCore.Utils Case VectoCore.Configuration.Constants.FileExtensions.VectoJobFile input = JSONInputDataFactory.ReadJsonJob(jobFile) Case ".xml" - Dim xDocument As XDocument = xDocument.Load(jobFile) + Dim xDocument As XDocument = XDocument.Load(jobFile) Dim rootNode As String = If(xDocument Is Nothing, "", xDocument.Root.Name.LocalName) - Dim kernel as IKernel = New StandardKernel(new VectoNinjectModule) - Dim xmlInputReader as IXMLInputDataReader = kernel.Get(Of IXMLInputDataReader) + Dim kernel As IKernel = New StandardKernel(New VectoNinjectModule) + Dim xmlInputReader As IXMLInputDataReader = kernel.Get(Of IXMLInputDataReader) Select Case rootNode Case XMLNames.VectoInputEngineering input = xmlInputReader.CreateEngineering(jobFile) Case XMLNames.VectoInputDeclaration Using reader As XmlReader = XmlReader.Create(jobFile) - input = xmlInputReader.CreateDeclaration(reader) + input = xmlInputReader.CreateDeclaration(reader) End Using End Select End Select @@ -1024,7 +1025,7 @@ Imports TUGraz.VectoCore.Utils Dim outFile As String = GetOutputDirectory(jobFile) Dim fileWriter As FileOutputWriter = New FileOutputWriter(outFile) - Dim runsFactory As SimulatorFactory = New SimulatorFactory(mode, input, fileWriter) + Dim runsFactory As ISimulatorFactory = SimulatorFactory.CreateSimulatorFactory(mode, input, fileWriter) runsFactory.WriteModalResults = Cfg.ModOut runsFactory.ModalResults1Hz = Cfg.Mod1Hz runsFactory.Validate = cbValidateRunData.Checked @@ -1081,7 +1082,7 @@ Imports TUGraz.VectoCore.Utils Return End If - Dim progress As Dictionary(Of Integer, JobContainer.ProgressEntry) = jobContainer.GetProgress() + Dim progress As IDictionary(Of Integer, JobContainer.ProgressEntry) = jobContainer.GetProgress() Dim sumProgress As Double = progress.Sum(Function(pair) pair.Value.Progress) Dim duration As Double = (DateTime.Now() - start).TotalSeconds diff --git a/VECTO/GUI/VectoVTPJobForm.vb b/VECTO/GUI/VectoVTPJobForm.vb index 5e668ea080ed9f0a85458aff63a23492a053cc79..007d14e692a36f23a9b5de75bb861f76ed4bf9fb 100644 --- a/VECTO/GUI/VectoVTPJobForm.vb +++ b/VECTO/GUI/VectoVTPJobForm.vb @@ -35,12 +35,6 @@ Public Class VectoVTPJobForm Public VectoFile As String Private _changed As Boolean = False - Private _pgDriver As TabPage - - Private _pgDriverOn As Boolean = True - - Private _auxDialog As VehicleAuxiliariesDialog - Dim _xmlInputReader as IXMLInputDataReader Enum AuxViewColumns @@ -56,9 +50,6 @@ Public Class VectoVTPJobForm Dim kernel as IKernel = New StandardKernel(new VectoNinjectModule) _xmlInputReader = kernel.Get(Of IXMLInputDataReader) - _auxDialog = New VehicleAuxiliariesDialog - - LvAux.Columns(AuxViewColumns.AuxInputOrTech).Width = - 2 LvAux.Columns(AuxViewColumns.AuxInputOrTech).Text = "Technology" diff --git a/VECTO/GUI/VehicleForm.vb b/VECTO/GUI/VehicleForm.vb index 659ba9de93507f0f3328f8b0b1246f741f5260c2..0cf78a6137a92906d9969f11a9e86a03b1149bc2 100644 --- a/VECTO/GUI/VehicleForm.vb +++ b/VECTO/GUI/VehicleForm.vb @@ -508,8 +508,9 @@ Public Class VehicleForm If (vehicle.VehicleType = VectoSimulationJobType.ParallelHybridVehicle) Then 'tbMaxDrivetrainPwr.Text = vehicle.MaxDrivetrainPower.ConvertToKiloWatt().Value.ToXMLFormat(2) - tbEmTorqueLimits.Text = if (Not vehicle.ElectricMotorTorqueLimits Is Nothing, GetRelativePath(vehicle.ElectricMotorTorqueLimits.Source, basePath), "") - tbPropulsionTorqueLimit.Text = if (Not vehicle.MaxPropulsionTorque Is Nothing, GetRelativePath(vehicle.MaxPropulsionTorque.Source, basePath), "") + 'ToDo ElectricMotorTorqueLimits changed + 'tbEmTorqueLimits.Text = if (Not vehicle.ElectricMotorTorqueLimits Is Nothing, GetRelativePath(vehicle.ElectricMotorTorqueLimits.Source, basePath), "") + tbPropulsionTorqueLimit.Text = if (Not vehicle.BoostingLimitations Is Nothing, GetRelativePath(vehicle.BoostingLimitations.Source, basePath), "") End If DeclInit() diff --git a/VECTO/Input Files/Battery.vb b/VECTO/Input Files/Battery.vb index aae3abcef389e13295ff88f803b9cc32ed5247a6..6760c01cc2bc00c304ab460096c4676472582120 100644 --- a/VECTO/Input Files/Battery.vb +++ b/VECTO/Input Files/Battery.vb @@ -211,24 +211,30 @@ Public Class Battery End Get End Property - Public ReadOnly Property MinSOC As Double Implements IBatteryPackDeclarationInputData.MinSOC + Public ReadOnly Property MinSOC As Double? Implements IBatteryPackDeclarationInputData.MinSOC Get Return BatMinSoc / 100.0 End Get End Property - Public ReadOnly Property MaxSOC As Double Implements IBatteryPackDeclarationInputData.MaxSOC + Public ReadOnly Property MaxSOC As Double? Implements IBatteryPackDeclarationInputData.MaxSOC Get Return BatMaxSoc / 100.0 End Get End Property + Public ReadOnly Property BatteryType As BatteryType Implements IBatteryPackDeclarationInputData.BatteryType + Public ReadOnly Property Capacity As AmpereSecond Implements IBatteryPackDeclarationInputData.Capacity Get Return BatCapacity.SI(Unit.SI.Ampere.Hour).Cast(Of AmpereSecond) End Get End Property + Public ReadOnly Property ConnectorsSubsystemsIncluded As Boolean Implements IBatteryPackDeclarationInputData.ConnectorsSubsystemsIncluded + Public ReadOnly Property JunctionboxIncluded As Boolean Implements IBatteryPackDeclarationInputData.JunctionboxIncluded + Public ReadOnly Property TestingTemperature As Kelvin Implements IBatteryPackDeclarationInputData.TestingTemperature + Public ReadOnly Property InternalResistanceCurve As TableData Implements IBatteryPackDeclarationInputData.InternalResistanceCurve Get If Not File.Exists(_riCurvePath.FullPath) Then _ diff --git a/VECTO/Input Files/ElectricMachine.vb b/VECTO/Input Files/ElectricMachine.vb index 6c0136cbb970ff63155f44a665944de5f825acac..f02becf574194693f6949440cb808e22cd8e187c 100644 --- a/VECTO/Input Files/ElectricMachine.vb +++ b/VECTO/Input Files/ElectricMachine.vb @@ -7,6 +7,7 @@ Imports TUGraz.VectoCommon.Exceptions Imports TUGraz.VectoCommon.InputData Imports TUGraz.VectoCommon.Models Imports TUGraz.VectoCommon.Utils +Imports TUGraz.VectoCore.InputData.FileIO.JSON Imports TUGraz.VectoCore.InputData.Impl Imports TUGraz.VectoCore.Models.SimulationComponent.Data Imports TUGraz.VectoCore.Utils @@ -17,11 +18,12 @@ Public Class ElectricMachine public VoltageLevelLow As Double Private ReadOnly _fullLoadCurvePathLow As SubPath - Private ReadOnly _dragCurvePath As SubPath + Private ReadOnly _dragCurvePathLow As SubPath Private ReadOnly _efficiencyMapLow As SubPath public VoltageLevelHigh as Double Private ReadOnly _fullLoadCurvePathHi As SubPath + Private ReadOnly _dragCurvePathHi As SubPath Private ReadOnly _efficiencyMapHi As SubPath ''' <summary> @@ -38,11 +40,17 @@ Public Class ElectricMachine Public ModelName As String Public MotorInertia As Double - Public PeakPowerTime As Double - Public ContTq As Double - Public RatedSpeed As Double - Public OvlTq As Double - Public OvlSpeed As Double + Public PeakPowerTimeLo As Double + Public ContTqLo As Double + Public RatedSpeedLo As Double + Public OvlTqLo As Double + Public OvlSpeedLo As Double + + Public PeakPowerTimeHi As Double + Public ContTqHi As Double + Public RatedSpeedHi As Double + Public OvlTqHi As Double + Public OvlSpeedHi As Double ''' <summary> ''' New instance. Initialise @@ -53,11 +61,12 @@ Public Class ElectricMachine _filePath = "" _fullLoadCurvePathLow = New SubPath - _dragCurvePath = New SubPath() + _dragCurvePathLow = New SubPath() _efficiencyMapLow = New SubPath() _fullLoadCurvePathHi = New SubPath - _efficiencyMapHi = New SubPath() + _dragCurvePathHi = New SubPath() + _efficiencyMapHi = New SubPath() SetDefault() End Sub @@ -90,7 +99,7 @@ Public Class ElectricMachine writer.SaveElectricMotor(Me, _filePath, Cfg.DeclMode) Catch ex As Exception - MsgBox("Failed to write Engine file: " + ex.Message) + MsgBox("Faled to write Engine file: " + ex.Message) Return False End Try Return True @@ -211,17 +220,17 @@ Public Class ElectricMachine Return VectoCSVFile.Read(_fullLoadCurvePathLow.FullPath) End Get End Property - 'protected ReadOnly Property DragCurvLow As TableData - ' Get - ' If Not File.Exists(_dragCurvePathLow.FullPath) Then _ - ' Throw New VectoException("Drag Curve is missing or invalid") - ' Return VectoCSVFile.Read(_dragCurvePathLow.FullPath) - ' End Get - 'End Property + protected ReadOnly Property DragCurvLow As TableData + Get + If Not File.Exists(_dragCurvePathLow.FullPath) Then _ + Throw New VectoException("Drag Curve is missing or invalid") + Return VectoCSVFile.Read(_dragCurvePathLow.FullPath) + End Get + End Property protected ReadOnly Property EfficiencyMapLow As TableData Get If Not File.Exists(_efficiencyMapLow.FullPath) Then _ - Throw New VectoException("EfficiencyMap is missing or invalid") + Throw New VectoException("Drag Curve is missing or invalid") Return VectoCSVFile.Read(_efficiencyMapLow.FullPath) End Get End Property @@ -232,43 +241,48 @@ Public Class ElectricMachine Return VectoCSVFile.Read(_fullLoadCurvePathHi.FullPath) End Get End Property - 'protected ReadOnly Property DragCurvHi As TableData - ' Get - ' If Not File.Exists(_dragCurvePathHi.FullPath) Then _ - ' Throw New VectoException("Drag Curve is missing or invalid") - ' Return VectoCSVFile.Read(_dragCurvePathHi.FullPath) - ' End Get - 'End Property + protected ReadOnly Property DragCurvHi As TableData + Get + If Not File.Exists(_dragCurvePathHi.FullPath) Then _ + Throw New VectoException("Drag Curve is missing or invalid") + Return VectoCSVFile.Read(_dragCurvePathHi.FullPath) + End Get + End Property protected ReadOnly Property EfficiencyMapHi As TableData Get If Not File.Exists(_efficiencyMapHi.FullPath) Then _ - Throw New VectoException("EfficiencyMap is missing or invalid") + Throw New VectoException("Drag Curve is missing or invalid") Return VectoCSVFile.Read(_efficiencyMapHi.FullPath) End Get End Property Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels - get - Return New List(Of IElectricMotorVoltageLevel) From{ + Get + Return New List(Of IElectricMotorVoltageLevel) From { New ElectricMotorVoltageLevel() With { - .VoltageLevel = VoltageLevelLow.SI(of Volt), - .EfficiencyMap = EfficiencyMapLow, + .VoltageLevel = VoltageLevelLow.SI(Of Volt), + .ContinuousTorque=ContTqlo.si(of NewtonMeter), + .ContinuousTorqueSpeed=RatedSpeedLo.RPMtoRad(), + .OverloadTorque=OvlTqLo.SI(of NewtonMeter), + .OverloadTestSpeed=OvlSpeedLo.RPMtoRad(), + .OverloadTime = PeakPowerTimeLo.SI(Of Second), + .PowerMap = new List(Of IElectricMotorPowerMap) From { new JSONElectricMotorPowerMap With { .PowerMap = EfficiencyMapLow, .Gear = 0 }}, .FullLoadCurve = FullLoadCurveLow}, - New ElectricMotorVoltageLevel() With { - .VoltageLevel = VoltageLevelHigh.SI(of Volt), - .EfficiencyMap = EfficiencyMapHi, + New ElectricMotorVoltageLevel() With { + .VoltageLevel = VoltageLevelHigh.SI(Of Volt), + .ContinuousTorque=ContTqHi.si(of NewtonMeter), + .ContinuousTorqueSpeed=RatedSpeedHi.RPMtoRad(), + .OverloadTorque=OvlTqHi.SI(of NewtonMeter), + .OverloadTestSpeed=OvlSpeedHi.RPMtoRad(), + .OverloadTime = PeakPowerTimeHi.SI(Of Second), + .PowerMap = new List(Of IElectricMotorPowerMap) From { new JSONElectricMotorPowerMap With { .PowerMap = EfficiencyMapLow, .Gear = 0 }}, .FullLoadCurve = FullLoadCurveHi} } - End Get + End Get End Property - Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve - Get - If Not File.Exists(_dragCurvePath.FullPath) Then _ - Throw New VectoException("Drag Curve is missing or invalid") - Return VectoCSVFile.Read(_dragCurvePath.FullPath) - End Get - end Property + Public ReadOnly Property ElectricMachineType As ElectricMachineType Implements IElectricMotorDeclarationInputData.ElectricMachineType + Public ReadOnly Property R85RatedPower As Watt Implements IElectricMotorDeclarationInputData.R85RatedPower Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia Get @@ -276,37 +290,44 @@ Public Class ElectricMachine End Get End Property - Public ReadOnly Property OverloadTime As Second Implements IElectricMotorDeclarationInputData.OverloadTime - get - Return PeakPowerTime.SI(of Second) - End Get - End Property + + Public ReadOnly Property DcDcConverterIncluded As Boolean Implements IElectricMotorDeclarationInputData.DcDcConverterIncluded + Public ReadOnly Property IHPCType As String Implements IElectricMotorDeclarationInputData.IHPCType - Public ReadOnly Property ContinuousTorqueSpeed As PerSecond Implements IElectricMotorDeclarationInputData.ContinuousTorqueSpeed - get - Return RatedSpeed.RPMtoRad() - End Get - End Property + - Public Property OverloadRecoveryFactor As Double Implements IElectricMotorDeclarationInputData.OverloadRecoveryFactor + Public ReadOnly Property Conditioning As TableData Implements IElectricMotorDeclarationInputData.Conditioning + Public Property OverloadRecoveryFactor As Double Implements IElectricMotorEngineeringInputData.OverloadRecoveryFactor - Public ReadOnly Property ContinuousTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.ContinuousTorque - get - Return ContTq.si(of NewtonMeter) - End Get - End Property + 'Public ReadOnly Property OverloadTime As Second Implements IElectricMotorDeclarationInputData.OverloadTime + ' Get + ' Return PeakPowerTime.SI(Of Second) + ' End Get + 'End Property + 'Public ReadOnly Property ContinuousTorqueSpeed As PerSecond Implements IElectricMotorDeclarationInputData.ContinuousTorqueSpeed + ' get + ' Return RatedSpeed.RPMtoRad() + ' End Get + 'End Property + 'Public ReadOnly Property ContinuousTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.ContinuousTorque + 'get + ' Return ContTq.si(of NewtonMeter) + 'End Get + 'End Property - Public ReadOnly Property OverloadTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.OverloadTorque - get - Return OvlTq.SI(of NewtonMeter) - End Get - End Property + 'Public ReadOnly Property OverloadTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.OverloadTorque + 'get + ' Return OvlTq.SI(of NewtonMeter) + 'End Get + 'End Property - Public ReadOnly Property OverloadTestSpeed As PerSecond Implements IElectricMotorDeclarationInputData.OverloadTestSpeed - get - Return OvlSpeed.RPMtoRad() - End Get - End Property + 'Public ReadOnly Property OverloadTestSpeed As PerSecond Implements IElectricMotorDeclarationInputData.OverloadTestSpeed + ' Get + ' Return OvlSpeed.RPMtoRad() + ' End Get + 'End Property + + Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve Public Property PathMaxTorqueLow(Optional ByVal original As Boolean = False) As String Get @@ -321,16 +342,16 @@ Public Class ElectricMachine End Set End Property - Public Property PathDrag(Optional ByVal original As Boolean = False) As String + Public Property PathDragLow(Optional ByVal original As Boolean = False) As String Get If original Then - Return _dragCurvePath.OriginalPath + Return _dragCurvePathLow.OriginalPath Else - Return _dragCurvePath.FullPath + Return _dragCurvePathLow.FullPath End If End Get Set(ByVal value As String) - _dragCurvePath.Init(_myPath, value) + _dragCurvePathLow.Init(_myPath, value) End Set End Property @@ -360,6 +381,18 @@ Public Class ElectricMachine End Set End Property + Public Property PathDragHi(Optional ByVal original As Boolean = False) As String + Get + If original Then + Return _dragCurvePathHi.OriginalPath + Else + Return _dragCurvePathHi.FullPath + End If + End Get + Set(ByVal value As String) + _dragCurvePathHi.Init(_myPath, value) + End Set + End Property Public Property PathMapHi(Optional ByVal original As Boolean = False) As String Get diff --git a/VECTO/Input Files/Engine.vb b/VECTO/Input Files/Engine.vb index 06a41acb0793a0ab27999618450386f3f8bb5327..2bd07a3d8e0bee4709faa1b37b936e751c2ab04b 100644 --- a/VECTO/Input Files/Engine.vb +++ b/VECTO/Input Files/Engine.vb @@ -634,7 +634,7 @@ Public Class DummyVehicle Public Property EngineIdleSpeed As PerSecond Implements IVehicleDeclarationInputData.EngineIdleSpeed Public Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle Public Property SleeperCab As Boolean? Implements IVehicleDeclarationInputData.SleeperCab - Public ReadOnly Property AirdragModifiedMultistage As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistage + Public ReadOnly Property AirdragModifiedMultistep As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistep Public Property TankSystem As TankSystem? Implements IVehicleDeclarationInputData.TankSystem Public Property IVehicleEngineeringInputData_ADAS As IAdvancedDriverAssistantSystemsEngineering Implements IVehicleEngineeringInputData.ADAS Public ReadOnly Property IVehicleEngineeringInputData_Components As IVehicleComponentsEngineering Implements IVehicleEngineeringInputData.Components @@ -665,8 +665,8 @@ Public Class DummyVehicle Public Property DynamicTyreRadius As Meter Implements IVehicleEngineeringInputData.DynamicTyreRadius Public Property Height As Meter Implements IVehicleEngineeringInputData.Height Public ReadOnly Property LowEntry As Boolean? Implements IVehicleDeclarationInputData.LowEntry - Public ReadOnly Property ElectricMotorTorqueLimits As TableData Implements IVehicleEngineeringInputData.ElectricMotorTorqueLimits - Public ReadOnly Property MaxPropulsionTorque As TableData Implements IVehicleEngineeringInputData.MaxPropulsionTorque + Public ReadOnly Property ElectricMotorTorqueLimits As Dictionary(Of PowertrainPosition, List(Of Tuple(Of Volt, TableData))) Implements IVehicleDeclarationInputData.ElectricMotorTorqueLimits + Public ReadOnly Property BoostingLimitations As TableData Implements IVehicleDeclarationInputData.BoostingLimitations Public ReadOnly Property Articulated As Boolean Implements IVehicleDeclarationInputData.Articulated Public ReadOnly Property IVehicleDeclarationInputData_Height As Meter Implements IVehicleDeclarationInputData.Height Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length @@ -682,6 +682,10 @@ Public Class DummyVehicle End Property Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource + Public ReadOnly Property VehicleTypeApprovalNumber As String Implements IVehicleDeclarationInputData.VehicleTypeApprovalNumber + Public ReadOnly Property ArchitectureID As ArchitectureID Implements IVehicleDeclarationInputData.ArchitectureID + Public ReadOnly Property OvcHev As Boolean Implements IVehicleDeclarationInputData.OvcHev + Public ReadOnly Property MaxChargingPower As Watt Implements IVehicleDeclarationInputData.MaxChargingPower Public Property AirdragInputData As IAirdragDeclarationInputData Implements IVehicleComponentsDeclaration.AirdragInputData Public Property IVehicleComponentsEngineering_GearboxInputData As IGearboxEngineeringInputData Implements IVehicleComponentsEngineering.GearboxInputData @@ -708,6 +712,7 @@ Public Class DummyVehicle Public ReadOnly Property ElectricStorage As IElectricStorageSystemDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage Public ReadOnly Property IVehicleComponentsEngineering_ElectricMachines As IElectricMachinesEngineeringInputData Implements IVehicleComponentsEngineering.ElectricMachines Public ReadOnly Property ElectricMachines As IElectricMachinesDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricMachines + Public ReadOnly Property IEPC As IIEPCDeclarationInputData Implements IVehicleComponentsDeclaration.IEPC End Class diff --git a/VECTO/Input Files/Gearbox.vb b/VECTO/Input Files/Gearbox.vb index 8c28f60e674bebfa605476fe875708a3e12f19ee..44ac9639247e3a8c55e68d284181ec8be547364a 100644 --- a/VECTO/Input Files/Gearbox.vb +++ b/VECTO/Input Files/Gearbox.vb @@ -836,7 +836,7 @@ Public Class MockEngineeringVehicle Public Property EngineIdleSpeed As PerSecond Implements IVehicleDeclarationInputData.EngineIdleSpeed Public Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle Public Property SleeperCab As Boolean? Implements IVehicleDeclarationInputData.SleeperCab - Public ReadOnly Property AirdragModifiedMultistage As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistage + Public ReadOnly Property AirdragModifiedMultistep As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistep Public Property TankSystem As TankSystem? Implements IVehicleDeclarationInputData.TankSystem Public Property IVehicleEngineeringInputData_ADAS As IAdvancedDriverAssistantSystemsEngineering _ @@ -877,15 +877,21 @@ Public Class MockEngineeringVehicle Public Property Loading As Kilogram Implements IVehicleEngineeringInputData.Loading Public Property DynamicTyreRadius As Meter Implements IVehicleEngineeringInputData.DynamicTyreRadius Public Property Height As Meter Implements IVehicleEngineeringInputData.Height - Public ReadOnly Property ElectricMotorTorqueLimits As TableData Implements IVehicleEngineeringInputData.ElectricMotorTorqueLimits - Public ReadOnly Property MaxPropulsionTorque As TableData Implements IVehicleEngineeringInputData.MaxPropulsionTorque + Public ReadOnly Property ElectricMotorTorqueLimits As Dictionary(Of PowertrainPosition, List(Of Tuple(Of Volt, TableData))) Implements IVehicleDeclarationInputData.ElectricMotorTorqueLimits + Public ReadOnly Property BoostingLimitations As TableData Implements IVehicleDeclarationInputData.BoostingLimitations Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology? Implements IVehicleDeclarationInputData.DoorDriveTechnology Public ReadOnly Property VehicleDeclarationType As VehicleDeclarationType Implements IVehicleDeclarationInputData.VehicleDeclarationType + + Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource + Public ReadOnly Property VehicleTypeApprovalNumber As String Implements IVehicleDeclarationInputData.VehicleTypeApprovalNumber + Public ReadOnly Property ArchitectureID As ArchitectureID Implements IVehicleDeclarationInputData.ArchitectureID + Public ReadOnly Property OvcHev As Boolean Implements IVehicleDeclarationInputData.OvcHev + Public ReadOnly Property MaxChargingPower As Watt Implements IVehicleDeclarationInputData.MaxChargingPower Public Property AirdragInputData As IAirdragEngineeringInputData _ Implements IVehicleComponentsEngineering.AirdragInputData diff --git a/VECTO/Input Files/MockComponents.vb b/VECTO/Input Files/MockComponents.vb index b64e23b2ef2d895947bf0b01a9c9140146fa99e3..8de6c7dea39c7ca9097382ee45b2186d60e53fdd 100644 --- a/VECTO/Input Files/MockComponents.vb +++ b/VECTO/Input Files/MockComponents.vb @@ -32,4 +32,5 @@ Public Class MockComponents Public ReadOnly Property BusAuxiliaries As IBusAuxiliariesDeclarationData Implements IVehicleComponentsDeclaration.BusAuxiliaries Public ReadOnly Property ElectricStorage As IElectricStorageSystemDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricStorage Public ReadOnly Property ElectricMachines As IElectricMachinesDeclarationInputData Implements IVehicleComponentsDeclaration.ElectricMachines + Public ReadOnly Property IEPC As IIEPCDeclarationInputData Implements IVehicleComponentsDeclaration.IEPC End Class \ No newline at end of file diff --git a/VECTO/Input Files/MockVehicleInputData.vb b/VECTO/Input Files/MockVehicleInputData.vb index fadf8f8ad7d53790bafd5a72b6e6a0e485d6c074..fb5c35d2056c61d62f000957641b252ea60c9228 100644 --- a/VECTO/Input Files/MockVehicleInputData.vb +++ b/VECTO/Input Files/MockVehicleInputData.vb @@ -29,7 +29,7 @@ Public Class MockVehicleInputData Public Property EngineIdleSpeed As PerSecond Implements IVehicleDeclarationInputData.EngineIdleSpeed Public Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle Public Property SleeperCab As Boolean? Implements IVehicleDeclarationInputData.SleeperCab - Public ReadOnly Property AirdragModifiedMultistage As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistage + Public ReadOnly Property AirdragModifiedMultistep As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistep Public Property TankSystem As TankSystem? Implements IVehicleDeclarationInputData.TankSystem Public Property ADAS As IAdvancedDriverAssistantSystemDeclarationInputData _ @@ -56,6 +56,17 @@ Public Class MockVehicleInputData Public ReadOnly Property EntranceHeight As Meter Implements IVehicleDeclarationInputData.EntranceHeight Public ReadOnly Property DoorDriveTechnology As ConsumerTechnology? Implements IVehicleDeclarationInputData.DoorDriveTechnology Public ReadOnly Property VehicleDeclarationType As VehicleDeclarationType Implements IVehicleDeclarationInputData.VehicleDeclarationType + Public ReadOnly Property ElectricMotorTorqueLimits As Dictionary(Of PowertrainPosition, List(Of Tuple(Of Volt, TableData))) Implements IVehicleDeclarationInputData.ElectricMotorTorqueLimits + Public ReadOnly Property BoostingLimitations As TableData Implements IVehicleDeclarationInputData.BoostingLimitations + Get + Throw New NotImplementedException + End Get + End Property + Public Property Components As IVehicleComponentsDeclaration Implements IVehicleDeclarationInputData.Components Public ReadOnly Property XMLSource As XmlNode Implements IVehicleDeclarationInputData.XMLSource + Public ReadOnly Property VehicleTypeApprovalNumber As String Implements IVehicleDeclarationInputData.VehicleTypeApprovalNumber + Public ReadOnly Property ArchitectureID As ArchitectureID Implements IVehicleDeclarationInputData.ArchitectureID + Public ReadOnly Property OvcHev As Boolean Implements IVehicleDeclarationInputData.OvcHev + Public ReadOnly Property MaxChargingPower As Watt Implements IVehicleDeclarationInputData.MaxChargingPower End Class \ No newline at end of file diff --git a/VECTO/Input Files/SuperCap.vb b/VECTO/Input Files/SuperCap.vb index f81199b776df5b86ae10d636afbd64abfbc1e075..fde413439982e0da8b7c7607b7f30780decfbc58 100644 --- a/VECTO/Input Files/SuperCap.vb +++ b/VECTO/Input Files/SuperCap.vb @@ -117,11 +117,13 @@ Public Class SuperCap End Get End Property Public ReadOnly Property MaxCurrentDischarge As Ampere Implements ISuperCapDeclarationInputData.MaxCurrentDischarge - get - Return MaxDischgCurrent.SI(Of Ampere) - End Get + Get + Return MaxDischgCurrent.SI(Of Ampere) + End Get End Property + Public ReadOnly Property TestingTemperature As Kelvin Implements ISuperCapDeclarationInputData.TestingTemperature + Public Property FilePath() As String Get Return _filePath diff --git a/VECTO/Input Files/Vehicle.vb b/VECTO/Input Files/Vehicle.vb index 0a2ea94fe774442baed7be20e9f696bca1c3d4dd..70aaab2ba722bb1feb32d4c849dd6f7282677c79 100644 --- a/VECTO/Input Files/Vehicle.vb +++ b/VECTO/Input Files/Vehicle.vb @@ -458,22 +458,24 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property ElectricMotorTorqueLimits As TableData Implements IVehicleEngineeringInputData.ElectricMotorTorqueLimits - get - If (String.IsNullOrWhiteSpace(EmTorqueLimitsFile.FullPath)) - return Nothing - End If - Return VectoCSVFile.Read(EmTorqueLimitsFile.FullPath) - End Get - End Property - Public ReadOnly Property MaxPropulsionTorque As TableData Implements IVehicleEngineeringInputData.MaxPropulsionTorque - get - If (String.IsNullOrWhiteSpace(PropulsionTorqueFile.FullPath)) - return Nothing - End If - Return VectoCSVFile.Read(PropulsionTorqueFile.FullPath) - End Get - End Property + ' Public ReadOnly Property ElectricMotorTorqueLimits As TableData Implements IVehicleEngineeringInputData.ElectricMotorTorqueLimits + ' get + ' If (String.IsNullOrWhiteSpace(EmTorqueLimitsFile.FullPath)) + ' return Nothing + ' End If + ' Return VectoCSVFile.Read(EmTorqueLimitsFile.FullPath) + ' End Get + ' End Property + Public ReadOnly Property ElectricMotorTorqueLimits As Dictionary(Of PowertrainPosition, List(Of Tuple(Of Volt, TableData))) Implements IVehicleDeclarationInputData.ElectricMotorTorqueLimits + + Public ReadOnly Property BoostingLimitations As TableData Implements IVehicleDeclarationInputData.BoostingLimitations + Get + If (String.IsNullOrWhiteSpace(PropulsionTorqueFile.FullPath)) Then + Return Nothing + End If + Return VectoCSVFile.Read(PropulsionTorqueFile.FullPath) + End Get + End Property Public ReadOnly Property Length As Meter Implements IVehicleDeclarationInputData.Length Public ReadOnly Property Width As Meter Implements IVehicleDeclarationInputData.Width @@ -587,15 +589,15 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property PTOCycleWhileDriving As TableData _ - Implements IPTOTransmissionInputData.PTOCycleWhileDriving - Get - If String.IsNullOrWhiteSpace(PtoCycleDriving.FullPath) Then - Return Nothing - End If - Return VectoCSVFile.Read(PtoCycleDriving.FullPath) - End Get - End Property + Public ReadOnly Property PTOCycleWhileDriving As TableData _ + Implements IPTOTransmissionInputData.PTOCycleWhileDriving + Get + If String.IsNullOrWhiteSpace(PtoCycleDriving.FullPath) Then + Return Nothing + End If + Return VectoCSVFile.Read(PtoCycleDriving.FullPath) + End Get + End Property Public ReadOnly Property IDeclarationInputDataProvider_AirdragInputData As IAirdragDeclarationInputData _ @@ -774,6 +776,8 @@ Public Class Vehicle End Get End Property + Public ReadOnly Property IEPC As IIEPCDeclarationInputData Implements IVehicleComponentsDeclaration.IEPC + Public ReadOnly Property BusAuxiliaries As IBusAuxiliariesDeclarationData Implements IVehicleComponentsDeclaration.BusAuxiliaries Public ReadOnly Property VocationalVehicle As Boolean Implements IVehicleDeclarationInputData.VocationalVehicle @@ -788,7 +792,7 @@ Public Class Vehicle End Get End Property - Public ReadOnly Property AirdragModifiedMultistage As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistage + Public ReadOnly Property AirdragModifiedMultistep As Boolean? Implements IVehicleDeclarationInputData.AirdragModifiedMultistep Public ReadOnly Property TankSystem As TankSystem? Implements IVehicleDeclarationInputData.TankSystem Get @@ -899,6 +903,10 @@ end Property End Property Public ReadOnly Property XMLSource As XmlNode Implements IAdvancedDriverAssistantSystemDeclarationInputData.XMLSource + Public ReadOnly Property VehicleTypeApprovalNumber As String Implements IVehicleDeclarationInputData.VehicleTypeApprovalNumber + Public ReadOnly Property ArchitectureID As ArchitectureID Implements IVehicleDeclarationInputData.ArchitectureID + Public ReadOnly Property OvcHev As Boolean Implements IVehicleDeclarationInputData.OvcHev + Public ReadOnly Property MaxChargingPower As Watt Implements IVehicleDeclarationInputData.MaxChargingPower Public ReadOnly Property IAdvancedDriverAssistantSystemsEngineering_DataSource As DataSource Implements IAdvancedDriverAssistantSystemsEngineering.DataSource Get @@ -980,9 +988,13 @@ Public Class ElectricStorageWrapper Public ReadOnly Property CertificationMethod As CertificationMethod Implements IComponentInputData.CertificationMethod Public ReadOnly Property CertificationNumber As String Implements IComponentInputData.CertificationNumber Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue - Public ReadOnly Property MinSOC As Double Implements IBatteryPackDeclarationInputData.MinSOC - Public ReadOnly Property MaxSOC As Double Implements IBatteryPackDeclarationInputData.MaxSOC + Public ReadOnly Property MinSOC As Double? Implements IBatteryPackDeclarationInputData.MinSOC + Public ReadOnly Property MaxSOC As Double? Implements IBatteryPackDeclarationInputData.MaxSOC + Public ReadOnly Property BatteryType As BatteryType Implements IBatteryPackDeclarationInputData.BatteryType Public ReadOnly Property Capacity As AmpereSecond Implements IBatteryPackDeclarationInputData.Capacity + Public ReadOnly Property ConnectorsSubsystemsIncluded As Boolean Implements IBatteryPackDeclarationInputData.ConnectorsSubsystemsIncluded + Public ReadOnly Property JunctionboxIncluded As Boolean Implements IBatteryPackDeclarationInputData.JunctionboxIncluded + Public ReadOnly Property TestingTemperature As Kelvin Implements IBatteryPackDeclarationInputData.TestingTemperature Public ReadOnly Property InternalResistanceCurve As TableData Implements IBatteryPackDeclarationInputData.InternalResistanceCurve Public ReadOnly Property VoltageCurve As TableData Implements IBatteryPackDeclarationInputData.VoltageCurve Public ReadOnly Property MaxCurrentMap As TableData Implements IBatteryPackDeclarationInputData.MaxCurrentMap @@ -1043,12 +1055,12 @@ Public Class ElectricMachineWrapper Public ReadOnly Property DigestValue As DigestData Implements IComponentInputData.DigestValue Public ReadOnly Property VoltageLevels As IList(Of IElectricMotorVoltageLevel) Implements IElectricMotorDeclarationInputData.VoltageLevels - Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve - Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia - Public ReadOnly Property OverloadTime As Second Implements IElectricMotorDeclarationInputData.OverloadTime - Public ReadOnly Property ContinuousTorqueSpeed As PerSecond Implements IElectricMotorDeclarationInputData.ContinuousTorqueSpeed - Public ReadOnly Property OverloadTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.OverloadTorque - Public ReadOnly Property OverloadTestSpeed As PerSecond Implements IElectricMotorDeclarationInputData.OverloadTestSpeed - Public ReadOnly Property OverloadRecoveryFactor As Double Implements IElectricMotorDeclarationInputData.OverloadRecoveryFactor - Public ReadOnly Property ContinuousTorque As NewtonMeter Implements IElectricMotorDeclarationInputData.ContinuousTorque + Public ReadOnly Property ElectricMachineType As ElectricMachineType Implements IElectricMotorDeclarationInputData.ElectricMachineType + Public ReadOnly Property R85RatedPower As Watt Implements IElectricMotorDeclarationInputData.R85RatedPower + Public ReadOnly Property Inertia As KilogramSquareMeter Implements IElectricMotorDeclarationInputData.Inertia + Public ReadOnly Property DcDcConverterIncluded As Boolean Implements IElectricMotorDeclarationInputData.DcDcConverterIncluded + Public ReadOnly Property IHPCType As String Implements IElectricMotorDeclarationInputData.IHPCType + Public ReadOnly Property DragCurve As TableData Implements IElectricMotorDeclarationInputData.DragCurve + Public ReadOnly Property Conditioning As TableData Implements IElectricMotorDeclarationInputData.Conditioning + Public ReadOnly Property OverloadRecoveryFactor As Double Implements IElectricMotorEngineeringInputData.OverloadRecoveryFactor End Class \ No newline at end of file diff --git a/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs b/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs index 0ddb13c270bea8d22311ea44e5eb73e0cc1e80e1..793f214e5aabb0b2f04bd09ce30d5088a7127b30 100644 --- a/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs +++ b/VECTO3GUI/ViewModel/Adapter/Declaration/VehicleDeclarationAdapter.cs @@ -128,6 +128,8 @@ namespace VECTO3GUI.ViewModel.Adapter.Declaration return GetComponentViewModel<IAirdragViewModel>(Component.Airdrag)?.ModelData; } } + public string VehicleTypeApprovalNumber => throw new NotImplementedException(); + public IVehicleComponentsDeclaration Components { get { return this; } } public XmlNode XMLSource { get; } diff --git a/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs b/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs index c585f453b3cedc8375a678434285db1865248911..52a9163b9cddf4f2901d4de46ae1e3d655d24d88 100644 --- a/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs +++ b/VECTO3GUI/ViewModel/Impl/JoblistViewModel.cs @@ -28,6 +28,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -932,13 +933,12 @@ namespace VECTO3GUI.ViewModel.Impl } var fileWriter = new FileOutputWriter(GetOutputDirectory(fullFileName)); - var runsFactory = new SimulatorFactory(mode, input, fileWriter) { - WriteModalResults = WriteModData, - ModalResults1Hz = WriteModData1Hz, - Validate = ValidateData, - ActualModalData = WriteActualModData, - SerializeVectoRunData = WriteModelData - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, input, fileWriter); + runsFactory.WriteModalResults = WriteModData; + runsFactory.ModalResults1Hz = WriteModData1Hz; + runsFactory.Validate = ValidateData; + runsFactory.ActualModalData = WriteActualModData; + runsFactory.SerializeVectoRunData = WriteModelData; foreach (var runId in jobContainer.AddRuns(runsFactory)) { fileWriters.Add(runId, fileWriter); } diff --git a/VECTO3GUI2020/App.xaml.cs b/VECTO3GUI2020/App.xaml.cs index 36c054f95d713baa242579b3a285baab243b7cfc..40d044273af0b577032b9e4fc747faeca6fd7e41 100644 --- a/VECTO3GUI2020/App.xaml.cs +++ b/VECTO3GUI2020/App.xaml.cs @@ -1,18 +1,10 @@ using System; using System.Windows; using Ninject; -using Ninject.Extensions.ChildKernel; -using VECTO3GUI2020.ViewModel.Interfaces; -using VECTO3GUI2020.ViewModel.Implementation; -using VECTO3GUI2020.Model.Interfaces; -using VECTO3GUI2020.Model; using TUGraz.VectoCore; -using VECTO3GUI2020.Helper; -using VECTO3GUI2020.Model.Implementation; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Ninject.Vehicle; using VECTO3GUI2020.Properties; -using VECTO3GUI2020.ViewModel; using Application = System.Windows.Application; namespace VECTO3GUI2020 diff --git a/VECTO3GUI2020/Helper/DialogHelper.cs b/VECTO3GUI2020/Helper/DialogHelper.cs index 848827af70a567dc18b3054ca4a025fcd09f4cab..227a455ec698dea9385b547a5ccf9a273d892978 100644 --- a/VECTO3GUI2020/Helper/DialogHelper.cs +++ b/VECTO3GUI2020/Helper/DialogHelper.cs @@ -18,8 +18,10 @@ namespace VECTO3GUI2020.Helper private readonly string _defaultInitialDirectory = Settings.Default.DefaultFilePath; #region File and Folder Dialogs - private string _xmlFilter = "XML Files (*.xml)|*.xml"; - private string _jsonFilter = "JSON Files (*.json)|*.json"; + public const string XmlFilter = "XML Files (*.xml)|*.xml"; + public const string JsonFilter = "JSON Files (*.json)|*.json"; + public const string VectoJobFilter = "Vecto Files (*.vecto)|*.vecto"; + public const string XmlAndVectoJobFilter = "Vecto Files (*.xml, *.vecto)|*.xml;*.vecto"; private Dictionary<string, string> lastUsedLoadDirectories = new Dictionary<string, string>(); private Dictionary<string, string> lastUsedSaveDirectories = new Dictionary<string, string>(); @@ -101,17 +103,22 @@ namespace VECTO3GUI2020.Helper public string[] OpenXMLFilesDialog(string initialDirectory) { - return OpenFilesDialog(_xmlFilter, initialDirectory); + return OpenFilesDialog(XmlFilter, initialDirectory); } public string OpenXMLFileDialog(string initialDirectory) { - return OpenFilesDialog(_xmlFilter, initialDirectory, false)?[0]; + return OpenFilesDialog(XmlFilter, initialDirectory, false)?[0]; } public string OpenJsonFileDialog(string initialDirectory) { - return OpenFilesDialog(_jsonFilter, initialDirectory, false)?[0]; + return OpenFilesDialog(VectoJobFilter, initialDirectory, false)?[0]; + } + + public string OpenXMLAndVectoFileDialog(string initialDirectory) + { + return OpenFilesDialog(XmlAndVectoJobFilter, initialDirectory, false)?[0]; } @@ -159,12 +166,12 @@ namespace VECTO3GUI2020.Helper public string SaveToXMLDialog(string initialDirectory) { - return SaveToDialog(initialDirectory, _xmlFilter); + return SaveToDialog(initialDirectory, XmlFilter); } - public string SaveToJsonDialog(string initialDirectory) + public string SaveToVectoJobDialog(string initialDirectory) { - return SaveToDialog(initialDirectory, _jsonFilter); + return SaveToDialog(initialDirectory, VectoJobFilter); } public MessageBoxResult ShowErrorMessage(string errorMessage, string caption) @@ -225,7 +232,9 @@ namespace VECTO3GUI2020.Helper string OpenJsonFileDialog(string initialDirectory = null); string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*"); string SaveToXMLDialog(string initialDirectory = null); - string SaveToJsonDialog(string initialDirectory = null); + string SaveToVectoJobDialog(string initialDirectory = null); + + string OpenXMLAndVectoFileDialog(string initialDirectory = null); /// <summary> @@ -251,5 +260,6 @@ namespace VECTO3GUI2020.Helper MessageBoxResult ShowErrorMessage(string errorMessage, string caption); MessageBoxResult ShowErrorMessage(string errorMessage); + } } diff --git a/VECTO3GUI2020/Helper/EnumHelper.cs b/VECTO3GUI2020/Helper/EnumHelper.cs index 16c063f1d9184a28dfb1067035f9a39b56250620..7912dbd2c118f9cad404b1e1dd408840c969d305 100644 --- a/VECTO3GUI2020/Helper/EnumHelper.cs +++ b/VECTO3GUI2020/Helper/EnumHelper.cs @@ -46,6 +46,13 @@ namespace VECTO3GUI2020.Helper return GetValuesAsObservableCollection<T, TInput>(true, items); } + public static ObservableCollection<T> GetValuesAsObservableCollection<T, TInput>() + where TInput : System.Enum + where T : System.Enum + + { + return new ObservableCollection<T>(Enum.GetValues(typeof(TInput)).Cast<TInput>().ToList().Cast<T>()); + } diff --git a/VECTO3GUI2020/Helper/NameResolver.cs b/VECTO3GUI2020/Helper/NameResolver.cs index 6d9fe13a50352ba1e68978b397888c721c82c0e4..45864264e138b4d3c6eb45f5b1aeb2e1cad89528 100644 --- a/VECTO3GUI2020/Helper/NameResolver.cs +++ b/VECTO3GUI2020/Helper/NameResolver.cs @@ -18,7 +18,7 @@ namespace VECTO3GUI2020.Helper } - return propertyName + "*"; + return propertyName; } } } \ No newline at end of file diff --git a/VECTO3GUI2020/Helper/XMLExtension.cs b/VECTO3GUI2020/Helper/XMLExtension.cs index ecfbba62efee447803d1bec4f8cb22d7f5387dab..921b9711e93bcefb92469fd45bf315f932611ae0 100644 --- a/VECTO3GUI2020/Helper/XMLExtension.cs +++ b/VECTO3GUI2020/Helper/XMLExtension.cs @@ -8,7 +8,6 @@ using Castle.Core.Resource; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Utils; -using TUGraz.VectoHashing.Impl; using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.Util.XML.Interfaces; diff --git a/VECTO3GUI2020/Helper/XmlHelper.cs b/VECTO3GUI2020/Helper/XmlHelper.cs index 2db50eed495027b1c6d4bd7d60bad969eb4fd559..872ad97935e4980681cb5ded3e819934adc3c58d 100644 --- a/VECTO3GUI2020/Helper/XmlHelper.cs +++ b/VECTO3GUI2020/Helper/XmlHelper.cs @@ -64,7 +64,7 @@ namespace VECTO3GUI2020.Helper } public static XDocument CreateWrapperDocument(this XElement xElement, XNamespace defaultNamespace, - XmlDocumentType docType = XmlDocumentType.DeclarationJobData) + XmlDocumentType docType = XmlDocumentType.DeclarationJobData, string schemaVersion = "2.0") { var prefixMap = new Dictionary<string, XNamespace>(); @@ -74,7 +74,7 @@ namespace VECTO3GUI2020.Helper Debug.WriteLine(rootElement.ToString()); rootElement.Add(new XAttribute("xmlns", defaultNamespace)); - rootElement.Add(new XAttribute("schemaVersion", XMLHelper.GetVersionFromNamespaceUri(defaultNamespace))); + rootElement.Add(new XAttribute("schemaVersion", schemaVersion)); xDocument.Add(rootElement); diff --git a/VECTO3GUI2020/MainWindow.xaml b/VECTO3GUI2020/MainWindow.xaml index 1b900af38931c5ac09b42d6a6cce2e2f13883376..85c6888d21f6c84b3711953bb715c51d2d70c97e 100644 --- a/VECTO3GUI2020/MainWindow.xaml +++ b/VECTO3GUI2020/MainWindow.xaml @@ -7,41 +7,39 @@ xmlns:resx="clr-namespace:VECTO3GUI2020.Properties" xmlns:Implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" xmlns:system="clr-namespace:System;assembly=mscorlib" - d:DataContext="{d:DesignInstance Type=Implementation:MainWindowViewModel}" x:Class="VECTO3GUI2020.MainWindow" + d:DataContext="{d:DesignInstance Type=Implementation:MainWindowViewModel}" + x:Class="VECTO3GUI2020.MainWindow" mc:Ignorable="d" - Title="Vecto" Height="450" Width="820" + Title="{Binding Version}" + Height="600" + Width="1000" MinWidth="800" MinHeight="420" - WindowStartupLocation="CenterScreen" - AutomationProperties.Name="=" + AutomationProperties.Name = "=" x:Name="MainView"> - - <Grid x:Name="Grid" > <DockPanel Margin="0 0 0 0"> - <StackPanel DockPanel.Dock="Top" Grid.Row="0" Orientation="Vertical"> + <StackPanel DockPanel.Dock="Top" Orientation="Vertical"> <Menu IsMainMenu="True"> <MenuItem Header="File" VerticalAlignment="Stretch"> <MenuItem Header="New File"> - <MenuItem Header="{x:Static resx:GUILabels.NewInterimOrCompletedJob}" Command="{Binding JobListVm.NewManufacturingStageFileCommand}"/> - <MenuItem Header="{x:Static resx:GUILabels.NewPrimaryAndInterimJob}" - Command="{Binding JobListVm.NewVifCommand}" > + <MenuItem Header="{x:Static resx:GUILabels.NewInterimOrCompletedJob}" Command="{Binding JobListVm.NewManufacturingStageFileCommand}" ToolTip="{x:Static resx:GUILabels.NewInterimOrCompletedJobToolTip}"/> + <MenuItem Header="{x:Static resx:GUILabels.NewPrimaryAndInterimJob}" Command="{Binding JobListVm.NewVifCommand}" ToolTip="{x:Static resx:GUILabels.NewPrimaryAndInterimJobToolTip}"> <MenuItem.CommandParameter> <system:Boolean>False</system:Boolean> </MenuItem.CommandParameter> </MenuItem> - <MenuItem Header="{x:Static resx:GUILabels.NewCompleteJob}" - Command="{Binding JobListVm.NewVifCommand}"> + <MenuItem Header="{x:Static resx:GUILabels.NewCompleteJob}" Command="{Binding JobListVm.NewVifCommand}" ToolTip="{x:Static resx:GUILabels.NewCompleteJobToolTip}"> <MenuItem.CommandParameter> <system:Boolean>True</system:Boolean> </MenuItem.CommandParameter> </MenuItem> - <Separator></Separator> - <MenuItem Header="Create interim/completeted input" Command="{Binding JobListVm.NewCompletedInputCommand}"/> - <MenuItem Header="Create extemted interim/completed input" Command="{Binding JobListVm.NewExemptedCompletedInputCommand}"/> + <Separator></Separator> + <MenuItem Header="{x:Static resx:GUILabels.CreateInterimCompletedInput}" Command="{Binding JobListVm.NewCompletedInputCommand}" /> + <MenuItem Header="{x:Static resx:GUILabels.CreateExemptedInterimCompletedInput}" Command="{Binding JobListVm.NewExemptedCompletedInputCommand}" /> </MenuItem> <MenuItem Header="Load File" Command="{Binding JobListVm.AddJobAsyncCommand}"/> <MenuItem Header="Settings" Command="{Binding OpenSettings}"/> @@ -56,28 +54,28 @@ </MenuItem> </Menu> </StackPanel> - <UniformGrid Margin="0 10 0 0 " Rows="1" DockPanel.Dock="Top" Width="400" HorizontalAlignment="Left"> - <Border x:Name="JobsButtonBorder" BorderThickness ="0 0 0 3"> - <Border.Style> - <Style TargetType="Border"> - <Style.Triggers> - <DataTrigger Binding="{Binding JobsSelected}" Value="true"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorButton}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - - - <Button x:Name="Jobs" Margin="0 0 0 0" + <UniformGrid Margin="0 10 0 0 " Rows="1" DockPanel.Dock="Top" Width="400" HorizontalAlignment="Left"> + <Border x:Name="JobsButtonBorder" BorderThickness ="0 0 0 3"> + <Border.Style> + <Style TargetType="Border"> + <Style.Triggers> + <DataTrigger Binding="{Binding JobsSelected}" Value="true"> + <Setter Property="BorderBrush" Value="{StaticResource AccentColorButton}"></Setter> + </DataTrigger> + </Style.Triggers> + </Style> + </Border.Style> + + + <Button x:Name="Jobs" Margin="0 0 0 0" VerticalAlignment="Stretch" DockPanel.Dock="Top" Content="Jobs" Command="{Binding SwitchTopView}" CommandParameter="Jobs" Style="{DynamicResource MultiStageButtonStyle1}"> - </Button> - </Border> + </Button> + </Border> <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}"> <Border.Style> @@ -97,7 +95,7 @@ CommandParameter="Settings" Style="{DynamicResource MultiStageButtonStyle1}"> </Button> - </Border> + </Border> <Border BorderThickness="{Binding ElementName=JobsButtonBorder, Path=BorderThickness}"> <Border.Style> <Style TargetType="Border"> @@ -118,7 +116,7 @@ </Button> </Border> </UniformGrid> - <Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="3" VerticalAlignment="Stretch"> + <Border DockPanel.Dock="Top" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="0 1 0 0" VerticalAlignment="Stretch"> <ContentControl Content="{Binding CurrentViewModel}"></ContentControl> </Border> </DockPanel> diff --git a/VECTO3GUI2020/Model/Multistage/JSONJob.cs b/VECTO3GUI2020/Model/Multistage/JSONJob.cs index 733d512b0379bedb18f71bf5028bfc84144ba989..fd1068f01b00d4b6ce5be9218614d45650a611b1 100644 --- a/VECTO3GUI2020/Model/Multistage/JSONJob.cs +++ b/VECTO3GUI2020/Model/Multistage/JSONJob.cs @@ -70,7 +70,7 @@ namespace VECTO3GUI2020.Model.Multistage public class JSONJobBody : ObservableObject { - private string _interimStage; + private string _interimStep; private string _primaryVehicle; private bool _completed; @@ -80,10 +80,10 @@ namespace VECTO3GUI2020.Model.Multistage set { SetProperty(ref _primaryVehicle, value); } } - public string InterimStage + public string InterimStep { - get { return _interimStage; } - set { SetProperty(ref _interimStage, value); } + get { return _interimStep; } + set { SetProperty(ref _interimStep, value); } } public bool Completed diff --git a/VECTO3GUI2020/Ninject/DocumentModule.cs b/VECTO3GUI2020/Ninject/DocumentModule.cs index 03fb21c1d5944b2d0ea46d61355f2305d27ec938..a89e2a912886530bb8fe2cf8967687356c1d3f08 100644 --- a/VECTO3GUI2020/Ninject/DocumentModule.cs +++ b/VECTO3GUI2020/Ninject/DocumentModule.cs @@ -1,10 +1,6 @@ -using Ninject.Extensions.Factory; -using Ninject.Modules; +using Ninject.Modules; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Utils; -using VECTO3GUI2020.Model.Interfaces; -using VECTO3GUI2020.Ninject.Util; -using VECTO3GUI2020.Util; using VECTO3GUI2020.ViewModel.Implementation.Document; using VECTO3GUI2020.ViewModel.Interfaces.Document; using VECTO3GUI2020.ViewModel.MultiStage.Implementation; @@ -18,7 +14,7 @@ namespace VECTO3GUI2020.Ninject Bind<IDocumentViewModel>().To<DeclarationJobViewModel>().Named(XmlDocumentType.DeclarationJobData.ToString()); Bind<IDocumentViewModel>().To<MultiStageJobViewModel_v0_1>() - .Named(XmlDocumentType.MultistageOutputData.ToString()); + .Named(XmlDocumentType.MultistepOutputData.ToString()); Bind<IDocumentViewModel>().To<CreateVifViewModel>() .Named(typeof(JSONInputDataV10_PrimaryAndStageInputBus).ToString()); diff --git a/VECTO3GUI2020/Ninject/JobEditModule.cs b/VECTO3GUI2020/Ninject/JobEditModule.cs index 817a490777255850e811a0596b05528092aeb000..f7301619da76c931475fc0c5d811464139b56f48 100644 --- a/VECTO3GUI2020/Ninject/JobEditModule.cs +++ b/VECTO3GUI2020/Ninject/JobEditModule.cs @@ -1,10 +1,5 @@ -using Ninject.Extensions.Factory; -using Ninject.Modules; -using VECTO3GUI2020.Ninject.Util; -using VECTO3GUI2020.Util; +using Ninject.Modules; using VECTO3GUI2020.ViewModel.Implementation.JobEdit; -using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Trailer; -using VECTO3GUI2020.ViewModel.Interfaces; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit; namespace VECTO3GUI2020.Ninject diff --git a/VECTO3GUI2020/Ninject/MultistageModule.cs b/VECTO3GUI2020/Ninject/MultistageModule.cs index 3e9c110f8a36a1abee882d736707c01f8cc92c72..0d0ddb97eacb589502be32d1c9b2e10dbe5d923f 100644 --- a/VECTO3GUI2020/Ninject/MultistageModule.cs +++ b/VECTO3GUI2020/Ninject/MultistageModule.cs @@ -1,17 +1,7 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Automation.Peers; -using Ninject.Extensions.Factory; +using Ninject.Extensions.Factory; using Ninject.Modules; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; -using TUGraz.VectoCore.Models.SimulationComponent; using VECTO3GUI2020.Model.Multistage; -using VECTO3GUI2020.Ninject.Util; -using VECTO3GUI2020.ViewModel.Implementation; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces.Common; using VECTO3GUI2020.ViewModel.Interfaces.Document; diff --git a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs index 7754d1da5fbd91b6b48568ab739c58f7d23c2788..f614330730242a54c67b2e70f3f3921e911c93ca 100644 --- a/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs +++ b/VECTO3GUI2020/Ninject/Vehicle/ComponentModule.cs @@ -1,4 +1,5 @@ -using Ninject.Extensions.Factory; + +using Ninject.Extensions.Factory; using Ninject.Modules; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Models.Declaration; @@ -37,7 +38,7 @@ namespace VECTO3GUI2020.Ninject.Vehicle Bind<IComponentViewModel>().To<AirDragViewModel_v1_0>().Named(AirDragViewModel_v1_0.VERSION); Bind<IComponentViewModel>().To<AirDragViewModel_v2_0>().Named(AirDragViewModel_v2_0.VERSION); - Bind<IComponentViewModel>().To<AirDragViewModel_v2_8>().Named(AirDragViewModel_v2_8.VERSION); + Bind<IComponentViewModel>().To<AirDragViewModel_v2_4>().Named(AirDragViewModel_v2_4.VERSION); Bind<IComponentViewModel>().To<AxleWheelsViewModel_v1_0>().Named(AxleWheelsViewModel_v1_0.VERSION); Bind<IComponentViewModel>().To<AxleWheelsViewModel_v2_0>().Named(AxleWheelsViewModel_v2_0.VERSION); @@ -77,8 +78,8 @@ namespace VECTO3GUI2020.Ninject.Vehicle Bind<IAdasViewModel>().To<ADASViewModel_v1_0>().Named(ADASViewModel_v1_0.VERSION); Bind<IAdasViewModel>().To<ADASViewModel_v2_1>().Named(ADASViewModel_v2_1.VERSION); - Bind<IAdasViewModel>().To<ADASViewModel_v2_3>().Named(ADASViewModel_v2_3.VERSION); - Bind<IAdasViewModel>().To<ADASViewModel_v2_3>(); //Default ADAS ViewModel if no matching binding is available; + //Bind<IAdasViewModel>().To<ADASViewModel_v2>().Named(ADASViewModel_v2_3.VERSION); + Bind<IAdasViewModel>().To<ADASViewModel_v2_1>(); //Default ADAS ViewModel if no matching binding is available; Bind<IEngineModeViewModel>().To<EngineModeViewModelSingleFuel>() .Named(EngineModeViewModelSingleFuel.VERSION); diff --git a/VECTO3GUI2020/Ninject/XMLWriterFactoryModule.cs b/VECTO3GUI2020/Ninject/XMLWriterFactoryModule.cs index 9c9912f5a1c1c854eea2f24d8ddf0fe621aef886..ed0a9a0e032baa8ade5053a224f42d42748c755e 100644 --- a/VECTO3GUI2020/Ninject/XMLWriterFactoryModule.cs +++ b/VECTO3GUI2020/Ninject/XMLWriterFactoryModule.cs @@ -45,9 +45,9 @@ namespace VECTO3GUI2020.Ninject Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_0>().Named(sv)); Array.ForEach( - XMLVehicleWriter_v2_8.SUPPORTEDVERSIONS, + XMLVehicleWriter_v2_10.SUPPORTEDVERSIONS, sv => - Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_8>().Named(sv)); + Bind<IXMLVehicleWriter>().To<XMLVehicleWriter_v2_10>().Named(sv)); Array.ForEach( XMLComponentsWriter_v1_0.SUPPORTED_VERSIONS, diff --git a/VECTO3GUI2020/Properties/AssemblyInfo.cs b/VECTO3GUI2020/Properties/AssemblyInfo.cs index 048eb62a0b9f75dabfc9a89fa518c551df703ef1..faea5cd03a3ab66fe948819a62fb6f77ce0a3ead 100644 --- a/VECTO3GUI2020/Properties/AssemblyInfo.cs +++ b/VECTO3GUI2020/Properties/AssemblyInfo.cs @@ -11,7 +11,7 @@ using System.Windows; [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("VECTO3GUI2020")] -[assembly: AssemblyCopyright("Copyright © 2020")] +[assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: InternalsVisibleTo("Vecto3GUI2020Test")] diff --git a/VECTO3GUI2020/Properties/BusStrings.Designer.cs b/VECTO3GUI2020/Properties/BusStrings.Designer.cs index 00c1f74fd2b689ce8ad9eac8dc6a73e744f4d2b9..769c403097691b962e9a7647a4b4e72c2bee84f3 100644 --- a/VECTO3GUI2020/Properties/BusStrings.Designer.cs +++ b/VECTO3GUI2020/Properties/BusStrings.Designer.cs @@ -70,7 +70,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Airdrag modified. + /// Looks up a localized string similar to Airdrag Modified. /// </summary> public static string AirdragModifiedEnum { get { @@ -79,7 +79,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to ATP Eco Roll Release Lockup Clutch. + /// Looks up a localized string similar to APT Eco Roll Release Lockup Clutch. /// </summary> public static string ATEcoRollReleaseLockupClutch { get { @@ -99,9 +99,9 @@ namespace VECTO3GUI2020.Properties { /// <summary> /// Looks up a localized string similar to Corrected Actual Mass. /// </summary> - public static string CurbmassChassis { + public static string CurbMassChassis { get { - return ResourceManager.GetString("CurbmassChassis", resourceCulture); + return ResourceManager.GetString("CurbMassChassis", resourceCulture); } } @@ -142,7 +142,43 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Height. + /// Looks up a localized string similar to Cooling. + /// </summary> + public static string HeatPumpTypeCoolingDriverCompartment { + get { + return ResourceManager.GetString("HeatPumpTypeCoolingDriverCompartment", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Cooling. + /// </summary> + public static string HeatPumpTypeCoolingPassengerCompartment { + get { + return ResourceManager.GetString("HeatPumpTypeCoolingPassengerCompartment", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Heating. + /// </summary> + public static string HeatPumpTypeHeatingDriverCompartment { + get { + return ResourceManager.GetString("HeatPumpTypeHeatingDriverCompartment", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Heating. + /// </summary> + public static string HeatPumpTypeHeatingPassengerCompartment { + get { + return ResourceManager.GetString("HeatPumpTypeHeatingPassengerCompartment", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Height Integrated Body. /// </summary> public static string HeightInMm { get { @@ -160,7 +196,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Length. + /// Looks up a localized string similar to Vehicle Length. /// </summary> public static string LengthInMm { get { @@ -178,7 +214,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Passenger Seats Lower Deck. + /// Looks up a localized string similar to Seats Lower Deck. /// </summary> public static string NumberPassengerSeatsLowerDeck { get { @@ -187,7 +223,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Passenger Seats Upper Deck. + /// Looks up a localized string similar to Seats Upper Deck. /// </summary> public static string NumberPassengerSeatsUpperDeck { get { @@ -196,7 +232,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Passenger Standing Lower Deck. + /// Looks up a localized string similar to Standing Lower Deck. /// </summary> public static string NumberPassengersStandingLowerDeck { get { @@ -205,7 +241,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Passenger Standing Upper Deck. + /// Looks up a localized string similar to Standing Upper Deck. /// </summary> public static string NumberPassengersStandingUpperDeck { get { @@ -222,6 +258,15 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Class Bus. + /// </summary> + public static string RegisteredClass { + get { + return ResourceManager.GetString("RegisteredClass", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Ng Tank System. /// </summary> @@ -250,7 +295,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Width. + /// Looks up a localized string similar to Vehicle Width. /// </summary> public static string WidthInMm { get { diff --git a/VECTO3GUI2020/Properties/BusStrings.resx b/VECTO3GUI2020/Properties/BusStrings.resx index 20eca9eee36fe73b138fed977abd4c79240f7e13..261437f16268fec133851accb6747ae0ba25fcb9 100644 --- a/VECTO3GUI2020/Properties/BusStrings.resx +++ b/VECTO3GUI2020/Properties/BusStrings.resx @@ -121,15 +121,15 @@ <value>Airdrag Area 0</value> </data> <data name="AirdragModifiedEnum" xml:space="preserve"> - <value>Airdrag modified</value> + <value>Airdrag Modified</value> </data> <data name="ATEcoRollReleaseLockupClutch" xml:space="preserve"> - <value>ATP Eco Roll Release Lockup Clutch</value> + <value>APT Eco Roll Release Lockup Clutch</value> </data> <data name="CompressorDrive" xml:space="preserve"> <value>Compressor Drive</value> </data> - <data name="CurbmassChassis" xml:space="preserve"> + <data name="CurbMassChassis" xml:space="preserve"> <value>Corrected Actual Mass</value> </data> <data name="EcoRollTypeNullable" xml:space="preserve"> @@ -144,33 +144,48 @@ <data name="GrossVehicleMassRating" xml:space="preserve"> <value>Tech. Perm. Max. Laden Mass</value> </data> + <data name="HeatPumpTypeCoolingDriverCompartment" xml:space="preserve"> + <value>Cooling</value> + </data> + <data name="HeatPumpTypeCoolingPassengerCompartment" xml:space="preserve"> + <value>Cooling</value> + </data> + <data name="HeatPumpTypeHeatingDriverCompartment" xml:space="preserve"> + <value>Heating</value> + </data> + <data name="HeatPumpTypeHeatingPassengerCompartment" xml:space="preserve"> + <value>Heating</value> + </data> <data name="HeightInMm" xml:space="preserve"> - <value>Height</value> + <value>Height Integrated Body</value> </data> <data name="LegislativeClass" xml:space="preserve"> <value>Legislative Category</value> </data> <data name="LengthInMm" xml:space="preserve"> - <value>Length</value> + <value>Vehicle Length</value> </data> <data name="Manufacturer" xml:space="preserve"> <value>Manufacturer</value> </data> <data name="NumberPassengerSeatsLowerDeck" xml:space="preserve"> - <value>Passenger Seats Lower Deck</value> + <value>Seats Lower Deck</value> </data> <data name="NumberPassengerSeatsUpperDeck" xml:space="preserve"> - <value>Passenger Seats Upper Deck</value> + <value>Seats Upper Deck</value> </data> <data name="NumberPassengersStandingLowerDeck" xml:space="preserve"> - <value>Passenger Standing Lower Deck</value> + <value>Standing Lower Deck</value> </data> <data name="NumberPassengersStandingUpperDeck" xml:space="preserve"> - <value>Passenger Standing Upper Deck</value> + <value>Standing Upper Deck</value> </data> <data name="PredictiveCruiseControlNullable" xml:space="preserve"> <value>Predictive Cruise Control</value> </data> + <data name="RegisteredClass" xml:space="preserve"> + <value>Class Bus</value> + </data> <data name="TankSystem" xml:space="preserve"> <value>Ng Tank System</value> </data> @@ -181,6 +196,6 @@ <value>Bodywork Code</value> </data> <data name="WidthInMm" xml:space="preserve"> - <value>Width</value> + <value>Vehicle Width</value> </data> </root> \ No newline at end of file diff --git a/VECTO3GUI2020/Properties/GUILabels.Designer.cs b/VECTO3GUI2020/Properties/GUILabels.Designer.cs index a0bbf92d1f74e34b3175c24345bb34a7e3e897d2..0e03d5db72536c8f0709c46d9bd792448c02dc07 100644 --- a/VECTO3GUI2020/Properties/GUILabels.Designer.cs +++ b/VECTO3GUI2020/Properties/GUILabels.Designer.cs @@ -60,6 +60,105 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Airdrag Data. + /// </summary> + public static string _consolidateAirdragData { + get { + return ResourceManager.GetString("_consolidateAirdragData", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Bus Auxiliaries Data. + /// </summary> + public static string _consolidateBusAuxiliariesData { + get { + return ResourceManager.GetString("_consolidateBusAuxiliariesData", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ADAS. + /// </summary> + public static string _consolidatedADAS { + get { + return ResourceManager.GetString("_consolidatedADAS", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Components. + /// </summary> + public static string _consolidatedComponents { + get { + return ResourceManager.GetString("_consolidatedComponents", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to HVAC Data. + /// </summary> + public static string _consolidatedHVACBusAuxiliariesData { + get { + return ResourceManager.GetString("_consolidatedHVACBusAuxiliariesData", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Electric Consumer Data. + /// </summary> + public static string _consolidateElectricConsumerData { + get { + return ResourceManager.GetString("_consolidateElectricConsumerData", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Components_Conventional_CompletedBusType. + /// </summary> + public static string Components_Conventional_CompletedBusType { + get { + return ResourceManager.GetString("Components_Conventional_CompletedBusType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Create Exempted Interim/Completed Input. + /// </summary> + public static string CreateExemptedInterimCompletedInput { + get { + return ResourceManager.GetString("CreateExemptedInterimCompletedInput", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Create Exempted Interim/Completed Input. + /// </summary> + public static string CreateExemptedInterimCompletedInputToolTip { + get { + return ResourceManager.GetString("CreateExemptedInterimCompletedInputToolTip", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Create Interim/Completed Input. + /// </summary> + public static string CreateInterimCompletedInput { + get { + return ResourceManager.GetString("CreateInterimCompletedInput", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to . + /// </summary> + public static string CreateInterimCompletedInputToolTip { + get { + return ResourceManager.GetString("CreateInterimCompletedInputToolTip", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to VECTO. /// </summary> @@ -69,6 +168,60 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Edit Multistep Job. + /// </summary> + public static string Edit_Multistep_Job { + get { + return ResourceManager.GetString("Edit_Multistep_Job", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Edit step input. + /// </summary> + public static string Edit_step_input { + get { + return ResourceManager.GetString("Edit_step_input", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Invalid Airdrag Entries. + /// </summary> + public static string IsAirdragEntriesValid { + get { + return ResourceManager.GetString("IsAirdragEntriesValid", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Invalid Tank System. + /// </summary> + public static string IsTankSystemValid { + get { + return ResourceManager.GetString("IsTankSystemValid", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Manufacturing Step. + /// </summary> + public static string ManufacturingSteps { + get { + return ResourceManager.GetString("ManufacturingSteps", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to New Multistep File. + /// </summary> + public static string New_Multistep_File { + get { + return ResourceManager.GetString("New_Multistep_File", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to New Complete Job. /// </summary> @@ -78,6 +231,15 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Special Case 2: Provide primary input XML and all parameters of completed vehicle to create a VECTO job.. + /// </summary> + public static string NewCompleteJobToolTip { + get { + return ResourceManager.GetString("NewCompleteJobToolTip", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to New Interim/Completed Job. /// </summary> @@ -87,6 +249,15 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to General case: Provide VIF and completed model parameters to create a VECTO job.. + /// </summary> + public static string NewInterimOrCompletedJobToolTip { + get { + return ResourceManager.GetString("NewInterimOrCompletedJobToolTip", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to New Primary Job with Interim Input. /// </summary> @@ -96,6 +267,15 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Special Case 1: Provide primary input XML and some parameters of completed vehicle (interim XML) to create a VECTO job.. + /// </summary> + public static string NewPrimaryAndInterimJobToolTip { + get { + return ResourceManager.GetString("NewPrimaryAndInterimJobToolTip", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to No Manufacturing Steps. /// </summary> diff --git a/VECTO3GUI2020/Properties/GUILabels.resx b/VECTO3GUI2020/Properties/GUILabels.resx index c045f7d379c534175080ba21803c4b8e922fd152..43f525bcf021de57e3866ccf05835490194697da 100644 --- a/VECTO3GUI2020/Properties/GUILabels.resx +++ b/VECTO3GUI2020/Properties/GUILabels.resx @@ -123,13 +123,73 @@ <data name="NewPrimaryAndInterimJob" xml:space="preserve"> <value>New Primary Job with Interim Input</value> </data> + <data name="NewPrimaryAndInterimJobToolTip" xml:space="preserve"> + <value>Special Case 1: Provide primary input XML and some parameters of completed vehicle (interim XML) to create a VECTO job.</value> + </data> <data name="NewInterimOrCompletedJob" xml:space="preserve"> <value>New Interim/Completed Job</value> </data> + <data name="NewInterimOrCompletedJobToolTip" xml:space="preserve"> + <value>General case: Provide VIF and completed model parameters to create a VECTO job.</value> + </data> <data name="NewCompleteJob" xml:space="preserve"> <value>New Complete Job</value> </data> + <data name="NewCompleteJobToolTip" xml:space="preserve"> + <value>Special Case 2: Provide primary input XML and all parameters of completed vehicle to create a VECTO job.</value> + </data> + <data name="CreateInterimCompletedInput" xml:space="preserve"> + <value>Create Interim/Completed Input</value> + </data> <data name="no manufacturing stages" xml:space="preserve"> <value>No Manufacturing Steps</value> </data> + <data name="IsAirdragEntriesValid" xml:space="preserve"> + <value>Invalid Airdrag Entries</value> + </data> + <data name="IsTankSystemValid" xml:space="preserve"> + <value>Invalid Tank System</value> + </data> + <data name="_consolidateAirdragData" xml:space="preserve"> + <value>Airdrag Data</value> + </data> + <data name="_consolidateBusAuxiliariesData" xml:space="preserve"> + <value>Bus Auxiliaries Data</value> + </data> + <data name="_consolidatedADAS" xml:space="preserve"> + <value>ADAS</value> + </data> + <data name="_consolidatedComponents" xml:space="preserve"> + <value>Components</value> + </data> + <data name="_consolidatedHVACBusAuxiliariesData" xml:space="preserve"> + <value>HVAC Data</value> + </data> + <data name="_consolidateElectricConsumerData" xml:space="preserve"> + <value>Electric Consumer Data</value> + </data> + <data name="Components_Conventional_CompletedBusType" xml:space="preserve"> + <value>Components_Conventional_CompletedBusType</value> + </data> + <data name="CreateInterimCompletedInputToolTip" xml:space="preserve"> + <value /> + </data> + <data name="CreateExemptedInterimCompletedInput" xml:space="preserve"> + <value>Create Exempted Interim/Completed Input</value> + </data> + <data name="CreateExemptedInterimCompletedInputToolTip" xml:space="preserve"> + <value>Create Exempted Interim/Completed Input</value> + </data> + <data name="ManufacturingSteps" xml:space="preserve"> + <value>Manufacturing Step</value> + </data> + <data name="New_Multistep_File" xml:space="preserve"> + <value>New Multistep File</value> + </data> + <data name="Edit_Multistep_Job" xml:space="preserve"> + <value>Edit Multistep Job</value> + </data> + <data name="Edit_step_input" xml:space="preserve"> + <value>Edit step input</value> + </data> </root> \ No newline at end of file diff --git a/VECTO3GUI2020/Properties/Strings.Designer.cs b/VECTO3GUI2020/Properties/Strings.Designer.cs index f6ed81b6119d8487f88808a75d73483276c44400..8ab0b64d91b1dab1f514b75cd977bdfe05f6b2b1 100644 --- a/VECTO3GUI2020/Properties/Strings.Designer.cs +++ b/VECTO3GUI2020/Properties/Strings.Designer.cs @@ -629,7 +629,7 @@ namespace VECTO3GUI2020.Properties { } /// <summary> - /// Looks up a localized string similar to Declaration Type. + /// Looks up a localized string similar to Vehicle Declaration Type. /// </summary> public static string VehicleDeclarationType { get { @@ -637,6 +637,15 @@ namespace VECTO3GUI2020.Properties { } } + /// <summary> + /// Looks up a localized string similar to Vehicle Type Approval Number. + /// </summary> + public static string VehicleTypeApprovalNumber { + get { + return ResourceManager.GetString("VehicleTypeApprovalNumber", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Vehicle Identification Number. /// </summary> diff --git a/VECTO3GUI2020/Properties/Strings.resx b/VECTO3GUI2020/Properties/Strings.resx index 25e87f6f23c6530b2a2868dbffec73b6cbcd8cc4..57cca07abe89d77a22e2a2bc6424af7854f89f46 100644 --- a/VECTO3GUI2020/Properties/Strings.resx +++ b/VECTO3GUI2020/Properties/Strings.resx @@ -305,7 +305,7 @@ <value>Vehicle Code</value> </data> <data name="VehicleDeclarationType" xml:space="preserve"> - <value>Declaration Type</value> + <value>Vehicle Declaration Type</value> </data> <data name="WaterElectricHeater" xml:space="preserve"> <value>Water Electric Heater</value> @@ -325,4 +325,7 @@ <data name="HeatPumpType" xml:space="preserve"> <value>Heat Pump Type</value> </data> + <data name="VehicleTypeApprovalNumber" xml:space="preserve"> + <value>Vehicle Type Approval Number</value> + </data> </root> \ No newline at end of file diff --git a/VECTO3GUI2020/Properties/Version.cs b/VECTO3GUI2020/Properties/Version.cs index 5ade37d6792c11e1fe10c19042588155249b7bde..9cd97f5647a38119802a0e213c68a58a4d4853e5 100644 --- a/VECTO3GUI2020/Properties/Version.cs +++ b/VECTO3GUI2020/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("0.1.0.1954")] -[assembly: AssemblyFileVersion("0.1.0.1954")] +[assembly: AssemblyVersion("0.2.0.2436")] +[assembly: AssemblyFileVersion("0.2.0.2436")] diff --git a/VECTO3GUI2020/Properties/Version.tt b/VECTO3GUI2020/Properties/Version.tt index bf6606a7433a501c60753609366ac702934d292a..1808397053a9fb36fc00fbe0ed7bb5529131dc02 100644 --- a/VECTO3GUI2020/Properties/Version.tt +++ b/VECTO3GUI2020/Properties/Version.tt @@ -33,8 +33,8 @@ <#@ output extension=".cs"#> <#@ include file="../../VectoCore/VectoCore/VersionNumber.t4" once="true" #> using System.Reflection; -[assembly: AssemblyVersion("0.1.0.<#= GetBuildNumber() #>")] -[assembly: AssemblyFileVersion("0.1.0.<#= GetBuildNumber() #>")] +[assembly: AssemblyVersion("0.2.0.<#= GetBuildNumber() #>")] +[assembly: AssemblyFileVersion("0.2.0.<#= GetBuildNumber() #>")] <#+ int RevisionNumber = (int)(DateTime.UtcNow - new DateTime(2017, 1, 1)).TotalDays; #> \ No newline at end of file diff --git a/VECTO3GUI2020/Resources/Styles/ButtonStyles.xaml b/VECTO3GUI2020/Resources/Styles/ButtonStyles.xaml index b5b95eb545e5061c7af04fcb4599cfaba6de5a33..04a17539e0e2ca4aaacc80233f303555dfbb48c7 100644 --- a/VECTO3GUI2020/Resources/Styles/ButtonStyles.xaml +++ b/VECTO3GUI2020/Resources/Styles/ButtonStyles.xaml @@ -14,10 +14,11 @@ <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Padding" Value="1"/> + <Setter Property="Margin" Value="4"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> - <Border x:Name="border" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="0,0,0,1" Background="White" SnapsToDevicePixels="true" Width="Auto" Height="30"> + <Border x:Name="border" BorderBrush="{DynamicResource AccentColorButton}" BorderThickness="1,1,1,1" Background="White" SnapsToDevicePixels="true" Width="Auto" Height="30"> <VisualStateManager.VisualStateGroups> <VisualStateGroup x:Name="CommonStates"> <VisualStateGroup.Transitions> diff --git a/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml b/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml index 3d2178c42d7c415640fca69ad5c9ad947041d2c4..798321dd5054ca1f3a560be937117b6d17645bb3 100644 --- a/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml +++ b/VECTO3GUI2020/Resources/Styles/DataGridStyles.xaml @@ -29,14 +29,13 @@ </Setter.Value> </Setter> <Setter Property="Padding" Value="4 0 0 0"/> + <Setter Property="BorderThickness" Value="1"/> <Setter Property="Foreground" Value="Black"/> <Setter Property="Background" Value="White"/> </Style> <Style x:Key="DataGridCellStyle1" TargetType="{x:Type DataGridCell}"> - <Setter Property="Background" Value="Transparent"/> - <Setter Property="BorderBrush" Value="Transparent"/> <Setter Property="BorderThickness" Value="0"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Template"> diff --git a/VECTO3GUI2020/Resources/ViewModelBindings.xaml b/VECTO3GUI2020/Resources/ViewModelBindings.xaml index 8c644cee027e7fa3d676bed2e31c27b9a82d5e73..922db83bf189ea15e45afb8bba5e44e5df65c6c6 100644 --- a/VECTO3GUI2020/Resources/ViewModelBindings.xaml +++ b/VECTO3GUI2020/Resources/ViewModelBindings.xaml @@ -115,11 +115,6 @@ <componentviews:AuxiliariesView_v2_0/> </DataTemplate> - <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:AuxiliariesViewModel_v2_3}"> - <componentviews:AuxiliariesView_v2_0/> - </DataTemplate> - - <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:AxleViewModel_v1_0}"> <componentviews:AxleView_v2_0/> </DataTemplate> @@ -188,10 +183,6 @@ <componentviews:ADASView_v2_3/> </DataTemplate> - <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:ADASViewModel_v2_3}"> - <componentviews:ADASView_v2_3/> - </DataTemplate> - <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:EngineModeViewModelSingleFuel}"> <componentviews:EngineModeViewSingleFuel/> </DataTemplate> @@ -201,7 +192,7 @@ </DataTemplate> <!--#endregion--> - <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:AirDragViewModel_v2_8}"> + <DataTemplate x:Shared="False" DataType="{x:Type componentimpl:AirDragViewModel_v2_4}"> <multistageviews:AirDragView_v2_8></multistageviews:AirDragView_v2_8> </DataTemplate> diff --git a/VECTO3GUI2020/TestViewModel.cs b/VECTO3GUI2020/TestViewModel.cs index 2e5b1a9badb3db6139fb932f357bcdce0f5f86f1..a21deb9371ad2743aae96ad7c4486c76d87d2bf1 100644 --- a/VECTO3GUI2020/TestViewModel.cs +++ b/VECTO3GUI2020/TestViewModel.cs @@ -38,7 +38,7 @@ namespace VECTO3GUI2020 private Meter _meter; - private HeatPumpMode? _heatpumpMode; + //private HeatPumpMode? _heatpumpMode; private string _testString; public Meter Meter @@ -47,30 +47,30 @@ namespace VECTO3GUI2020 set => SetProperty(ref _meter, value); } - public HeatPumpMode? HeatPumpMode - { - get => _heatpumpMode; - set => SetProperty(ref _heatpumpMode, value); - } + //public HeatPumpMode? HeatPumpMode + //{ + // get => _heatpumpMode; + // set => SetProperty(ref _heatpumpMode, value); + //} - private IList<HeatPumpMode> allowedValues = new List<HeatPumpMode>(){ - TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.cooling, - TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.heating_and_cooling - }; + //private IList<HeatPumpMode> allowedValues = new List<HeatPumpMode>(){ + // TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.cooling, + // TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.heating_and_cooling + //}; - private HeatPumpMode? _heatpumpMode2; + //private HeatPumpMode? _heatpumpMode2; private bool _enabled; public bool enabled { get => _enabled; set => SetProperty(ref _enabled, value); } - public HeatPumpMode? HeatPumpMode2 - { - get => _heatpumpMode2; - set => SetProperty(ref _heatpumpMode2, value); - } - - public ObservableCollection<Enum> HeatPumpModeListItems - { - get => new ObservableCollection<Enum>(allowedValues.Cast<Enum>()); - } + //public HeatPumpMode? HeatPumpMode2 + //{ + // get => _heatpumpMode2; + // set => SetProperty(ref _heatpumpMode2, value); + //} + + //public ObservableCollection<Enum> HeatPumpModeListItems + //{ + // get => new ObservableCollection<Enum>(allowedValues.Cast<Enum>()); + //} public String TestString { diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs index ad44783039c8b070b744ed533de5947710fd64bb..e60a7c01bcb16a67a598789ade6f3de64840754f 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLBusAuxiliariesWriter.cs @@ -1,10 +1,12 @@ using System; using System.Linq; using System.Xml.Linq; +using Castle.Components.DictionaryAdapter.Xml; using Castle.Core.Internal; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; using VECTO3GUI2020.Util.XML.Interfaces; namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter @@ -52,20 +54,29 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter private XNamespace _defaultNamespace; - public XMLBusAuxiliariesWriterMultistage(IBusAuxiliariesDeclarationData inputData) : base(inputData) { } + private readonly IGroupWriterFactory _groupWriterFactory; + + public XMLBusAuxiliariesWriterMultistage(IBusAuxiliariesDeclarationData inputData, + IGroupWriterFactory groupWriterFactory) : base(inputData) + { + _groupWriterFactory = groupWriterFactory; + } #region Overrides of XMLBusAuxiliariesWriter public override void Initialize() { - _defaultNamespace = XMLNamespaces.V28; + _defaultNamespace = XMLNamespaces.v2_10_2; _xElement = new XElement(_defaultNamespace + XMLNames.Component_Auxiliaries); } public override void CreateElements() { - - var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper, + CreateElementsWithGroupWriters(); + return; + + + var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper, new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "CompletedVehicleAuxiliaryDataDeclarationType")); _xElement.Add(dataElement); @@ -85,19 +96,20 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter if (_inputData.HVACAux != null) { var hvacElement = new XElement(_defaultNamespace + "HVAC"); hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_SystemConfiguration, _inputData.HVACAux.SystemConfiguration.GetXmlFormat())); - var heatPumpTypeLabel = _inputData.HVACAux.HeatPumpTypeDriverCompartment.GetLabel(); - if (heatPumpTypeLabel == "~null~") { - heatPumpTypeLabel = null; - } - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeatPumpTypeDriver, heatPumpTypeLabel)); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeatPumpModeDriver, _inputData.HVACAux.HeatPumpModeDriverCompartment.GetLabel())); - //TODO - if (_inputData.HVACAux.HeatPumpPassengerCompartments != null) { - foreach (var (heatPumpType, heatPumpMode) in _inputData.HVACAux.HeatPumpPassengerCompartments) { - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeatPumpTypePassenger, heatPumpType.GetLabel())); - hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeatPumpModePassenger, heatPumpMode.GetLabel())); - } - } + + hvacElement.Add(GetHeatPumpGroupElement( + xmlNameWrapper:XMLNames.Bus_HeatPumpTypeDriver, + xmlNameFirstComponent:XMLNames.BusHVACHeatPumpCooling, + firstValue:_inputData.HVACAux.HeatPumpTypeCoolingDriverCompartment.GetLabel(), + xmlNameSecondComponent:XMLNames.BusHVACHeatPumpHeating, + secondValue:_inputData.HVACAux.HeatPumpTypeHeatingDriverCompartment.GetLabel())); + + hvacElement.Add(GetHeatPumpGroupElement( + xmlNameWrapper: XMLNames.Bus_HeatPumpTypePassenger, + xmlNameFirstComponent: XMLNames.BusHVACHeatPumpCooling, + firstValue: _inputData.HVACAux.HeatPumpTypeCoolingPassengerCompartment.GetLabel(), + xmlNameSecondComponent: XMLNames.BusHVACHeatPumpHeating, + secondValue: _inputData.HVACAux.HeatPumpTypeHeatingPassengerCompartment.GetLabel())); hvacElement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AuxiliaryHeaterPower, _inputData.HVACAux.AuxHeaterPower?.ToXMLFormat(0))); @@ -113,6 +125,56 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter dataElement.DescendantsAndSelf().Where(e => e.Value.IsNullOrEmpty()).Remove(); } + private void CreateElementsWithGroupWriters() + { + + var dataElement = new XElement(_defaultNamespace + XMLNames.ComponentDataWrapper, + new XAttribute("xmlns" , XMLNamespaces.v2_10_2), + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "AUX_Conventional_CompletedBusType")); + + if (_inputData.ElectricConsumers != null) { + var electricSystemElement = new XElement(_defaultNamespace + XMLNames.BusAux_ElectricSystem); + var ledLightsElement = new XElement(_defaultNamespace + "LEDLights"); + ledLightsElement.Add( + // ReSharper disable once CoVariantArrayConversion + _groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxElectricSystemLightsGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + electricSystemElement.Add(ledLightsElement); + dataElement.Add(electricSystemElement); + + } + + if (_inputData.HVACAux != null) { + var hvacElement = new XElement(_defaultNamespace + "HVAC"); + hvacElement.Add(_groupWriterFactory.GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACConventionalSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + dataElement.Add(hvacElement); + } + + _xElement.Add(dataElement); + + } + + private XElement GetHeatPumpTypeElement(string xmlName, string value) + { + if (value == "~null~") + { + value = null; + } + return new XElement(_defaultNamespace + xmlName, value); + } + + private XElement GetHeatPumpGroupElement(string xmlNameWrapper, string xmlNameFirstComponent, + string xmlNameSecondComponent, string firstValue, string secondValue) + { + var element = new XElement(_defaultNamespace + xmlNameWrapper, + new XElement(_defaultNamespace + xmlNameFirstComponent, firstValue), + new XElement(_defaultNamespace + xmlNameSecondComponent, secondValue)); + + return element; + } + + #endregion } } \ No newline at end of file diff --git a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs index 2b18d352282c7a928c9ee52f1d50a64d1dad6534..7dd3ad389046bb2be4eade6d4f3840e684365ae5 100644 --- a/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs +++ b/VECTO3GUI2020/Util/XML/Implementation/ComponentWriter/XMLVehicleWriter.cs @@ -9,7 +9,11 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.OutputData.XML.ComponentWriter; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; +using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; +using VECTO3GUI2020.Properties; using VECTO3GUI2020.Util.XML.Interfaces; using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle; @@ -118,7 +122,8 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter typeof(VehicleViewModel_v2_0).ToString() }; - public XMLVehicleWriter_v2_0(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) + public XMLVehicleWriter_v2_0(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) { @@ -187,55 +192,77 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter public class XMLVehicleWriter_ExcemptedVehicle_v2_2 { } - public class XMLVehicleWriter_v2_8 : XMLVehicleWriter + public class XMLVehicleWriter_v2_10 : XMLVehicleWriter { private readonly bool _exempted; public static readonly string[] SUPPORTEDVERSIONS = { - typeof(InterimStageBusVehicleViewModel_v2_8).ToString() + typeof(InterimStageBusVehicleViewModel_v2_8).ToString(), + typeof(StageInputViewModel).ToString() }; - public XMLVehicleWriter_v2_8(IVehicleDeclarationInputData inputData, IXMLWriterFactory xmlWriterFactory) : base(inputData, xmlWriterFactory) + + private readonly IGroupWriterFactory _groupWriterFactory; + private readonly bool _conventional; + private readonly IComponentWriterFactory _componentWriterFactory; + + public XMLVehicleWriter_v2_10(IVehicleDeclarationInputData inputData, + IXMLWriterFactory xmlWriterFactory, + IGroupWriterFactory groupWriterFactory, + IComponentWriterFactory componentWriterFactory) : base(inputData, xmlWriterFactory) { + + //TODO: CHECK ALL POSSIBIBILITIES FOR VEHICLES _exempted = inputData.ExemptedVehicle; + _conventional = !_exempted; + _groupWriterFactory = groupWriterFactory; + _componentWriterFactory = componentWriterFactory; } #region Overrides of XMLVehicleWriter protected override void Initialize() { - _defaultNamespace = XMLNamespaces.V28; + _defaultNamespace = XMLNamespaces.v2_10_2; - _Xelement = new XElement(XMLNamespaces.V20 + XMLNames.Component_Vehicle); + _Xelement = new XElement(XMLNamespaces.V20 + XMLNames.Component_Vehicle, + new XAttribute("xmlns", _defaultNamespace)); _Xelement.Add(new XAttribute(XMLNames.Component_ID_Attr, _inputData.Identifier ?? ("VEH-" + Guid.NewGuid().ToString("n").Substring(0, 20)))); - if (_exempted) { - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "ExemptedInterimStageInputType")); - } else { - _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "InterimStageInputType")); + if (_conventional) { + _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "Vehicle_Conventional_CompletedBusDeclarationType")); + } else if(_exempted) { + _Xelement.Add(new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, "Vehicle_Exempted_CompletedBusDeclarationType")); } } protected override void CreateElements() { + if (_conventional) { + CreateConventionalElements(); + return; + } + if (_exempted) { CreateExemptedElements(); return; } + + throw new NotImplementedException("Old Implementation"); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, _inputData.ManufacturerAddress)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, DateTime.Today.ToXmlFormat())); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, XMLExtension.ToXmlFormat(DateTime.Today))); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirdragModifiedMultistage, _inputData.AirdragModifiedMultistage)); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_AirdragModifiedMultistep, _inputData.AirdragModifiedMultistep)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem)); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); @@ -247,7 +274,7 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleLength, _inputData.Length?.ConvertToMilliMeter())); _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleWidth, _inputData.Width?.ConvertToMilliMeter())); @@ -273,7 +300,7 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, ecoRollWithEngineStop)); aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_PCC, _inputData.ADAS.PredictiveCruiseControl.ToXMLFormat())); - aDASElement.Add(new XElement(adasNamespace + XMLNames.Bus_ADAS_APTEcoRollReleaseLockupClutch, _inputData.ADAS?.ATEcoRollReleaseLockupClutch )); + aDASElement.Add(new XElement(adasNamespace + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, _inputData.ADAS?.ATEcoRollReleaseLockupClutch )); } _Xelement.DescendantsAndSelf().Where(e => e.Value.IsNullOrEmpty()).Remove(); @@ -301,44 +328,104 @@ namespace VECTO3GUI2020.Util.XML.Implementation.ComponentWriter componentElement.Add(auxiliaryElement); } + _Xelement.Add(componentElement); + + } + } + + private void CreateConventionalElements() + { + _Xelement.Add( + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, _defaultNamespace).GetGroupElements(_inputData), + _groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBusParametersSequenceGroup, _defaultNamespace).GetGroupElements(_inputData) + ); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_NgTankSystem, _inputData.TankSystem)); + + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace).GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter( + GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, _defaultNamespace) + .GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, + _inputData.DoorDriveTechnology != null + ? _inputData.DoorDriveTechnology.ToXMLFormat() + : null)); + + _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_VehicleDeclarationType, _inputData.VehicleDeclarationType)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.VehicleTypeApprovalNumber, _inputData.VehicleTypeApprovalNumber)); + + if (_inputData.ADAS != null) { + _Xelement.Add(_componentWriterFactory.getDeclarationAdasWriter(GroupNames.ADAS_Conventional_Type, _defaultNamespace).GetComponent(_inputData.ADAS)); + } + + + if (_inputData.Components != null) + { + var componentElement = new XElement( + _defaultNamespace + XMLNames.Vehicle_Components, + new XAttribute(XMLNamespaces.Xsi + XMLNames.Attr_Type, + GUILabels.Components_Conventional_CompletedBusType)); + + //Airdrag + if (_inputData.Components.AirdragInputData != null) + { + var airDragElement = _xmlWriterFactory.CreateComponentWriter(_inputData.Components.AirdragInputData) + .GetElement(); + var tempAirDragElement = new XElement(_defaultNamespace + XMLNames.Component_AirDrag); + + airDragElement.Name = tempAirDragElement.Name; + componentElement.Add(airDragElement); + } + + //auxiliaries + if (_inputData.Components.BusAuxiliaries != null) + { + var auxiliaryElement = _xmlWriterFactory.CreateBuxAuxiliariesWriter(_inputData.Components.BusAuxiliaries) + .GetElement(); + + componentElement.Add(auxiliaryElement); + + } _Xelement.Add(componentElement); + } - } + private void CreateExemptedElements() { - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Manufacturer, _inputData.Manufacturer)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_ManufacturerAddress, - _inputData.ManufacturerAddress)); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_VIN, _inputData.VIN)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Date, DateTime.Today.ToXmlFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); - - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, - _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); + // ReSharper disable once CoVariantArrayConversion + _Xelement.Add(_groupWriterFactory + .GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, + _defaultNamespace).GetGroupElements(_inputData)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _inputData.NumberPassengerSeatsLowerDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, _inputData.NumberPassengersStandingUpperDeck)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Component_Model, _inputData.Model)); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_LegislativeCategory, _inputData.LegislativeClass.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.CorrectedActualMass, _inputData.CurbMassChassis?.ToXMLFormat(0))); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_TPMLM, + _inputData.GrossVehicleMassRating?.ToXMLFormat(0))); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _inputData.NumberPassengerSeatsUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, _inputData.NumberPassengersStandingUpperDeck)); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_RegisteredClass, _inputData.RegisteredClass.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); + _Xelement.Add(_groupWriterFactory.GetVehicleDeclarationGroupWriter(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, _defaultNamespace).GetGroupElements(_inputData)); + + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Vehicle_BodyworkCode, _inputData.VehicleCode.ToXMLFormat())); - _Xelement.Add(new XElement(_defaultNamespace + XMLNames.Bus_HeighIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_LowEntry, _inputData.LowEntry)); - _Xelement.DescendantsAndSelf().Where(e => e.Value.IsNullOrEmpty()).Remove(); + _Xelement.AddIfContentNotNull(new XElement(_defaultNamespace + XMLNames.Bus_HeightIntegratedBody, _inputData.Height?.ConvertToMilliMeter())); } #endregion diff --git a/VECTO3GUI2020/Util/XML/XMLNamespaces.cs b/VECTO3GUI2020/Util/XML/XMLNamespaces.cs index 6c7d84fa0140d844cd795c7c8ce886fedf7933d6..174d4718ae56ab06bd2f6faf5b6b111778b4db47 100644 --- a/VECTO3GUI2020/Util/XML/XMLNamespaces.cs +++ b/VECTO3GUI2020/Util/XML/XMLNamespaces.cs @@ -11,7 +11,6 @@ namespace VECTO3GUI2020.Util.XML public static class XMLNamespaces { public static readonly string DeclarationDefinition = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions"; - public static readonly string SchemaVersion = "2.0"; public static XNamespace Xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); public static XNamespace Tns = "urn:tugraz:ivt:VectoAPI:DeclarationInput"; public static XNamespace Tns_v20 = Tns.NamespaceName + ":v2.0"; @@ -21,6 +20,8 @@ namespace VECTO3GUI2020.Util.XML public static XNamespace V20 = DeclarationDefinition + ":v2.0"; public static XNamespace V10 = DeclarationDefinition + ":v1.0"; public static XNamespace V28 = DeclarationDefinition + ":DEV:v2.8"; + public static XNamespace v2_10_1 = DeclarationDefinition + ":DEV:v2.10.1"; + public static XNamespace v2_10_2 = DeclarationDefinition + ":DEV:v2.10.2"; public static XNamespace Di = "http://www.w3.org/2000/09/xmldsig#"; @@ -40,6 +41,8 @@ namespace VECTO3GUI2020.Util.XML { V26, "v2.6"}, { Di, "di"}, { V28, "v2.8"}, + {v2_10_2, "v2.10.2"}, + {v2_10_1, "v2.10.1"} }; public static string GetPrefix(XNamespace xNamespace) diff --git a/VECTO3GUI2020/VECTO3GUI2020.csproj b/VECTO3GUI2020/VECTO3GUI2020.csproj index 10a1a9cc7a7e9fe089c01438b481f9208079e8b6..3fd4aef6cc1da63c52b10ea1eb58aed8346f554f 100644 --- a/VECTO3GUI2020/VECTO3GUI2020.csproj +++ b/VECTO3GUI2020/VECTO3GUI2020.csproj @@ -52,6 +52,9 @@ <PropertyGroup> <ApplicationIcon>Resources\Icons\Icon2.ico</ApplicationIcon> </PropertyGroup> + <PropertyGroup> + <ApplicationManifest>app.manifest</ApplicationManifest> + </PropertyGroup> <ItemGroup> <Reference Include="Castle.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL"> <HintPath>..\packages\Castle.Core.4.4.1\lib\net45\Castle.Core.dll</HintPath> @@ -83,13 +86,10 @@ <Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> <HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\net45\Newtonsoft.Json.dll</HintPath> </Reference> - <Reference Include="Ninject, Version=3.3.4.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL"> + <Reference Include="Ninject"> <HintPath>..\packages\Ninject.3.3.4\lib\net45\Ninject.dll</HintPath> </Reference> - <Reference Include="Ninject.Extensions.ChildKernel, Version=3.3.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL"> - <HintPath>..\packages\Ninject.Extensions.ChildKernel.3.3.0\lib\net45\Ninject.Extensions.ChildKernel.dll</HintPath> - </Reference> - <Reference Include="Ninject.Extensions.Factory, Version=3.3.3.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL"> + <Reference Include="Ninject.Extensions.Factory"> <HintPath>..\packages\Ninject.Extensions.Factory.3.3.3\lib\net45\Ninject.Extensions.Factory.dll</HintPath> </Reference> <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> @@ -836,6 +836,7 @@ <Link>DependencyValidation1.layerdiagram</Link> <Visible>False</Visible> </AdditionalFiles> + <None Include="app.manifest" /> <None Include="Documentation\InputData.cd" /> <None Include="Properties\Application.settings"> <Generator>SettingsSingleFileGenerator</Generator> @@ -867,28 +868,19 @@ <ItemGroup> <Resource Include="Resources\Icons\Icon2.ico" /> </ItemGroup> + <ItemGroup> + <Resource Include="Resources\Icons\folderpicker.ico" /> + </ItemGroup> <ItemGroup> <ProjectReference Include="..\VectoCommon\VectoCommon\VectoCommon.csproj"> - <Project>{79a066ad-69a9-4223-90f6-6ed5d2d084f4}</Project> + <Project>{79A066AD-69A9-4223-90F6-6ED5D2D084F4}</Project> <Name>VectoCommon</Name> </ProjectReference> - <ProjectReference Include="..\VectoCommon\VectoHashing\VectoHashing.csproj"> - <Project>{B673E12F-D323-4C4C-8805-9915B2C72D3D}</Project> - <Name>VectoHashing</Name> - </ProjectReference> - <ProjectReference Include="..\VectoCore\VectoCoreTest\VectoCoreTest.csproj"> - <Project>{6A27F93E-4A58-48F6-B00B-3908C5D3D5A2}</Project> - <Name>VectoCoreTest</Name> - </ProjectReference> <ProjectReference Include="..\VectoCore\VectoCore\VectoCore.csproj"> - <Project>{cd36938a-add9-4c65-96da-b397cdeea90a}</Project> + <Project>{CD36938A-ADD9-4C65-96DA-B397CDEEA90A}</Project> <Name>VectoCore</Name> </ProjectReference> </ItemGroup> - <ItemGroup> - <Resource Include="Resources\Icons\folderpicker.ico" /> - </ItemGroup> - <ItemGroup /> <ItemGroup> <Resource Include="Resources\Icons\Trash_16x.ico" /> </ItemGroup> diff --git a/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs index cea5bd15ba5e33849543f5a64d88d87ebca105e2..1f3a1c998926c8fe783c52ded046869756e32076 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/Common/AdditionalJobInfoViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.ObjectModel; using System.ComponentModel; using System.Diagnostics; +using System.IO; using System.Linq; using System.Windows; using System.Windows.Media.TextFormatting; @@ -27,6 +28,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common public AdditionalJobInfoViewModelBase() { + Title = "Job Info"; SizeToContent = SizeToContent.WidthAndHeight; MinHeight = 200; MinWidth = 300; @@ -40,9 +42,21 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common private IMultiStageJobViewModel _parent; private string _errorInfo; + public ObservableCollection<string> InvalidEntries { get; set; } = new ObservableCollection<string>(); + + public bool InvalidEntriesPresent => InvalidEntries.Count > 0; + + public string ErrorInfo + { + get => _errorInfo; + set => SetProperty(ref _errorInfo, value); + } + + public AdditionalJobInfoViewModelMultiStage() { - Title = "Multistage Job Info"; + Title = "Multistep Job Info"; + InvalidEntries.CollectionChanged += (sender, args) => OnPropertyChanged(nameof(InvalidEntriesPresent)); } #region Overrides of AdditionalJobInfoViewModelBase @@ -68,7 +82,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common if (_parent.InvalidEntries != null && _parent.InvalidEntries.Count != 0) { - ErrorInfo = "This Job cannot be Simulated! The following inputs are missing or invalid"; + ErrorInfo = null; foreach (var parentInvalidEntry in _parent.InvalidEntries) { InvalidEntries.Add(parentInvalidEntry); @@ -76,13 +90,6 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common } } - public ObservableCollection<string> InvalidEntries { get; set; } = new ObservableCollection<string>(); - - public string ErrorInfo - { - get => _errorInfo; - set => SetProperty(ref _errorInfo, value); - } #endregion } @@ -99,20 +106,34 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Common _parent = parent as CreateVifViewModel; (_parent as INotifyPropertyChanged).PropertyChanged += AdditionalJobInfoViewModelNewVif_PropertyChanged; Debug.Assert(_parent != null); + UpdateInvalidEntries(); } private void AdditionalJobInfoViewModelNewVif_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(_parent.CanBeSimulated)) { + UpdateInvalidEntries(); + } + } + private void UpdateInvalidEntries() + { + InvalidEntries.Clear(); + if (_parent.UnsavedChanges) { + InvalidEntries.Add("This job has unsaved changes"); + } - + if (_parent.PrimaryInputPath == null) { + InvalidEntries.Add("No Primary input path specified"); } - } + if (_parent.StageInputPath == null) { + InvalidEntries.Add($"No {(_parent.Completed ? "Completed" : "Interim")} input path specified"); + } - #endregion + } + #endregion } public class AdditionalJobInfoViewModelStageInput : AdditionalJobInfoViewModelBase diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs index cd26f24a0a66345c6aa9842e12e3991dd8783a5c..2fd8cb8a6b559a9693778d68e154013021f5883c 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationJobViewModel.cs @@ -14,9 +14,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document #region Implementation of IDocumentViewModel public string DocumentName { get; } - public XmlDocumentType DocumentType { get; } + public XmlDocumentType? DocumentType { get; } - public DataSource DataSource => _jobEditViewModel.DataSource; + public string DocumentTypeName => DocumentType?.GetName(); + + public DataSource DataSource => _jobEditViewModel.DataSource; private IJobEditViewModel _jobEditViewModel; diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs index d684390880cf1599306637018dde7daa779fdf75..8a9c2da054dec72b6bf2b98e4640372d796b6d78 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/Document/DeclarationTrailerJobDocumentViewModel.cs @@ -13,9 +13,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document private string _name = ""; public string DocumentName { get => _name; } - public XmlDocumentType DocumentType { get; } + public XmlDocumentType? DocumentType { get; } - public DataSource DataSource => throw new System.NotImplementedException(); + public string DocumentTypeName => DocumentType?.GetName(); + + public DataSource DataSource => throw new System.NotImplementedException(); public string SourceFile { get; } diff --git a/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs b/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs index 650a6755df28bc928c63e2fd9f03969da500dce9..df09dd609691d1079c1f041636d0d5387a3eebc6 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/Document/SimulationOnlyDeclarationJob.cs @@ -18,12 +18,13 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document set => _documentName = value; } - public XmlDocumentType DocumentType + public XmlDocumentType? DocumentType { get => _documentType; - set => _documentType = value; } + public string DocumentTypeName => _documentType?.GetName(); + public DataSource DataSource { get => _dataSource; @@ -33,7 +34,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.Document public IEditViewModel EditViewModel { get; set; } private bool _selected; - private XmlDocumentType _documentType; + private XmlDocumentType? _documentType; private string _documentName; private DataSource _dataSource; diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ADASViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ADASViewModel.cs index 81189514d53d77429ba1b261b1b9120cb21da799..6453045865b0186c5f724eebe6cbdfed3f64cdb0 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ADASViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ADASViewModel.cs @@ -102,26 +102,4 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components } } - - public class ADASViewModel_v2_3 : ADASViewModel_v2_1 - { - public static new readonly string VERSION = typeof(XMLDeclarationADASDataProviderV23).ToString(); - - - public override void SetProperties() - { - base.SetProperties(); - _atEcoRollReleaseLockupClutch = _inputData.ATEcoRollReleaseLockupClutch ?? false; - } - - public override bool? ATEcoRollReleaseLockupClutch { get => _atEcoRollReleaseLockupClutch; set => - SetProperty(ref _atEcoRollReleaseLockupClutch, value); } - - - - public ADASViewModel_v2_3(IAdvancedDriverAssistantSystemDeclarationInputData inputData) : base(inputData) - { - - } - } } diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AirDragViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AirDragViewModel.cs index f4314ec98e0f6a2fbc1593d45c110d0182017b80..7a455bedc0d3959a2f845a92d5262d7de1153f04 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AirDragViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AirDragViewModel.cs @@ -191,11 +191,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components } } - public class AirDragViewModel_v2_8 : AirDragViewModel_v2_0 + public class AirDragViewModel_v2_4 : AirDragViewModel_v2_0 { - public new static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV28).FullName; + public new static readonly string VERSION = typeof(XMLDeclarationAirdragDataProviderV24).FullName; - public AirDragViewModel_v2_8(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory) + public AirDragViewModel_v2_4(IXMLAirdragDeclarationInputData inputData, IComponentViewModelFactory vmFactory) : base(inputData, vmFactory) { LabelVisible = false; IsReadOnly = true; diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliariesViewModel.cs index 1d503d78964c94d0a946a0de8c89a60572ee5682..c7c7a32f3aeded10f748918dfc21f670d21a09cc 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliariesViewModel.cs @@ -82,21 +82,5 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components } } - public class AuxiliariesViewModel_v2_3 : AuxiliariesViewModel_v2_0 - { - public static new readonly string VERSION = typeof(XMLDeclarationAuxiliariesDataProviderV23).ToString(); - - public AuxiliariesViewModel_v2_3(IXMLAuxiliariesDeclarationInputData inputData, IComponentViewModelFactory componentViewModelFactory) : base(inputData, componentViewModelFactory) - { - } - - public override void CreateAuxiliaries() - { - base.CreateAuxiliaries(); - } - } - - - } diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliaryViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliaryViewModel.cs index 9c853ee032451d8780fb58be0a659afd7ab72a02..acf6b29df654a4493ebd82f3bfb11bc18ea589f6 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliaryViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/AuxiliaryViewModel.cs @@ -93,7 +93,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components public class AuxiliaryViewModel_v2_3 : AuxiliaryViewModel_v2_0 { - public static new readonly string VERSION = typeof(XMLAuxiliaryDeclarationDataProviderV23).FullName; + public static new readonly string VERSION = typeof(XMLAuxiliaryDeclarationDataProviderV24_Lorry).FullName; public AuxiliaryViewModel_v2_3(IXMLAuxiliaryDeclarationInputData inputData, IAuxiliaryModelFactory auxiliaryModelFactory) : base(inputData, auxiliaryModelFactory) { diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs index 87d56480bdc97dd5606d9392a9888f88e28cae00..a059c77c5d51b933c6b50c6b720256a070eaf5e2 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/ComponentsViewModel.cs @@ -146,6 +146,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components public IElectricStorageSystemDeclarationInputData ElectricStorage => throw new NotImplementedException(); public IElectricMachinesDeclarationInputData ElectricMachines => throw new NotImplementedException(); + public IIEPCDeclarationInputData IEPC { get => throw new NotImplementedException(); } #endregion diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/PTOViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/PTOViewModel.cs index b6b7746d320dc6a3c24dd67b1282a8b03ec98fbb..7789a8274b9c63daf5d822286ac13ce66994f463 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/PTOViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/Components/PTOViewModel.cs @@ -40,8 +40,6 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components } - - #region implementation of IPTOTransmissionInputData protected string _ptoTransmissionType; diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs index b8f7cdaab6352b1785f1bfda72813750cf403af9..2a9e3a1303811cda6c28ca726e20beab783c2051 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobEdit/Vehicle/VehicleViewModel.cs @@ -238,7 +238,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle set => throw new NotImplementedException(); } - public bool? AirdragModifiedMultistage => throw new NotImplementedException(); + public bool? AirdragModifiedMultistep => throw new NotImplementedException(); public virtual TankSystem? TankSystem { @@ -354,6 +354,13 @@ namespace VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle ConsumerTechnology? IVehicleDeclarationInputData.DoorDriveTechnology { get; } public VehicleDeclarationType VehicleDeclarationType => throw new NotImplementedException(); + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + public TableData BoostingLimitations { get; } + + public string VehicleTypeApprovalNumber => throw new NotImplementedException(); + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } public virtual ConsumerTechnology DoorDriveTechnology { diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs index db0f9f8f17a3b7ab74cf1f70a2091f9bf7e41306..5ee05781a8fe37544ab138246e2cb3e607f6672b 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs @@ -9,9 +9,11 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; +using System.Windows.Forms.VisualStyles; using System.Windows.Input; using System.Xml; using System.Xml.Linq; +using Castle.Core.Internal; using Microsoft.Toolkit.Mvvm.Input; using Newtonsoft.Json; using NLog; @@ -20,12 +22,15 @@ using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; @@ -103,6 +108,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation IDialogHelper dialogHelper, IWindowHelper windowHelper, IMultiStageViewModelFactory multiStageViewModelFactory, + ISimulatorFactoryFactory simulatorFactoryFactory, IOutputViewModel outputViewModel) : this() { _documentViewModelFactory = documentViewModelFactory; @@ -111,6 +117,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation _inputDataReader = inputDataReader; _multiStageViewModelFactory = multiStageViewModelFactory; _outputViewModel = outputViewModel; + _simFactoryFactory = simulatorFactoryFactory; _outputMessage = new Progress<MessageEntry>((message) => { _outputViewModel.AddMessage(message); @@ -205,7 +212,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation public async Task<IDocumentViewModel> AddJobExecuteAsync() { - var fileName = _dialogHelper.OpenXMLFileDialog(); + var fileName = _dialogHelper.OpenXMLAndVectoFileDialog(); if (fileName != null) { return await AddJobAsync(fileName); @@ -251,9 +258,9 @@ namespace VECTO3GUI2020.ViewModel.Implementation { var extension = Path.GetExtension(fileName); switch (extension) { - case ".xml": + case Constants.FileExtensions.VectoXMLDeclarationFile: return LoadXMLFile(fileName); - case ".json": + case Constants.FileExtensions.VectoJobFile: return LoadJsonFile(fileName); default: throw new VectoException($"{extension} not supported!"); @@ -279,7 +286,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation xElement.Load(fileName); var documentType = XMLHelper.GetDocumentType(xElement?.DocumentElement?.LocalName); - if (documentType == XmlDocumentType.MultistageOutputData) + if (documentType == XmlDocumentType.MultistepOutputData) { var inputDataProvider = _inputDataReader.Create(fileName) as IMultistageBusInputDataProvider; return Task.FromResult(_multiStageViewModelFactory.GetMultiStageJobViewModel(inputDataProvider) as IDocumentViewModel); @@ -354,12 +361,20 @@ namespace VECTO3GUI2020.ViewModel.Implementation } SimulationRunning = true; try { - await Task.Run(() => RunSimulationAsync(_cancellationTokenSource.Token, - outputMessages: _outputMessage, - progress: _progress, - status: _status, - jobToSimulate: jobToSimulate)); - } catch (Exception ex) { + await Task.Run(() => RunSimulationAsync(_cancellationTokenSource.Token, + outputMessages: _outputMessage, + progress: _progress, + status: _status, + jobToSimulate: jobToSimulate)); + //await Task.Factory.StartNew(() => RunSimulationAsync(_cancellationTokenSource.Token, + // outputMessages: _outputMessage, + // progress: _progress, + // status: _status, + // jobToSimulate: jobToSimulate), + // TaskCreationOptions.LongRunning).Unwrap(); + + } + catch (Exception ex) { _outputViewModel.AddMessage(new MessageEntry() { Type = MessageType.ErrorMessage, Message = ex.Message @@ -378,6 +393,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation IProgress<string> status, IDocumentViewModel jobToSimulate = null) { + if (Thread.CurrentThread.Name == null) { + Thread.CurrentThread.Name = "JobListThread"; + }; + + progress.Report(0); status.Report("starting..."); @@ -394,7 +414,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation Time = DateTime.Now, Type = MessageType.InfoMessage, }); - status.Report("No jobs selected"); + status.Report("No Jobs selected"); return; } } @@ -402,10 +422,10 @@ namespace VECTO3GUI2020.ViewModel.Implementation jobs = new IDocumentViewModel[] { jobToSimulate }; + } - - var sumFileWriter = new FileOutputWriter(GetOutputDirectory(Jobs.First(x => x.Selected).DataSource.SourceFile)); + var sumFileWriter = new FileOutputWriter(GetOutputDirectory(jobs.First().DataSource.SourceFile)); var sumContainer = new SummaryDataContainer(sumFileWriter); var jobContainer = new JobContainer(sumContainer); var mode = ExecutionMode.Declaration; @@ -447,10 +467,20 @@ namespace VECTO3GUI2020.ViewModel.Implementation switch (extension) { case Constants.FileExtensions.VectoJobFile: input = JSONInputDataFactory.ReadJsonJob(fullFileName); - var tmp = input as IDeclarationInputDataProvider; - mode = tmp?.JobInputData.SavedInDeclarationMode ?? false - ? ExecutionMode.Declaration - : ExecutionMode.Engineering; + switch (input) { + case IDeclarationInputDataProvider declInput: + mode = declInput.JobInputData.SavedInDeclarationMode + ? ExecutionMode.Declaration + : ExecutionMode.Engineering; + break; + case IMultistagePrimaryAndStageInputDataProvider primaryAndStage: + mode = ExecutionMode.Declaration; + break; + default: + input = null; + + break; + } break; case ".xml": var xdoc = XDocument.Load(fullFileName); @@ -466,7 +496,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation } mode = ExecutionMode.Declaration; - } else if (XMLNames.VectoOutputMultistage.Equals(rootNode, + } else if (XMLNames.VectoOutputMultistep.Equals(rootNode, StringComparison.InvariantCultureIgnoreCase)) { using (var reader = XmlReader.Create(fullFileName)) { input = new XMLDeclarationVIFInputData(xmlReader.Create(fullFileName) as IMultistageBusInputDataProvider, null); @@ -492,15 +522,13 @@ namespace VECTO3GUI2020.ViewModel.Implementation } var fileWriter = new FileOutputWriter(GetOutputDirectory(fullFileName)); - var runsFactory = new SimulatorFactory(mode, input, fileWriter) - { - WriteModalResults = Settings.Default.WriteModalResults, - ModalResults1Hz = Settings.Default.ModalResults1Hz, - Validate = Settings.Default.Validate, - ActualModalData = Settings.Default.ActualModalData, - SerializeVectoRunData = Settings.Default.SerializeVectoRunData, - - }; + var runsFactory = _simFactoryFactory.Factory(mode, input, fileWriter); + //var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, input, fileWriter); + runsFactory.WriteModalResults = Settings.Default.WriteModalResults; + runsFactory.ModalResults1Hz = Settings.Default.ModalResults1Hz; + runsFactory.Validate = Settings.Default.Validate; + runsFactory.ActualModalData = Settings.Default.ActualModalData; + runsFactory.SerializeVectoRunData = Settings.Default.SerializeVectoRunData; var stopwatch = new Stopwatch(); stopwatch.Start(); @@ -570,6 +598,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation var start = Stopwatch.StartNew(); jobContainer.Execute(true); + while (!jobContainer.AllCompleted) { if (ct.IsCancellationRequested) @@ -588,23 +617,26 @@ namespace VECTO3GUI2020.ViewModel.Implementation return; } - + Debug.WriteLine(Thread.CurrentThread.Name); var jobProgress = jobContainer.GetProgress(); var sumProgress = jobProgress.Sum(x => x.Value.Progress); var duration = start.Elapsed.TotalSeconds; - jobProgress.Select(x => x.Value.Progress); - - + //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, string.Join(", ", jobProgress.Select(x => string.Format("{0,4:P}", x.Value.Progress))))); - var justFinished = jobProgress.Where(x => x.Value.Done & !finishedRuns.Contains(x.Key)) + + var justFinished = jobProgress.Where(x => x.Value.Done & !finishedRuns.Contains(x.Key)) .ToDictionary(x => x.Key, x => x.Value); PrintRuns(justFinished, fileWriters, outputMessages); finishedRuns.AddRange(justFinished.Select(x => x.Key)); - await Task.Delay(100); + + var delayMs = 100; + Task.Delay(delayMs, ct).Wait(delayMs); } start.Stop(); @@ -637,31 +669,40 @@ namespace VECTO3GUI2020.ViewModel.Implementation ); } } - foreach (var jobEntry in jobs) - { - var w = new FileOutputWriter(GetOutputDirectory(jobEntry.DataSource.SourceFile)); - foreach (var entry in new Dictionary<string, string>() { { w.XMLFullReportName, "XML ManufacturereReport" }, { w.XMLCustomerReportName, "XML Customer Report" }, { w.XMLVTPReportName, "VTP Report" }, { w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File" } }) - { - if (File.Exists(entry.Key)) - { + + var outputWriters = jobContainer.GetOutputDataWriters(); + var sortedOutputWriters = outputWriters.OrderBy(ow => ow.JobFile); + foreach (var outputDataWriter in sortedOutputWriters) { + var writtenFiles = outputDataWriter.GetWrittenFiles(); + if (writtenFiles.IsNullOrEmpty()) { + continue; + } + var jobFileName = outputDataWriter.JobFile; + foreach (var entry in new Dictionary<ReportType, string> { + { ReportType.DeclarationReportPrimaryVehicleXML, "Primary Vehicle Information File" }, + { ReportType.DeclarationReportManufacturerXML, "XML Manufacturer Report" }, + { ReportType.DeclarationReportCustomerXML, "XML Customer Report" }, + { ReportType.DeclarationVTPReportXML, "VTP Report" }, + { ReportType.DeclarationReportMultistageVehicleXML, "VIF File" }, + }) { + if (writtenFiles.ContainsKey(entry.Key)) { outputMessages.Report( new MessageEntry() { Type = MessageType.StatusMessage, - Message = string.Format( - "{2} for '{0}' written to {1}", Path.GetFileName(jobEntry.DataSource.SourceFile), entry.Key, entry.Value), - Link = entry.Key - }); + Message = $"{entry.Value} for \n '{jobFileName}' \nwritten to \n '{writtenFiles[entry.Key]}'", + Link = writtenFiles[entry.Key], + } + ); } } } - - if (File.Exists(sumFileWriter.SumFileName)) + if (sumFileWriter.SumFileWritten) { outputMessages.Report(new MessageEntry() { Type = MessageType.StatusMessage, - Message = string.Format("Sum file written to {0}", sumFileWriter.SumFileName), + Message = $"Sum file written to {sumFileWriter.SumFileName}", Link = sumFileWriter.SumFileName, }); } @@ -672,24 +713,29 @@ namespace VECTO3GUI2020.ViewModel.Implementation Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds) }); - status.Report($"Simulation finished in {start.Elapsed.TotalSeconds} s"); + status.Report($"Simulation finished in {start.Elapsed.TotalSeconds,0:F1} s"); } private void PrintRuns(Dictionary<int, JobContainer.ProgressEntry> progress, Dictionary<int, FileOutputWriter> fileWriters, IProgress<MessageEntry> outputMessages) { foreach (var p in progress) { - var modFilename = fileWriters[p.Key] - .GetModDataFileName(p.Value.RunName, p.Value.CycleName, p.Value.RunSuffix); + var modFilename = "Add modFileName"; + if (fileWriters.ContainsKey(p.Key)) { + modFilename = fileWriters[p.Key] + .GetModDataFileName(p.Value.RunName, p.Value.CycleName, p.Value.RunSuffix); + + } var runName = string.Format("{0} {1} {2}", p.Value.RunName, p.Value.CycleName, p.Value.RunSuffix); - if (p.Value.Error != null) + if (p.Value.Error != null) { outputMessages.Report(new MessageEntry() { Type = MessageType.StatusMessage, Message = string.Format("Finished Run {0} with ERROR: {1}", runName, p.Value.Error.Message), - Link = modFilename + //Link = modFilename + //Link = modFilename //Link = "<CSV>" + modFilename }); } @@ -752,6 +798,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation private ICommand _openAdditionalJobInformationCommand; private IRelayCommand _openSourceFileCommand; private IRelayCommand _showSourceFileInExplorerCommand; + private readonly ISimulatorFactoryFactory _simFactoryFactory; public ICommand OpenSourceFileCommand @@ -794,11 +841,12 @@ namespace VECTO3GUI2020.ViewModel.Implementation { return _cancelSimulationCommand ?? (_cancelSimulationCommand = new RelayCommand(() => { _outputViewModel.AddMessage(new MessageEntry() { - Message="Canceling Simulation", + Message="Canceling Simulation - this operation can take some time", Type=MessageType.InfoMessage, }); _simulationLoggingEnabled = false; _cancellationTokenSource.Cancel(); + _status.Report(""); }, diff --git a/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs index 4d7a411dbd0b014efe4dea171c22882c9fb09281..9454c8c3a33eec87bc919532932cec88f7610813 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/MainWindowViewModel.cs @@ -5,6 +5,7 @@ using Ninject; using System.Diagnostics; using System.Windows.Input; using Castle.DynamicProxy.Generators.Emitters.SimpleAST; +using System.Reflection; using VECTO3GUI2020.Helper; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.Util; @@ -47,29 +48,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation CurrentViewModel = _viewModels[key]; } - public bool JobsSelected - { - get - { - return CurrentViewModel == _jobListVm; - } - } + public bool JobsSelected => CurrentViewModel == _jobListVm; - public bool SettingsSelected - { - get - { - return CurrentViewModel == _settingsViewModel; - } - } + public bool SettingsSelected => CurrentViewModel == _settingsViewModel; - public bool AboutSelected - { - get - { - return CurrentViewModel == _aboutViewModel; - } - } + public bool AboutSelected => CurrentViewModel == _aboutViewModel; public IMainViewModel CurrentViewModel { @@ -96,6 +79,9 @@ namespace VECTO3GUI2020.ViewModel.Implementation get => _jobListVm; set => SetProperty(ref _jobListVm, value); } + + public string Version => "VECTO Multistep " + Assembly.GetExecutingAssembly().GetName().Version + " (For Testing and Feedback)"; + #endregion #region Commands diff --git a/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs index 76246e6e1f270d47a5b61b183a99efa48c697a9a..3d25b5f92d4047893b0560da2cace6b606367073 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs @@ -70,19 +70,10 @@ namespace VECTO3GUI2020.ViewModel.Implementation { get { - return _closeWindowCommand ?? new RelayCommand<Window>(window => CloseWindow(window, _dialogHelper), window => true); + return _closeWindowCommand ?? new RelayCommand<Window>(window => CloseWindow(window, _dialogHelper, false), window => true); } } - private void CloseWindow(Window window, bool ask) - { - - } - - - - - public ICommand ChangeFilePath { get diff --git a/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs b/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs index cd12c7d033a295b2026e419f2a3283765df7905d..b2fa385daca8be4230abfe902ce4ffc68f39c981 100644 --- a/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Interfaces/Document/IDocumentViewModel.cs @@ -8,7 +8,9 @@ namespace VECTO3GUI2020.ViewModel.Interfaces.Document public interface IDocumentViewModel { string DocumentName { get; } - XmlDocumentType DocumentType { get; } + XmlDocumentType? DocumentType { get; } + + string DocumentTypeName { get; } DataSource DataSource { get; } IEditViewModel EditViewModel { get; } bool Selected { get; set; } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs index 35f6902108c8ea1bf70cc2668e799098cf94fd18..8b5c19076300cf87539b432c20dc33f6c75f7076 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/CreateVifViewModel.cs @@ -18,6 +18,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Model.Multistage; @@ -100,12 +101,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _dialogHelper = dialogHelper; _inputDataReader = inputDataReader; _additionalJobInfo = additionalJobInfo; + SetupBackingStorage(); additionalJobInfo.SetParent(this); - - SetupBackingStorage(); - - UpdateTitleAndDocumentName(); (this as INotifyPropertyChanged).PropertyChanged += CreateVifViewModel_PropertyChanged; @@ -157,16 +155,23 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { var inputDataProvider = inputData as JSONInputDataV10_PrimaryAndStageInputBus; Debug.Assert(inputDataProvider != null); - - if (inputDataProvider.StageInputData != null && (inputDataProvider.StageInputData.ExemptedVehicle != - inputDataProvider.PrimaryVehicle.ExemptedVehicle)) { - throw new VectoException("Can't combine exempted and non-exempted input data"); + try { + if (inputDataProvider.StageInputData != null && (inputDataProvider.StageInputData.ExemptedVehicle != + inputDataProvider.PrimaryVehicle.JobInputData.Vehicle + .ExemptedVehicle)) { + throw new VectoException("Can't combine exempted and non-exempted input data"); + } + + StageInputPath = inputDataProvider.StageInputData?.DataSource?.SourceFile; + PrimaryInputPath = inputDataProvider.PrimaryVehicle?.DataSource?.SourceFile; + } catch (Exception ex) { + _dialogHelper.ShowErrorMessage(ex.Message); } + Completed = inputDataProvider.Completed ?? false; - StageInputPath = inputDataProvider.StageInputData?.DataSource?.SourceFile; - PrimaryInputPath = inputDataProvider.PrimaryVehicle?.DataSource?.SourceFile; + DataSource = inputData.DataSource; UpdateTitleAndDocumentName(); } @@ -283,7 +288,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation if (path == null) { return null; } - + + var jsonJob = new JSONJob() { Header = new JSONJobHeader() { AppVersion = "Vecto3GUI2020", @@ -292,8 +298,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation FileVersion = JSONJobHeader.PrimaryAndInterimVersion }, Body = new JSONJobBody() { - PrimaryVehicle = PrimaryInputPath, - InterimStage = StageInputPath + PrimaryVehicle = PathHelper.GetRelativePath(path, PrimaryInputPath), + InterimStep = PathHelper.GetRelativePath(path, StageInputPath) } }; @@ -313,7 +319,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get => _saveJobAsCommand ?? (_saveJobAsCommand = new RelayCommand(() => { if (CanBeSaved()) { - var path = _dialogHelper.SaveToJsonDialog(); + var path = _dialogHelper.SaveToVectoJobDialog(); SaveJob(path); } })); @@ -332,8 +338,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { var inputData = _inputDataReader.Create(fileName) as IDeclarationInputDataProvider; vehicleInputData = inputData.JobInputData.Vehicle; - var type = vehicleInputData.GetType(); - valid = (inputData != null) && (vehicleInputData is XMLDeclarationInterimStageBusDataProviderV28) || (vehicleInputData is XMLDeclarationExemptedInterimStageBusDataProviderV28); + valid = (inputData != null) && (vehicleInputData is XMLDeclarationConventionalCompletedBusDataProviderV24) || (vehicleInputData is XMLDeclarationExemptedCompletedBusDataProviderV24); } catch (Exception e) { @@ -453,8 +458,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _documentName, value); } + //Remove this from + public XmlDocumentType? DocumentType => null; - public XmlDocumentType DocumentType => throw new NotImplementedException(); + public string DocumentTypeName => "New VIF"; public DataSource DataSource { diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs index af3d88a86b640e5f4852281fbfa2d656aaea7f68..3e29459e434faa8445d084e12e8bedbde8ae6d10 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs @@ -19,6 +19,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; using TUGraz.VectoCore.Models.Declaration; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Ninject; @@ -84,8 +85,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public class InterimStageBusVehicleViewModel_v2_8 : ViewModelBase, IMultistageVehicleViewModel, IVehicleComponentsDeclaration, IAdvancedDriverAssistantSystemDeclarationInputData, IDataErrorInfo { - public static readonly Type INPUTPROVIDERTYPE = typeof(XMLDeclarationInterimStageBusDataProviderV28); - public static readonly Type INPUTPROVIDERTYPEEXEMPTED = typeof(XMLDeclarationExemptedInterimStageBusDataProviderV28); + public static readonly Type INPUTPROVIDERTYPE = typeof(XMLDeclarationConventionalCompletedBusDataProviderV24); + public static readonly Type INPUTPROVIDERTYPEEXEMPTED = typeof(XMLDeclarationExemptedCompletedBusDataProviderV24); public static string VERSION = INPUTPROVIDERTYPE.ToString(); public static string VERSION_EXEMPTED = INPUTPROVIDERTYPEEXEMPTED.ToString(); @@ -202,11 +203,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation MultistageAirdragViewModel.AirdragViewModelChanged += ((sender, args) => { if (sender is IMultistageAirdragViewModel vm) { - if (AirdragModifiedMultistageMandatory) + if (AirdragModifiedMultistepMandatory) { if (vm.AirDragViewModel != null) { - AirdragModifiedMultistage = true; + AirdragModifiedMultistep = true; } } } @@ -221,16 +222,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation CreateParameterViewModels(); - if (consolidatedVehicleData?.AirdragModifiedMultistage != null) + if (consolidatedVehicleData?.AirdragModifiedMultistep != null) { - AirdragModifiedMultistageMandatory = true; - AirdragModifiedMultistageEditingEnabled = true; + AirdragModifiedMultistepMandatory = true; + AirdragModifiedMultistepEditingEnabled = true; } if (consolidatedVehicleData?.Components?.AirdragInputData != null) { - AirdragModifiedMultistageMandatory = true; - AirdragModifiedMultistageEditingEnabled = true; + AirdragModifiedMultistepMandatory = true; + AirdragModifiedMultistepEditingEnabled = true; } } @@ -265,6 +266,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation nameof(EcoRollTypeNullable), nameof(PredictiveCruiseControlNullable), nameof(ATEcoRollReleaseLockupClutch), + nameof(VehicleTypeApprovalNumber), }; foreach (var property in properties) { @@ -317,6 +319,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _parameterViewModels[nameof(PredictiveCruiseControlNullable)].EditingChangedCallback = ADASGroupEditingCallback; _parameterViewModels[nameof(ATEcoRollReleaseLockupClutch)].EditingChangedCallback = ADASGroupEditingCallback; + _parameterViewModels[nameof(ATEcoRollReleaseLockupClutch)].AllowNullValue = true; + Action<MultistageParameterViewModel> PassengerGroupEditingCallback = (MultistageParameterViewModel param) => { NumberOfPassengersEditingEnabled = param.EditingEnabled; }; @@ -331,12 +335,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation PassengerGroupEditingCallback; _parameterViewModels[nameof(AirdragModifiedEnum)].EditingChangedCallback = model => { - AirdragModifiedMultistageEditingEnabled = model.EditingEnabled; + AirdragModifiedMultistepEditingEnabled = model.EditingEnabled; }; //Setup allowed values - _parameterViewModels[nameof(VehicleCode)].AllowedItems = EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, VehicleCode>((TUGraz.VectoCommon.Models.VehicleCode .NOT_APPLICABLE)); @@ -348,6 +351,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _parameterViewModels[nameof(RegisteredClass)].AllowedItems = EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, RegistrationClass>(RegistrationClass.unknown); + _parameterViewModels[nameof(DoorDriveTechnology)].AllowedItems = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, ConsumerTechnology>( + ConsumerTechnology.Unknown); + //Setup additional consolidatedVehicleData _parameterViewModels[nameof(EngineStopStartNullable)].PreviousContent = ConsolidatedVehicleData?.ADAS?.EngineStopStart; @@ -407,7 +414,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation LegislativeClass = vehicleInputData.LegislativeClass; CurbMassChassis = vehicleInputData.CurbMassChassis; GrossVehicleMassRating = vehicleInputData.GrossVehicleMassRating; - AirdragModifiedMultistage = vehicleInputData.AirdragModifiedMultistage; + AirdragModifiedMultistep = vehicleInputData.AirdragModifiedMultistep; TankSystem = vehicleInputData.TankSystem; RegisteredClass = vehicleInputData.RegisteredClass; NumberPassengerSeatsUpperDeck = vehicleInputData.NumberPassengerSeatsUpperDeck; @@ -427,12 +434,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation EntranceHeight = vehicleInputData.EntranceHeight; DoorDriveTechnology = vehicleInputData.DoorDriveTechnology; VehicleDeclarationType = vehicleInputData.VehicleDeclarationType; + VehicleTypeApprovalNumber = vehicleInputData.VehicleTypeApprovalNumber; AdasEditingEnabled = vehicleInputData.ADAS != null; EngineStopStartNullable = vehicleInputData.ADAS?.EngineStopStart; EcoRollTypeNullable = vehicleInputData.ADAS?.EcoRoll; PredictiveCruiseControlNullable = vehicleInputData.ADAS?.PredictiveCruiseControl; ATEcoRollReleaseLockupClutch = vehicleInputData.ADAS?.ATEcoRollReleaseLockupClutch; - AirdragModifiedMultistage = vehicleInputData.AirdragModifiedMultistage; + AirdragModifiedMultistep = vehicleInputData.AirdragModifiedMultistep; foreach (var multistageParameterViewModel in _parameterViewModels.Values) { multistageParameterViewModel.UpdateEditingEnabled(); @@ -478,7 +486,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private bool? _lowEntry; private VehicleCode? _vehicleCode; private RegistrationClass? _registeredClass; - private bool? _airdragModifiedMultistage; + private bool? _airdragModifiedMultistep; private bool _airdragModifiedEditingEnabled = false; private LegislativeClass? _legislativeClass; private ConsumerTechnology? _doorDriveTechnology; @@ -693,14 +701,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get { - return _airdragModifiedMultistage.toAirdragModifiedEnum(); + return _airdragModifiedMultistep.toAirdragModifiedEnum(); } set { - var prevVal = AirdragModifiedMultistage; + var prevVal = AirdragModifiedMultistep; var newVal = value?.toNullableBool(); if (prevVal != newVal) { - AirdragModifiedMultistage = value?.toNullableBool(); + AirdragModifiedMultistep = value?.toNullableBool(); } if (_parameterViewModels.ContainsKey(nameof(AirdragModifiedEnum))) { @@ -713,8 +721,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { get { - if (_consolidatedVehicleData?.AirdragModifiedMultistage != null) { - return _consolidatedVehicleData.AirdragModifiedMultistage.toAirdragModifiedEnum(); + if (_consolidatedVehicleData?.AirdragModifiedMultistep != null) { + return _consolidatedVehicleData.AirdragModifiedMultistep.toAirdragModifiedEnum(); } else { return null; } @@ -723,15 +731,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - public bool? AirdragModifiedMultistage + public bool? AirdragModifiedMultistep { get { - return _airdragModifiedMultistage; + return _airdragModifiedMultistep; } set { - if (SetProperty(ref _airdragModifiedMultistage, value)) { + if (SetProperty(ref _airdragModifiedMultistep, value)) { if(value == false){ MultistageAirdragViewModel.AirDragViewModel = null; } else { @@ -742,13 +750,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } - public bool AirdragModifiedMultistageMandatory + public bool AirdragModifiedMultistepMandatory { - get => _airdragModifiedMultistageMandatory; - set => SetProperty(ref _airdragModifiedMultistageMandatory, value); + get => _airdragModifiedMultistepMandatory; + set => SetProperty(ref _airdragModifiedMultistepMandatory, value); } - public bool AirdragModifiedMultistageEditingEnabled + public bool AirdragModifiedMultistepEditingEnabled { get { @@ -757,7 +765,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set { var val = value; - if (AirdragModifiedMultistageMandatory) { + if (AirdragModifiedMultistepMandatory) { val = true; } else { val = false; @@ -803,6 +811,21 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _vehicleDeclarationType, value); } + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + public TableData BoostingLimitations { get; } + + private string _vehicleTypeApprovalNumber; + + public string VehicleTypeApprovalNumber + { + get => _vehicleTypeApprovalNumber; + set => SetProperty(ref _vehicleTypeApprovalNumber, value); + } + + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } + #endregion @@ -847,6 +870,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public IElectricStorageSystemDeclarationInputData ElectricStorage => throw new NotImplementedException(); public IElectricMachinesDeclarationInputData ElectricMachines => throw new NotImplementedException(); + public IIEPCDeclarationInputData IEPC { get; } #endregion @@ -873,8 +897,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { if (EngineStopStartNullable.HasValue || EcoRollTypeNullable.HasValue - || PredictiveCruiseControlNullable.HasValue - || ATEcoRollReleaseLockupClutch.HasValue) { + || PredictiveCruiseControlNullable.HasValue) { return this; } else { return null; @@ -1163,29 +1186,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } break; case nameof(AirdragModifiedEnum): - if (AirdragModifiedMultistageEditingEnabled && (AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN)) { + if (AirdragModifiedMultistepEditingEnabled && (AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN)) { result = "Air drag modified has to be set"; } break; case nameof(EcoRollTypeNullable): case nameof(EngineStopStartNullable): case nameof(PredictiveCruiseControlNullable): - case nameof(ATEcoRollReleaseLockupClutch): - if (AdasEditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null){ - result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; + case nameof(ATEcoRollReleaseLockupClutch): // only required for AT transmission + if (AdasEditingEnabled == true && (!_parameterViewModels[propertyName].AllowNullValue && this.GetType().GetProperty(propertyName).GetValue(this) == null)) { + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled."; } break; default: - if (_parameterViewModels[propertyName].EditingEnabled) { + if (_parameterViewModels[propertyName].EditingEnabled && !_parameterViewModels[propertyName].AllowNullValue) { var propertyValue = this.GetType().GetProperty(propertyName)?.GetValue(this); if (propertyValue == null) { result = - $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; + $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled."; } else { - if (propertyValue.GetType() == typeof(string) && string.IsNullOrWhiteSpace(propertyValue as string)) + if (propertyValue is string value && string.IsNullOrWhiteSpace(value)) { result = - $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; + $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled."; } } } @@ -1220,7 +1243,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } #endregion - private bool _airdragModifiedMultistageMandatory; + private bool _airdragModifiedMultistepMandatory; private int? _numberPassengersStandingLowerDeck; private int? _numberPassengersStandingUpperDeck; private bool _exemptedVehicle; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs index 573b344afab3f9dc5da11024a6c8745a7d75a416..629a89884c5ac71f6cf8e0b85877504f5eda9ee7 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/ManufacturingStageViewModel_v0_1.cs @@ -20,16 +20,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public class ManufacturingStageViewModel_v0_1 : StageViewModelBase, IManufacturingStageViewModel { - public DigestData HashPreviousStage + public DigestData HashPreviousStep { - get => _hashPreviousStage; - set => SetProperty(ref _hashPreviousStage, value); + get => _hashPreviousStep; + set => SetProperty(ref _hashPreviousStep, value); } - public int StageCount + public int StepCount { - get => _stageCount; - set => SetProperty(ref _stageCount, value); + get => _stepCount; + set => SetProperty(ref _stepCount, value); } public IVehicleDeclarationInputData Vehicle => _vehicleViewModel; @@ -60,7 +60,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation Title = "Edit Manufacturing Stage"; - _stageCount = consolidatedManufacturingStageInputData?.StageCount + 1 ?? 2; + _stepCount = consolidatedManufacturingStageInputData?.StepCount + 1 ?? 2; _consolidatedManufacturingStageInputData = consolidatedManufacturingStageInputData; @@ -76,8 +76,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation - private int _stageCount; - private DigestData _hashPreviousStage; + private int _stepCount; + private DigestData _hashPreviousStep; private IManufacturingStageInputData _consolidatedManufacturingStageInputData; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs index a1a749c1215e0d97958825f8dfd3728b1653647c..4752c7bb662bf5d85834391a314dcadc2f61b985 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs @@ -53,17 +53,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public MultistageAuxiliariesViewModel(IBusAuxiliariesDeclarationData consolidatedAuxiliariesInputData) { ConsolidatedInputData = consolidatedAuxiliariesInputData; - if (ConsolidatedInputData?.HVACAux?.HeatPumpPassengerCompartments != null) { - _consolidatedHeatPumpConfigurationsPassenger = new ObservableCollection<HeatPumpConfiguration>(); - foreach (var (heatPumpType, heatPumpMode) in ConsolidatedInputData?.HVACAux?.HeatPumpPassengerCompartments) { - ConsolidatedHeatPumpConfigurationsPassenger.Add(new HeatPumpConfiguration() - { - HeatPumpMode = heatPumpMode, - HeatPumpType = heatPumpType, - IsReadOnly = true, - }); - } - } CreateParameterViewModels(); } @@ -80,8 +69,10 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation nameof(HeadlightsLED), nameof(SystemConfiguration), - nameof(HeatPumpModeDriverCompartment), - nameof(HeatPumpTypeDriverCompartment), + nameof(HeatPumpTypeHeatingPassengerCompartment), + nameof(HeatPumpTypeCoolingPassengerCompartment), + nameof(HeatPumpTypeHeatingDriverCompartment), + nameof(HeatPumpTypeCoolingDriverCompartment), nameof(AuxHeaterPower), nameof(DoubleGlazing), @@ -129,14 +120,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ConsolidatedInputData?.ElectricConsumers.HeadlightsLED; _parameterViewModels[nameof(SystemConfiguration)].PreviousContent = ConsolidatedInputData?.HVACAux.SystemConfiguration; - _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].PreviousContent = - ConsolidatedInputData?.HVACAux.HeatPumpModeDriverCompartment; - //_parameterViewModels[nameof(HeatPumpTypePassengerCompartment)].PreviousContent = - // ConsolidatedInputData?.HVACAux.HeatPumpTypePassengerCompartment; - _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].PreviousContent = - ConsolidatedInputData?.HVACAux.HeatPumpTypeDriverCompartment; - //_parameterViewModels[nameof(HeatPumpModePassengerCompartment)].PreviousContent = - // ConsolidatedInputData?.HVACAux.HeatPumpModePassengerCompartment; + _parameterViewModels[nameof(HeatPumpTypeCoolingDriverCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypeCoolingDriverCompartment; + _parameterViewModels[nameof(HeatPumpTypeHeatingDriverCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypeHeatingDriverCompartment; + _parameterViewModels[nameof(HeatPumpTypeCoolingPassengerCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypeCoolingPassengerCompartment; + _parameterViewModels[nameof(HeatPumpTypeHeatingPassengerCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypeHeatingPassengerCompartment; + _parameterViewModels[nameof(AuxHeaterPower)].PreviousContent = ConsolidatedInputData?.HVACAux.AuxHeaterPower; _parameterViewModels[nameof(DoubleGlazing)].PreviousContent = @@ -157,14 +149,20 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation }; _parameterViewModels[nameof(SystemConfiguration)].EditingChangedCallback = HeatPumpGroupEditingEnabledCallback; - _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].EditingChangedCallback = + _parameterViewModels[nameof(HeatPumpTypeCoolingDriverCompartment)].EditingChangedCallback = HeatPumpGroupEditingEnabledCallback; - _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].EditingChangedCallback = + _parameterViewModels[nameof(HeatPumpTypeHeatingDriverCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpTypeCoolingPassengerCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpTypeHeatingPassengerCompartment)].EditingChangedCallback = HeatPumpGroupEditingEnabledCallback; - //Setup AllowedValues - HeatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(HeatPumpMode.N_A); + HeatPumpTypeDriverAllowedValues = + EnumHelper.GetValuesAsObservableCollection<Enum, HeatPumpType>(); + + HeatPumpTypePassengerAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpType>(HeatPumpType.not_applicable); SystemConfigurationAllowedValues = EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, BusHVACSystemConfiguration>( @@ -191,21 +189,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation HeatPumpGroupEditingEnabled = componentsAuxiliaryInputData.HVACAux != null; SystemConfiguration = componentsAuxiliaryInputData.HVACAux?.SystemConfiguration; - HeatPumpTypeDriverCompartment = componentsAuxiliaryInputData.HVACAux?.HeatPumpTypeDriverCompartment; - HeatPumpModeDriverCompartment = componentsAuxiliaryInputData.HVACAux?.HeatPumpModeDriverCompartment; - HeatPumpConfigurationsPassenger = null; - HeatPumpConfigurationsPassenger = new ObservableCollection<HeatPumpConfiguration>(); - if (componentsAuxiliaryInputData?.HVACAux?.HeatPumpPassengerCompartments != null) - { - foreach (var (heatPumpType, heatPumpMode) in componentsAuxiliaryInputData.HVACAux.HeatPumpPassengerCompartments) - { - HeatPumpConfigurationsPassenger.Add(new HeatPumpConfiguration() - { - HeatPumpType = heatPumpType, - HeatPumpMode = heatPumpMode, - }); - } - } + HeatPumpTypeCoolingDriverCompartment = + componentsAuxiliaryInputData.HVACAux?.HeatPumpTypeCoolingDriverCompartment; + HeatPumpTypeHeatingDriverCompartment = + componentsAuxiliaryInputData.HVACAux?.HeatPumpTypeHeatingDriverCompartment; + HeatPumpTypeCoolingPassengerCompartment = + componentsAuxiliaryInputData.HVACAux?.HeatPumpTypeCoolingPassengerCompartment; + HeatPumpTypeHeatingPassengerCompartment = + componentsAuxiliaryInputData.HVACAux?.HeatPumpTypeHeatingPassengerCompartment; @@ -225,6 +216,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation foreach (var multistageParameterViewModel in _parameterViewModels.Values) { + //TODO: Nullable values getting enabled on loading a file. multistageParameterViewModel.UpdateEditingEnabled(); } OnPropertyChanged(String.Empty); @@ -296,19 +288,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #region HVAC - private bool _heatPumpGroupEditingEnabled; - private BusHVACSystemConfiguration? _systemConfiguration; - private HeatPumpType? _heatPumpTypeDriverCompartment; - private HeatPumpMode? _heatPumpModeDriverCompartment; - - - - - public IHVACBusAuxiliariesDeclarationData HVACAux - { - get => this; - set => throw new NotImplementedException(); - } + private Watt _auxHeaterPower; @@ -367,226 +347,32 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public bool EngineWasteGasHeatExchanger => throw new NotImplementedException(); - #region Heatpump - - private ICommand _addPassengerHeatpumpCommand; - - public ICommand AddPassengerHeatpumpCommand - { - get - { - return _addPassengerHeatpumpCommand ?? (_addPassengerHeatpumpCommand = - new RelayCommand(() => { - HeatPumpGroupEditingEnabled = true; - if (HeatPumpConfigurationsPassenger == null) { - HeatPumpConfigurationsPassenger = new ObservableCollection<HeatPumpConfiguration>(); - } - - HeatPumpConfigurationsPassenger.Add(new HeatPumpConfiguration()); - RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged(); - - }, - () => true)); - } - } - - private IRelayCommand _removePassengerHeatpumpCommand; - - public IRelayCommand RemovePassengerHeatpumpCommand - { - get - { - return _removePassengerHeatpumpCommand ?? (_removePassengerHeatpumpCommand = - new RelayCommand<HeatPumpConfiguration>(hp => { - if (HeatPumpGroupEditingEnabled && HeatPumpConfigurationsPassenger.Count > 1) { - HeatPumpConfigurationsPassenger?.Remove(hp); - RemovePassengerHeatpumpCommand.NotifyCanExecuteChanged(); - } - }, hp => HeatPumpConfigurationsPassenger.Count > 1)); - } - } - - public IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments{ - get - { - IList<Tuple<HeatPumpType,HeatPumpMode>> list = null; - if (HeatPumpConfigurationsPassenger != null) { - list = new List<Tuple<HeatPumpType, HeatPumpMode>>(); - foreach (var heatPumpConfiguration in HeatPumpConfigurationsPassenger) - { - list.Add(new Tuple<HeatPumpType, HeatPumpMode>((HeatPumpType)heatPumpConfiguration.HeatPumpType, (HeatPumpMode)heatPumpConfiguration.HeatPumpMode)); - } - } - - - return list; - } - } - - public ObservableCollection<HeatPumpConfiguration> ConsolidatedHeatPumpConfigurationsPassenger - { - get => _consolidatedHeatPumpConfigurationsPassenger; - private set => SetProperty(ref _consolidatedHeatPumpConfigurationsPassenger, value); - } - - public ObservableCollection<HeatPumpConfiguration> HeatPumpConfigurationsPassenger - { - get => _heatPumpConfigurationsPassenger; - private set => SetProperty(ref _heatPumpConfigurationsPassenger, value); - } + private bool _heatPumpGroupEditingEnabled; + private BusHVACSystemConfiguration? _systemConfiguration; + private HeatPumpType? _heatPumpTypeCoolingDriverCompartment; + private HeatPumpType? _heatPumpTypeHeatingDriverCompartment; + private HeatPumpType? _heatPumpTypeCoolingPassengerCompartment; + private HeatPumpType? _heatPumpTypeHeatingPassengerCompartment; + private ObservableCollection<Enum> _heatPumpTypeDriverCompartmentAllowedValues; + private ObservableCollection<Enum> _heatPumpTypePassengerCompartmentAllowedValues; - public class HeatPumpConfiguration : ViewModelBase, ITuple, IDataErrorInfo + public IHVACBusAuxiliariesDeclarationData HVACAux { - public MultistageParameterViewModel HeatPumpTypeVM { get; } - public MultistageParameterViewModel HeatPumpModeVM { get; } - - private HeatPumpType? _heatPumpType; - private HeatPumpMode? _heatPumpMode; - - public HeatPumpType? HeatPumpType - { - get => _heatPumpType; - set - { - if (SetProperty(ref _heatPumpType, value)) { - - if (value == TUGraz.VectoCommon.BusAuxiliaries.HeatPumpType.none) - { - HeatPumpModeVM.AllowedItems = - EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>( - items: TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.N_A); - } - else - { - HeatPumpModeVM.AllowedItems = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( - items: TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.N_A); - } - - HeatPumpTypeVM.CurrentContent = value; - } - } - } - - - public HeatPumpMode? HeatPumpMode - { - get => _heatPumpMode; - set - { - if (SetProperty(ref _heatPumpMode, value)) { - HeatPumpModeVM.CurrentContent = value; - } - } - } - public HeatPumpConfiguration() - { - HeatPumpModeVM = new MultistageParameterViewModel(nameof(HeatPumpMode), null, this, ViewMode.COMBOBOX, - mandatory: true, resourceManagers: new ResourceManager[] { - BusStrings.ResourceManager, - Strings.ResourceManager, - }) { - AllowedItems = EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(items: TUGraz.VectoCommon.BusAuxiliaries.HeatPumpMode.N_A) - }; - HeatPumpTypeVM = new MultistageParameterViewModel(nameof(HeatPumpType), null, this, ViewMode.COMBOBOX, - mandatory: true, resourceManagers: new ResourceManager[] { - BusStrings.ResourceManager, - Strings.ResourceManager, - }); - } - - public bool IsReadOnly - { - get => HeatPumpModeVM.IsReadOnly && HeatPumpTypeVM.IsReadOnly; - set - { - HeatPumpTypeVM.IsReadOnly = value; - HeatPumpModeVM.IsReadOnly = value; - } - } - - #region Implementation of ITuple - - int ITuple.Length => 2; - - object ITuple.this[int index] - { - get - { - return null; - } - } - - #endregion - - #region Implementation of IDataErrorInfo - - string IDataErrorInfo.this[string columnName] - { - get - { - string result = null; - switch (columnName) { - case nameof(HeatPumpType): - if (HeatPumpType == null) { - result = $"{columnName} must not be empty"; - } - break; - case nameof(HeatPumpMode): - if (HeatPumpMode == null) { - result = $"{columnName} must not be empty"; - } - break; - default: - result = null; - break; - } - - if (result == null) - { - if (Errors.ContainsKey(columnName)) - Errors.Remove(columnName); - } - else - { - Errors[columnName] = result; - } - - - - return result; - } - } - - private Dictionary<string, string> Errors { get; } = new Dictionary<string, string>(); - - public bool HasErrors - { - get => !Errors.IsNullOrEmpty(); - - } - string IDataErrorInfo.Error => String.Join(",", Errors.Values); - - #endregion + get => this; + set => throw new NotImplementedException(); } - public bool HeatPumpGroupEditingEnabled { get => _heatPumpGroupEditingEnabled; set { if (SetProperty(ref _heatPumpGroupEditingEnabled, value)) { - _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].EditingEnabled = value; - _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].EditingEnabled = value; _parameterViewModels[nameof(SystemConfiguration)].EditingEnabled = value; - if (value == false) { - HeatPumpConfigurationsPassenger = null; - } else { - if (HeatPumpConfigurationsPassenger == null || HeatPumpConfigurationsPassenger.Count == 0) { - AddPassengerHeatpumpCommand.Execute(null); - } - } + _parameterViewModels[nameof(HeatPumpTypeCoolingDriverCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpTypeCoolingPassengerCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpTypeHeatingDriverCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpTypeHeatingPassengerCompartment)].EditingEnabled = value; } } } @@ -607,58 +393,88 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public BusHVACSystemConfiguration? SystemConfiguration { get => _systemConfiguration; - set => SetProperty(ref _systemConfiguration, value); + set { + if (SetProperty(ref _systemConfiguration, value)) { + switch (value) { + case BusHVACSystemConfiguration.Configuration6: + case BusHVACSystemConfiguration.Configuration10: + HeatPumpTypeDriverAllowedValues = + EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpType>(HeatPumpType + .not_applicable); + break; + default: + HeatPumpTypeDriverAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpType>(HeatPumpType + .not_applicable); + break; + } + }} } - public HeatPumpType? HeatPumpTypeDriverCompartment + #region Implementation of IHVACBusAuxiliariesDeclarationData + + public HeatPumpType? HeatPumpTypeCoolingDriverCompartment { - get => _heatPumpTypeDriverCompartment; + get => _heatPumpTypeCoolingDriverCompartment; set { - if (SetProperty(ref _heatPumpTypeDriverCompartment, value)) { - if (value == HeatPumpType.none) - { - HeatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>(items: HeatPumpMode.N_A); - - } - else - { - HeatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( - items: HeatPumpMode.N_A); + SetProperty(ref _heatPumpTypeCoolingDriverCompartment, value); + } + } - } + public ObservableCollection<Enum> HeatPumpTypeDriverAllowedValues + { + get => _heatPumpTypeDriverCompartmentAllowedValues; + set + { + if (SetProperty(ref _heatPumpTypeDriverCompartmentAllowedValues, value)) { + _parameterViewModels[nameof(HeatPumpTypeCoolingDriverCompartment)].AllowedItems = value; + _parameterViewModels[nameof(HeatPumpTypeHeatingDriverCompartment)].AllowedItems = value; + } + } + } + public ObservableCollection<Enum> HeatPumpTypePassengerAllowedValues + { + get => _heatPumpTypePassengerCompartmentAllowedValues; + set { + if (SetProperty(ref _heatPumpTypePassengerCompartmentAllowedValues, value)) { + _parameterViewModels[nameof(HeatPumpTypeCoolingPassengerCompartment)].AllowedItems = value; + _parameterViewModels[nameof(HeatPumpTypeHeatingPassengerCompartment)].AllowedItems = value; } - } + } } - public HeatPumpMode? HeatPumpModeDriverCompartment + public HeatPumpType? HeatPumpTypeHeatingDriverCompartment { - get => _heatPumpModeDriverCompartment; - set => SetProperty(ref _heatPumpModeDriverCompartment, value); + get => _heatPumpTypeHeatingDriverCompartment; + set + { + SetProperty(ref _heatPumpTypeHeatingDriverCompartment, value); + } } - private ObservableCollection<Enum> _heatPumpModeDriverCompartmentAllowedValues; - - public ObservableCollection<Enum> HeatPumpModeDriverCompartmentAllowedValues + public HeatPumpType? HeatPumpTypeCoolingPassengerCompartment { - get + get => _heatPumpTypeCoolingPassengerCompartment; + set { - return _heatPumpModeDriverCompartmentAllowedValues; + SetProperty(ref _heatPumpTypeCoolingPassengerCompartment, value); } - private set + } + + public HeatPumpType? HeatPumpTypeHeatingPassengerCompartment + { + get => _heatPumpTypeHeatingPassengerCompartment; + set { - if (SetProperty(ref _heatPumpModeDriverCompartmentAllowedValues, value)) { - _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].AllowedItems = value; - }; + SetProperty(ref _heatPumpTypeHeatingPassengerCompartment, value); } } #endregion - #endregion + #region IElectricConsumersDeclaration //LED lights @@ -714,8 +530,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private CompressorDrive _compressorDrive; private Dictionary<string, MultistageParameterViewModel> _parameterViewModels; - private ObservableCollection<HeatPumpConfiguration> _consolidatedHeatPumpConfigurationsPassenger; - private ObservableCollection<HeatPumpConfiguration> _heatPumpConfigurationsPassenger; public CompressorDrive CompressorDrive @@ -767,6 +581,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public AlternatorType AlternatorTechnology => throw new NotImplementedException(); public IList<IAlternatorDeclarationInputData> Alternators => throw new NotImplementedException(); + public bool ESSupplyFromHEVREESS { get; } public IList<IBusAuxElectricStorageDeclarationInputData> ElectricStorage => throw new NotImplementedException(); public bool SmartElectrics => throw new NotImplementedException(); @@ -812,18 +627,20 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation string result = null; switch (propertyName) { - case nameof(HeatPumpTypeDriverCompartment): - case nameof(HeatPumpModeDriverCompartment): + case nameof(HeatPumpTypeCoolingPassengerCompartment): + case nameof(HeatPumpTypeCoolingDriverCompartment): + case nameof(HeatPumpTypeHeatingPassengerCompartment): + case nameof(HeatPumpTypeHeatingDriverCompartment): case nameof(SystemConfiguration): if (HeatPumpGroupEditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) { - result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled."; } break; default: if (_parameterViewModels[propertyName].EditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) { - result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled."; } break; } @@ -851,13 +668,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation string result = string.Empty; var auxVmError = String.Join(",", Errors.Values); result = auxVmError; - if (HeatPumpConfigurationsPassenger != null) { - foreach (var heatPumpConfiguration in HeatPumpConfigurationsPassenger) { - if (heatPumpConfiguration.HasErrors) { - result += "," + ((IDataErrorInfo)heatPumpConfiguration).Error; - } - } - } return result; } @@ -868,17 +678,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get { var auxVmHasErrors = !Error.IsNullOrEmpty(); - var passengerHeatPumpsHaveError = false; - if (HeatPumpConfigurationsPassenger != null) { - foreach (var heatPump in HeatPumpConfigurationsPassenger) { - if (heatPump.HasErrors) { - passengerHeatPumpsHaveError = true; - break; - } - } - } - return auxVmHasErrors || passengerHeatPumpsHaveError; + return auxVmHasErrors; } } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs index 9afa71ae8a6e55f181f1dd5f606c360fad09a14e..32ac07cef143d4930f5351093dd56fa456764d32 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageJobViewModel_v0_1.cs @@ -5,7 +5,9 @@ using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; +using System.Resources; using System.Runtime.CompilerServices; +using System.Text; using System.Windows; using System.Windows.Forms; using System.Windows.Input; @@ -18,12 +20,15 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; +using VECTO3GUI2020.Helper.Converter; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Properties; using VECTO3GUI2020.Util; @@ -80,20 +85,21 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation IMultistageDependencies multistageDependencies, IXMLInputDataReader inputDataReader, IJobListViewModel jobListViewModel, - IAdditionalJobInfoViewModel additionalJobInfo) + IAdditionalJobInfoViewModel additionalJobInfo, + ISimulatorFactoryFactory simulatorFactoryFactory) { _dataSource = inputData.DataSource; - Title = $"Edit Multistage Job - {Path.GetFileName(_dataSource.SourceFile)}"; + Title = GUILabels.Edit_Multistep_Job + $" - {Path.GetFileName(_dataSource.SourceFile)}"; _jobInputData = inputData.JobInputData; _jobListViewModel = jobListViewModel; _inputData = inputData; _vmFactory = vmFactory; + _simFactoryFactory = simulatorFactoryFactory; _consolidateManufacturingStage = _jobInputData.ConsolidateManufacturingStage; _manufacturingStages = _jobInputData.ManufacturingStages; _primaryVehicle = _jobInputData.PrimaryVehicle; _dialogHelper = multistageDependencies.DialogHelperLazy; - _inputDataReader = inputDataReader; _inputComplete = inputData.JobInputData.InputComplete; _invalidEntries = inputData.JobInputData?.InvalidEntries?.Distinct().ToList(); _additionalJobInfoVm = additionalJobInfo; @@ -135,11 +141,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation #region Commands - - - - - private ICommand _saveVifCommand; public ICommand SaveVIFCommand @@ -206,65 +207,122 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation FileOutputVIFWriter writer = null, IDialogHelper dialogHelper = null) { try { - FileHelper.CreateDirectory(outputFile); + if (writer == null) { var numberOfManufacturingStages = vifData.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? 0; writer = new FileOutputVIFWriter(outputFile, numberOfManufacturingStages); } - var inputData = - new XMLDeclarationVIFInputData(vifData.MultistageJobInputData, vifData.VehicleInputData); + var inputData = new XMLDeclarationVIFInputData(vifData.MultistageJobInputData, vifData.VehicleInputData); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer); - var jobContainer = new JobContainer(new NullSumWriter()); + var factory = _simFactoryFactory.Factory(ExecutionMode.Declaration, inputData, writer); + //var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + FileHelper.CreateDirectory(outputFile); - var runs = factory.SimulationRuns().ToList(); - foreach (var run in runs) { - jobContainer.AddRun(run); - } + var jobContainer = new JobContainer(new NullSumWriter()); - jobContainer.Execute(); - jobContainer.WaitFinished(); - - using (var reader = XmlReader.Create(writer.XMLMultistageReportFileName)) { - var validator = new XMLValidator(reader); - var valid = validator.ValidateXML(XmlDocumentType.MultistageOutputData); - if (!valid) { - dialogHelper?.ShowMessageBox($"Error writing VIF {validator.ValidationError}", "Error", - MessageBoxButton.OK, MessageBoxImage.Error); - Debug.WriteLine("Invalid Outputfile"); - return null; - } else { - dialogHelper?.ShowMessageBox($"Written to {writer.XMLMultistageReportFileName}", "Info", - MessageBoxButton.OK, MessageBoxImage.Information); - - var runSimulation = vifData.VehicleInputData.VehicleDeclarationType == VehicleDeclarationType.final && - (_dialogHelper.Value.ShowMessageBox("Do you want to start the simulation?", - "Run Simulation", - MessageBoxButton.YesNo, - MessageBoxImage.Question) == MessageBoxResult.Yes); - _jobListViewModel.AddJobAsync(writer.XMLMultistageReportFileName, runSimulation); - - Debug.WriteLine($"Written to {writer.XMLMultistageReportFileName}"); - return writer.XMLMultistageReportFileName; - } - } + jobContainer.AddRuns(factory); + jobContainer.Execute(); + jobContainer.WaitFinished(); + dialogHelper?.ShowMessageBox($"Written to {writer.XMLMultistageReportFileName}", "Info", + MessageBoxButton.OK, MessageBoxImage.Information); + + var runSimulation = vifData.VehicleInputData.VehicleDeclarationType == VehicleDeclarationType.final && + (_dialogHelper.Value.ShowMessageBox("Do you want to start the simulation?", + "Run Simulation", + MessageBoxButton.YesNo, + MessageBoxImage.Question) == MessageBoxResult.Yes); + _jobListViewModel.AddJobAsync(writer.XMLMultistageReportFileName, runSimulation); + + Debug.WriteLine($"Written to {writer.XMLMultistageReportFileName}"); + return writer.XMLMultistageReportFileName; + }catch (Exception e) { dialogHelper?.ShowMessageBox($"{e.GetInnerExceptionMessages()}", "Error writing VIF", MessageBoxButton.OK, MessageBoxImage.Error); - return null; } + return null; } + // private bool WriteTempVIFAndValidate(XMLDeclarationVIFInputData inputData, FileOutputVIFWriter writer, IDialogHelper dialogHelper) + // { + // var tempWriter = new TempFileOutputWriter(writer); + // var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, tempWriter); + + // var jobContainer = new JobContainer(new NullSumWriter()); + + // jobContainer.AddRuns(factory); + // jobContainer.Execute(); + // jobContainer.WaitFinished(); + + // var resultXDoc = tempWriter.GetDocument(ReportType.DeclarationReportMultistageVehicleXML); + + + // using (var reader = resultXDoc.Root.CreateReader()) + // { + // var validator = new XMLValidator(reader); + // var valid = validator.ValidateXML(XmlDocumentType.MultistepOutputData); + // if (!valid) + // { + // dialogHelper?.ShowMessageBox($"Error writing VIF {validator.ValidationError}", "Error", + // MessageBoxButton.OK, MessageBoxImage.Error); + // Debug.WriteLine("Invalid Outputfile"); + // return false; + // } + // } + // using (var reader = resultXDoc.Root.CreateReader()) + // { + + // if (inputData.VehicleInputData.VehicleDeclarationType == VehicleDeclarationType.final) + // { + // var inputDataProvider = _inputDataReader.Create(reader) as IMultistageBusInputDataProvider; + // if (!inputDataProvider.JobInputData.InputComplete) + // { + // var errorCaption = "Step marked as final with incomplete/invalid input"; + // var errorStringBuilder = new StringBuilder(); + // errorStringBuilder.AppendLine("The following parameters are invalid:\n"); + // var converter = new PropertyNameToLabelTextConverter(); + // var resourceManagers = new List<ResourceManager>() + // { + // GUILabels.ResourceManager, + // BusStrings.ResourceManager, + // Strings.ResourceManager + // }; + // foreach (var invalidEntry in inputDataProvider.JobInputData.InvalidEntries) + // { + // string name; + // var conversionResult = converter.Convert(invalidEntry, + // typeof(string), + // resourceManagers, + // System.Globalization.CultureInfo.CurrentCulture); + // if (conversionResult is string convString) + // { + // name = convString; + // } + // else + // { + // name = invalidEntry; + // } + // errorStringBuilder.AppendLine(name); + // } + // dialogHelper?.ShowErrorMessage(errorStringBuilder.ToString(), errorCaption); + // return false; + // } + + // } + // } + + - - private readonly Lazy<IDialogHelper> _dialogHelper; - private readonly IXMLInputDataReader _inputDataReader; - private string _vehicleInputDataFilePath = null; + + // return true; + //} + + private readonly Lazy<IDialogHelper> _dialogHelper; private readonly IMultistageDependencies _multistageDependencies; private readonly DataSource _dataSource; private readonly IMultistageBusInputDataProvider _inputData; @@ -272,14 +330,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private readonly bool _exempted; private readonly IJobListViewModel _jobListViewModel; private readonly IList<string> _invalidEntries; + private readonly ISimulatorFactoryFactory _simFactoryFactory; public string VehicleInputDataFilePath { - get => ManufacturingStageViewModel.InputDataFilePath; + get => ManufacturingStageViewModel.VehicleInputDataFilePath; set { - ManufacturingStageViewModel.InputDataFilePath = value; + ManufacturingStageViewModel.VehicleInputDataFilePath = value; OnPropertyChanged(); } } @@ -290,7 +349,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public string DocumentName => Path.GetFileNameWithoutExtension(_inputData.DataSource.SourceFile); - public XmlDocumentType DocumentType => XmlDocumentType.MultistageOutputData; + public XmlDocumentType? DocumentType => XmlDocumentType.MultistepOutputData; + + public string DocumentTypeName => DocumentType?.GetName(); public DataSource DataSource => _dataSource; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs index 17248322fe92fd3e603b09c24df0331e3cecb515..a94722ca574a88ef44da2a7f57dc338d2ffa3202 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageParameterViewModel.cs @@ -37,6 +37,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private object _currentContent; private object _dummyContent; private bool _mandatory; + private bool _allowNullValue; private object _storedContent; private string _label; private ObservableCollection<Enum> _allowedItems; @@ -207,6 +208,16 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } + public bool AllowNullValue + { + get => _allowNullValue; + set + { + SetProperty(ref _allowNullValue, value); + UpdateValueFieldEditable(); + } + } + public bool EditingEnabled { get => _editingEnabled; @@ -398,10 +409,15 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation /// <returns></returns> public bool UpdateEditingEnabled() { - if (CurrentContent == null) { - EditingEnabled = false; - } else { - EditingEnabled = true; + if (!AllowNullValue) { + if (CurrentContent == null) + { + EditingEnabled = false; + } + else + { + EditingEnabled = true; + } } return EditingEnabled; diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs index 5d4332410de37846f6c7465fa81b1ab649a705dc..b3bfb612b3134a43abc35ce54a3040a5330b73e0 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/NewMultiStageJobViewModel.cs @@ -54,7 +54,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation _dialogHelper = dialogHelper; _vmFactory = vmFactory; _jobListViewModel = jobListViewModel; - Title = "New Multistage File"; + Title = GUILabels.New_Multistep_File; VifPath = "Select VIF File"; } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs index 2b08c6e6e471c1e5e57d190a55f23cfcf758ff79..2f3fc4db66874cb05282152a85d2e282062fdbd4 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageInputViewModel.cs @@ -6,6 +6,7 @@ using Castle.Core.Smtp; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Utils; +using VECTO3GUI2020.Properties; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle; using VECTO3GUI2020.ViewModel.Interfaces; @@ -42,9 +43,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation ? InterimStageBusVehicleViewModel_v2_8.VERSION_EXEMPTED : InterimStageBusVehicleViewModel_v2_8.VERSION) as IMultistageVehicleViewModel; - Title = "Edit Stage Input - New File"; + Title = $"{GUILabels.Edit_step_input} - New file"; - _documentName = $"New {(exemptedVehicle ? "Exempted " : "")}Stage Input {++_newDocumentCounter}"; + _documentName = $"New {(exemptedVehicle ? "exempted " : "")}step input {++_newDocumentCounter}"; Init(); } @@ -56,8 +57,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation (_vehicleViewModel as InterimStageBusVehicleViewModel_v2_8).ShowConsolidatedData = false; _dataSource = inputData.DataSource; + VehicleInputDataFilePath = _dataSource.SourceFile; - Title = $"Edit Stage Input - {Path.GetFileName(_dataSource.SourceFile)}"; + Title = $"{GUILabels.Edit_step_input} - {Path.GetFileName(_dataSource.SourceFile)}"; Init(); } @@ -69,6 +71,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation protected override void LoadStageInputDataFollowUp(IDeclarationInputDataProvider loadedInputData) { DataSource = loadedInputData.DataSource; + VehicleInputDataFilePath = DataSource.SourceFile; UpdateTitle(); DocumentName = loadedInputData.JobInputData.JobName; } @@ -77,9 +80,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation private void UpdateTitle() { - Title = "Edit Stage Input - " + ((_dataSource?.SourceFile != null) + Title = GUILabels.Edit_step_input + " - " + ((_dataSource?.SourceFile != null) ? Path.GetFileName(_dataSource.SourceFile) - : "New File"); + : "New file"); } private void Init() @@ -101,7 +104,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _documentName, value); } - public XmlDocumentType DocumentType => _documentType; + public XmlDocumentType? DocumentType => _documentType; + + public string DocumentTypeName => "Step input"; public DataSource DataSource { diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs index b89f5f0265c4ff4f4a637fd03f979bf9c8b1fdf5..3bb13847a8ed793a7b530ae7e39a991e36cf34c3 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/StageViewModelBase.cs @@ -7,6 +7,7 @@ using System.Windows; using System.Windows.Input; using System.Xml.Linq; using Castle.Core.Internal; +using Microsoft.Toolkit.Mvvm.Input; using Ninject; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; @@ -14,20 +15,20 @@ using TUGraz.VectoCore.Utils; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Properties; -using VECTO3GUI2020.Util; using VECTO3GUI2020.Util.XML; using VECTO3GUI2020.ViewModel.Implementation.Common; using VECTO3GUI2020.ViewModel.Interfaces.Common; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; +using RelayCommand = VECTO3GUI2020.Util.RelayCommand; namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public interface IStageViewModelBase { - string InputDataFilePath { get; set; } + string VehicleInputDataFilePath { get; set; } IMultistageVehicleViewModel VehicleViewModel { get; set; } ICommand SwitchComponentViewCommand { get; } - ICommand SaveInputDataCommand { get; } + IRelayCommand SaveInputDataCommand { get; } ICommand SaveInputDataAsCommand { get; } ICommand LoadVehicleDataCommand { get; } bool ShowSaveAndCloseButtons { get; set; } @@ -91,7 +92,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get { return _switchComponentViewCommand ?? - new RelayCommand<string>(SwitchViewExecute, (string s) => SwitchViewCanExecute(s)); + new Util.RelayCommand<string>(SwitchViewExecute, (string s) => SwitchViewCanExecute(s)); } } @@ -109,14 +110,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation return Components[viewToShow] != null; } - private ICommand _saveInputDataCommand; + private IRelayCommand _saveInputDataCommand; private ICommand _saveInputDataAsCommand; private IMultistageDependencies _multistageDependencies; private IXMLInputDataReader _inputDataReader; - public ICommand SaveInputDataCommand => + public IRelayCommand SaveInputDataCommand => _saveInputDataCommand ?? - new RelayCommand(() => { SaveInputDataExecute(filename: _vehicleInputDataFilePath); }, + new Microsoft.Toolkit.Mvvm.Input.RelayCommand(() => { SaveInputDataExecute(filename: _vehicleInputDataFilePath); }, () => _vehicleInputDataFilePath != null); public ICommand SaveInputDataAsCommand => @@ -153,7 +154,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { var dialogHelper = _multistageDependencies.DialogHelper; if (VehicleViewModel.HasErrors) { - var errorMessage = "Vehicle\n"; + var errorMessage = "Vehicle:\n"; var vehicleErrorInfo = VehicleViewModel as IDataErrorInfo; errorMessage += vehicleErrorInfo.Error.Replace(",", "\n"); @@ -162,7 +163,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation VehicleViewModel.MultistageAuxiliariesViewModel as IDataErrorInfo; if (auxiliariesErrorInfo != null && !auxiliariesErrorInfo.Error.IsNullOrEmpty()) { - errorMessage += "\n Auxiliaries \n"; + errorMessage += "\nAuxiliaries:\n"; errorMessage += auxiliariesErrorInfo.Error.Replace(",", "\n"); } @@ -185,8 +186,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation var xElement = vehicleWriter.GetElement(); - var xDoc = xElement.CreateWrapperDocument(XMLNamespaces.V28); - Debug.WriteLine(xElement.CreateWrapperDocument(XMLNamespaces.V28).ToString()); + var xDoc = xElement.CreateWrapperDocument(XMLNamespaces.v2_10_2); + Debug.WriteLine(xElement.CreateWrapperDocument(XMLNamespaces.v2_10_2).ToString()); var valid = false; @@ -232,7 +233,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation var inputData = (IDeclarationInputDataProvider)_inputDataReader.Create(fileName); var vehicleInputData = inputData.JobInputData.Vehicle; VehicleViewModel.SetVehicleInputData(vehicleInputData); - InputDataFilePath = inputData.DataSource.SourceFile; + VehicleInputDataFilePath = inputData.DataSource.SourceFile; LoadStageInputDataFollowUp(inputData); @@ -251,10 +252,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } - public string InputDataFilePath + public string VehicleInputDataFilePath { get => _vehicleInputDataFilePath; - set => SetProperty(ref _vehicleInputDataFilePath, value); + set + { + SetProperty(ref _vehicleInputDataFilePath, value); + _saveInputDataCommand?.NotifyCanExecuteChanged(); + } } #endregion diff --git a/VECTO3GUI2020/Views/JoblistView.xaml b/VECTO3GUI2020/Views/JoblistView.xaml index d9c73bb7f46246d5fe7349a0abdae73987c541e2..00b9cb5b6b8bc4b03ce0b526c722bd25e64abf49 100644 --- a/VECTO3GUI2020/Views/JoblistView.xaml +++ b/VECTO3GUI2020/Views/JoblistView.xaml @@ -15,39 +15,26 @@ <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> <Grid.RowDefinitions> - <RowDefinition Height="1*"/> - <RowDefinition Height="5"></RowDefinition> + <RowDefinition Height="2*"/> + <RowDefinition Height="5"/> <RowDefinition Height="1*" MinHeight="65"/> </Grid.RowDefinitions> <Grid> <Grid.ColumnDefinitions> - <ColumnDefinition MinWidth="140" Width="1*"/> - <ColumnDefinition Width="6*"/> - <ColumnDefinition MinWidth="140" Width="1*"/> + <ColumnDefinition Width="140"/> + <ColumnDefinition /> + <ColumnDefinition Width="140"/> </Grid.ColumnDefinitions> - <Border BorderBrush="Transparent" BorderThickness="1"> + <Border> <Grid> - <StackPanel HorizontalAlignment="Stretch"> - <Button x:Name="button" Margin="4" HorizontalAlignment="Stretch" - Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding SimulationCommand}">Simulation</Button> - <Button Margin="4" HorizontalAlignment="Stretch" - Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding CancelSimulation}">Stop</Button> - <Button x:Name="button1" Margin="4" HorizontalAlignment="Stretch" - Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding moveJobUp}" - CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Up</Button> - <Button x:Name="button2" Margin="4" HorizontalAlignment="Stretch" - Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding moveJobDown}" - CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Down</Button> + <StackPanel> + <Button x:Name="button" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SimulationCommand}">Simulation</Button> + <Button Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding CancelSimulation}">Stop</Button> + <Button x:Name="button1" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding moveJobUp}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Up</Button> + <Button x:Name="button2" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding moveJobDown}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Down</Button> </StackPanel> </Grid> </Border> @@ -61,8 +48,7 @@ CanUserReorderColumns="False" AutoGenerateColumns="False" SelectionMode="Single" - GridLinesVisibility="None" - HorizontalScrollBarVisibility="Disabled" + GridLinesVisibility="All" RowHeaderWidth="0" ColumnHeaderHeight="30" VerticalAlignment="Stretch" @@ -71,7 +57,8 @@ PreviewDrop = "JobDataGrid_OnPreviewDrop" ColumnHeaderStyle="{StaticResource JobListDataGridHeaderStyle}" RowHeight="30" - AlternatingRowBackground="LightGray" CellStyle="{DynamicResource DataGridCellStyle1}" + AlternatingRowBackground="WhiteSmoke" + CellStyle="{DynamicResource DataGridCellStyle1}" SelectedItem = "{Binding SelectedJob}" > <i:Interaction.Behaviors> @@ -79,9 +66,9 @@ </behavior:AutoScrollDataGridBehaviour> </i:Interaction.Behaviors> - <!--CONTEXT MENU--> + <!--CONTEXT MENU--> - <!--<DataGrid.Resources> + <!--<DataGrid.Resources> <ContextMenu x:Key="RowMenu"> <MenuItem Header="Edit WIP" Command="{Binding RowCopyCommand}" /> <MenuItem Header="Show Source File"> @@ -94,57 +81,40 @@ <Setter Property="ContextMenu" Value="{StaticResource RowMenu}" /> </Style> </DataGrid.RowStyle>--> - <DataGrid.Columns> - <DataGridTemplateColumn Header="Simulate" Width="1*" MinWidth="50" IsReadOnly="False"> + <DataGrid.Columns> + <DataGridTemplateColumn CanUserResize="False" IsReadOnly="False"> <DataGridTemplateColumn.CellTemplate> <DataTemplate DataType="document:IDocumentViewModel"> <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> <CheckBox HorizontalAlignment="Center" - IsEnabled="{Binding CanBeSimulated}" + VerticalAlignment ="Center" + IsEnabled="{Binding CanBeSimulated}" Visibility="{Binding CanBeSimulated, - Converter={StaticResource BooleanToVisibilityConverter}}" - IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> - <Button Margin="0" - Padding="5" - Background="Transparent" - HorizontalAlignment="Center" - BorderThickness="0" - Grid.Column="0" - Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, - Path=DataContext.OpenAdditionalJobInformationCommand}" - CommandParameter="{Binding }" - ContentTemplate="{DynamicResource InformationIcon}" - Visibility="{Binding CanBeSimulated, Converter={StaticResource InvertedBoolToVisibilityConverter}}"> + Converter={StaticResource BooleanToVisibilityConverter}}" + IsChecked="{Binding Selected, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> + <Button + Margin="0" + Padding="5" + Background="Transparent" + HorizontalAlignment="Center" + VerticalAlignment ="Center" + BorderThickness="0" + Command="{Binding RelativeSource={RelativeSource AncestorType=DataGrid}, + Path=DataContext.OpenAdditionalJobInformationCommand}" + CommandParameter="{Binding }" + ContentTemplate="{DynamicResource InformationIcon}" + Visibility="{Binding CanBeSimulated, Converter={StaticResource InvertedBoolToVisibilityConverter}}"> </Button> </Grid> - </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> - <DataGridTextColumn IsReadOnly="True" - Header="Name" - Binding="{Binding DocumentName}" - MinWidth="250" - Width="4*"></DataGridTextColumn> - <DataGridTextColumn IsReadOnly ="True" - Header="Type" - MinWidth="100" - Binding="{Binding DocumentType}" - Width="4*"></DataGridTextColumn> + <DataGridTextColumn IsReadOnly="True" Header="Name" Binding="{Binding DocumentName}"></DataGridTextColumn> + <DataGridTextColumn IsReadOnly ="True" Header="Type" Binding="{Binding DocumentTypeName}"></DataGridTextColumn> + <DataGridTextColumn IsReadOnly ="True" Header="File" Binding="{Binding DataSource.SourceFile}"></DataGridTextColumn> </DataGrid.Columns> - <DataGrid.RowDetailsTemplate> - <DataTemplate> - <StackPanel Orientation="Vertical" Visibility="{Binding DataSource, Converter={StaticResource NullToVisibilityConverter}}"> - <!--<Label x:Name="label" Content="Filename"/>--> - <TextBlock x:Name="textBlock" Text="{Binding DataSource.SourceFile}" TextWrapping="Wrap" Margin="10" /> - </StackPanel> - </DataTemplate> - </DataGrid.RowDetailsTemplate> <DataGrid.InputBindings> <MouseBinding MouseAction="LeftDoubleClick" @@ -156,13 +126,13 @@ </Border> </Grid> <Grid Grid.Column="2"> - <Border BorderBrush="Transparent" BorderThickness="1"> + <Border BorderBrush="Transparent" BorderThickness="1"> <StackPanel > - <Button x:Name="button3" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button3" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding AddJobAsyncCommand, IsAsync=True}" Background="#FFDDDDDD"> - Load File</Button> - <Button x:Name="button4" Margin ="4" HorizontalAlignment="Stretch" + Load File</Button> + <Button x:Name="button4" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding EditDocument}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Edit Job</Button> @@ -185,7 +155,7 @@ </StackPanel> </Border> </Popup>--> - <Button x:Name="button6" Margin="4" HorizontalAlignment="Stretch" + <Button x:Name="button6" HorizontalAlignment="Stretch" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding RemoveJob, IsAsync=True}" CommandParameter="{Binding ElementName=JobDataGrid, Path=SelectedItem}">Remove Job</Button> @@ -196,7 +166,7 @@ </Grid> </Grid> <GridSplitter Grid.Row="1" HorizontalAlignment="Stretch" Height="5"/> - <ContentControl Grid.Row="2" Margin="0,0,0,0" Name="ContentControlBottom" Content="{Binding OutputViewModel }"/> + <ContentControl Grid.Row="2" Name="ContentControlBottom" Content="{Binding OutputViewModel }"/> </Grid> - + </UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml index 8c2b7dab7ae5c40b2acc36b96d589112e4ca8b4c..54024e0ccb80509b67582c0f18caba9f7ac5e038 100644 --- a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml +++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewMultiStage.xaml @@ -11,31 +11,47 @@ d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance common:AdditionalJobInfoViewModelMultiStage }"> <Grid> <StackPanel Margin="10"> - <Label>This Job cannot be Simulated because the following Parameters are invalid:</Label> - <ItemsControl ItemsSource="{Binding InvalidEntries }"> - <ItemsControl.ItemTemplate> - <DataTemplate> - <BulletDecorator> - <BulletDecorator.Bullet> - <Ellipse HorizontalAlignment="Center" VerticalAlignment="Center" Height="5" Width="5" Fill="{DynamicResource AccentColorButton}"/> - </BulletDecorator.Bullet> - <TextBlock Margin="5 0"> - <TextBlock.Text> - <Binding Path="." Converter="{StaticResource PropertyNameToLabelConverter}"> - <Binding.ConverterParameter> - <x:Array Type="resources:ResourceManager"> - <x:Static MemberType="properties:GUILabels" Member="ResourceManager"/> - <x:Static MemberType="properties:BusStrings" Member="ResourceManager"/> - <x:Static MemberType="properties:Strings" Member="ResourceManager"/> - </x:Array> - </Binding.ConverterParameter> - </Binding> - </TextBlock.Text> - </TextBlock> - </BulletDecorator> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> + <Label>This Job cannot be simulated</Label> + <Label Content="{Binding ErrorInfo}" + Visibility="{Binding ErrorInfo, + Converter={StaticResource NullToVisibilityConverter}}"/> + <Border Margin="2" BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="2" Visibility="{Binding InvalidEntriesPresent, + Converter={StaticResource BooleanToVisibilityConverter}}"> + <StackPanel> + <Label Style="{StaticResource LabelStyle1}"> + Invalid Parameters: + </Label> + <ItemsControl ItemsSource="{Binding InvalidEntries }"> + <ItemsControl.ItemTemplate> + <DataTemplate> + <BulletDecorator> + <BulletDecorator.Bullet> + <Ellipse HorizontalAlignment="Center" VerticalAlignment="Center" Height="5" Width="5" Fill="{DynamicResource AccentColorButton}"/> + </BulletDecorator.Bullet> + <TextBlock Margin="5 0"> + <TextBlock.Text> + <Binding Path="." Converter="{StaticResource PropertyNameToLabelConverter}"> + <Binding.ConverterParameter> + <x:Array Type="resources:ResourceManager"> + <x:Static MemberType="properties:GUILabels" Member="ResourceManager"/> + <x:Static MemberType="properties:BusStrings" Member="ResourceManager"/> + <x:Static MemberType="properties:Strings" Member="ResourceManager"/> + </x:Array> + </Binding.ConverterParameter> + </Binding> + </TextBlock.Text> + </TextBlock> + </BulletDecorator> + </DataTemplate> + </ItemsControl.ItemTemplate> + <ItemsControl.ItemsPanel> + <ItemsPanelTemplate> + <WrapPanel Margin="2" Orientation="Vertical" IsItemsHost="True"/> + </ItemsPanelTemplate> + </ItemsControl.ItemsPanel> + </ItemsControl> + </StackPanel> + </Border> </StackPanel> </Grid> </UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml index c29c356e5347b11a23e59e5a6f67c0c75d97fca8..aa75e9f64f4ab65879ac931ee416b5aeabde8dde 100644 --- a/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml +++ b/VECTO3GUI2020/Views/Multistage/AdditionalJobInfoViews/AdditionalJobInfoViewNewVIF.xaml @@ -7,7 +7,7 @@ xmlns:properties="clr-namespace:VECTO3GUI2020.Properties" xmlns:resources="clr-namespace:System.Resources;assembly=mscorlib" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> + d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance local:AdditionalJobInfoViewNewVIF}"> <Grid> <StackPanel Margin="10"> <Label>This Job cannot be Simulated</Label> diff --git a/VECTO3GUI2020/Views/Multistage/AirDragView_v2_8.xaml b/VECTO3GUI2020/Views/Multistage/AirDragView_v2_8.xaml index f09fcfaecd01282da28029b2559b740a029aaecc..dc1c6a3026177c1b707ed6affe196bc6bd95cfe7 100644 --- a/VECTO3GUI2020/Views/Multistage/AirDragView_v2_8.xaml +++ b/VECTO3GUI2020/Views/Multistage/AirDragView_v2_8.xaml @@ -5,7 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage" xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" - xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components" d:DataContext="{d:DesignInstance Type=implementation:AirDragViewModel_v2_8}" + xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation.JobEdit.Vehicle.Components" d:DataContext="{d:DesignInstance Type=implementation:AirDragViewModel_v2_4}" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> <Grid> diff --git a/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml index 017e59827400afc8400c6f4232d93c000fe89738..5be0ce48930362fcca7628109545f2fe13338a98 100644 --- a/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml +++ b/VECTO3GUI2020/Views/Multistage/CreateVifView.xaml @@ -8,11 +8,10 @@ xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" xmlns:implementation1="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" mc:Ignorable="d" - MinWidth="500" - MinHeight="200" - d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation1:CreateVifViewModel}"> + Width="600" + MinWidth="600" d:DataContext="{d:DesignInstance implementation1:CreateVifViewModel}"> <Grid> - <DockPanel LastChildFill="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> + <DockPanel LastChildFill="False" HorizontalAlignment="Stretch" VerticalAlignment="Top"> <!--<Label HorizontalAlignment="Center" DockPanel.Dock="Top" Visibility="{Binding UnsavedChanges, Converter={StaticResource BooleanToVisibilityConverter}}"> @@ -36,48 +35,22 @@ Margin="2 4"> </Button> - <customControls:FilePicker DockPanel.Dock="Left" HorizontalAlignment="Stretch" - Text="{Binding PrimaryInputPath}" - Command="{Binding SelectPrimaryInputFileCommand}"/> + <customControls:FilePicker DockPanel.Dock="Left" HorizontalAlignment="Stretch" Text="{Binding PrimaryInputPath}" Command="{Binding SelectPrimaryInputFileCommand}"/> </DockPanel> - <Label Grid.Row="2" Style="{DynamicResource LabelStyle1}" - Visibility="{Binding Completed, - Converter={StaticResource InvertedBoolToVisibilityConverter}}">Select Interim Input</Label> - <Label Grid.Row="2" Style="{DynamicResource LabelStyle1}" - Visibility="{Binding Completed, - Converter={StaticResource BooleanToVisibilityConverter}}">Select Completed Input</Label> - <DockPanel Grid.Row="3" HorizontalAlignment="Stretch"> - <Button Command="{Binding RemoveStageInputCommand}" - DockPanel.Dock="Right" - ContentTemplate="{StaticResource TrashIcon}" - Width="30" - Padding="4" - Margin="2 4"> - - </Button> - <customControls:FilePicker DockPanel.Dock="Left" - Text="{Binding StageInputPath}" - Command="{Binding SelectCompletedInputFileCommand}"></customControls:FilePicker> + <Label Grid.Row="2" Style="{DynamicResource LabelStyle1}" Visibility="{Binding Completed, Converter={StaticResource InvertedBoolToVisibilityConverter}}">Select Interim Input</Label> + <Label Grid.Row="2" Style="{DynamicResource LabelStyle1}" Visibility="{Binding Completed, Converter={StaticResource BooleanToVisibilityConverter}}">Select Completed Input</Label> + <DockPanel Grid.Row="3"> + <!--<Button DockPanel.Dock="Right" Command="{Binding EditStageInputCommand}" Width="30" Padding="4" Margin="4">Edit</Button>--> + <Button DockPanel.Dock="Right" Command="{Binding RemoveStageInputCommand}" ContentTemplate="{StaticResource TrashIcon}" Width="30" Padding="4" Margin="4"/> + <customControls:FilePicker DockPanel.Dock="Left" Text="{Binding StageInputPath}" Command="{Binding SelectCompletedInputFileCommand}" /> </DockPanel> </Grid> - <DockPanel DockPanel.Dock="Bottom" LastChildFill="False"> - <UniformGrid DockPanel.Dock="Right" Rows="1" Width="500" HorizontalAlignment="Right"> - <Button Style="{StaticResource MultiStageButtonStyle1}">Create</Button> - <Button Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding SaveJobAsCommand}" - > - Save Job as ... - </Button> - <Button Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding SaveJobCommand}"> - Save Job - </Button> - <Button Style="{StaticResource MultiStageButtonStyle1}" - Command="{Binding CloseWindowCommand}" - CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">Close</Button> - </UniformGrid> - </DockPanel> + <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right"> + <Button Width="100" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SaveJobAsCommand}">Save Job as ...</Button> + <Button Width="100" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding SaveJobCommand}">Save Job</Button> + <Button Width="100" Style="{StaticResource MultiStageButtonStyle1}" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}">Close</Button> + </StackPanel> </DockPanel> </Grid> </UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml index 60b14141332c3418a4f0831e2f85d4b887bf0ac0..e3ae10744ae266cb01027436deedfeed140d2d40 100644 --- a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml @@ -37,7 +37,7 @@ Visibility="{Binding ShowConsolidatedData, Converter={StaticResource BooleanToVisibilityConverter}}"> </CheckBox> - <CheckBox x:Name="checkBox1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" + <CheckBox x:Name="checkBox1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" IsThreeState="{Binding AllowNullValue}" IsEnabled="{Binding Path=EditingEnabled, UpdateSourceTrigger=PropertyChanged}" IsChecked="{Binding CurrentContent, Mode=TwoWay, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, Converter={StaticResource XToBoolConverter}, diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml index 65740ac709baf4f651bc795bcd379721b38d20e1..0665eca666db7e623e2bb2f02c5bca3d024c3d25 100644 --- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml +++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml @@ -36,88 +36,28 @@ <Label Style="{DynamicResource LabelStyle1}">Heating, Ventilation and Air Conditioning</Label> <ContentControl Content="{Binding ParameterViewModels[SystemConfiguration]}"/> - <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeDriverCompartment]}"/> - <ContentControl Content="{Binding ParameterViewModels[HeatPumpModeDriverCompartment]}"/> - <Border Margin="5 0" BorderBrush="{DynamicResource ButtonHighlightColor}" BorderThickness="2" > - <StackPanel Margin="0"> - <Label Margin="0" Style="{DynamicResource LabelStyle1}">Heat Pumps Passenger Compartment</Label> - <StackPanel Visibility="{Binding ShowConsolidatedData, Converter={StaticResource BooleanToVisibilityConverter}}"> - <Label Padding="10 4 0 4" Style="{DynamicResource LabelStyle1}">Consolidated Data</Label> - <ItemsControl AlternationCount="2" - Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, Converter={StaticResource NullToVisibilityConverter}}" - ItemsSource="{Binding ConsolidatedHeatPumpConfigurationsPassenger}" - HorizontalContentAlignment="Stretch" - Padding="5 5 29 5 " > - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border BorderThickness="1"> - <DockPanel LastChildFill="true" x:Name="ItemsDockPanel"> - <UniformGrid DockPanel.Dock="Left" Columns="2"> - <ContentControl Grid.Column="0" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpTypeVM}"/> - <ContentControl Grid.Column="1" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpModeVM}"/> - </UniformGrid> - </DockPanel> - </Border> - <DataTemplate.Triggers> - <Trigger Property="ItemsControl.AlternationIndex" Value="0"> - <Setter Property="Background" Value="White" TargetName="ItemsDockPanel"/> - </Trigger> - <Trigger Property="ItemsControl.AlternationIndex" Value="1"> - <Setter Property="Background" Value="LightGray" TargetName="ItemsDockPanel"/> - </Trigger> - </DataTemplate.Triggers> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - <Label Visibility="{Binding ConsolidatedHeatPumpConfigurationsPassenger, - Converter={StaticResource NullToVisibilityConverter}, - ConverterParameter=invert}" - HorizontalAlignment="Center">No consolidated data available</Label> - </StackPanel> - <DockPanel LastChildFill="true"> - <Button DockPanel.Dock="right" ContentTemplate="{DynamicResource AddIcon}" Command="{Binding AddPassengerHeatpumpCommand}"> - - </Button> - <Label Style="{DynamicResource LabelStyle1}" Padding="10 4 0 4">Current Stage</Label> - </DockPanel> - - <ItemsControl ItemsSource="{Binding HeatPumpConfigurationsPassenger}" HorizontalContentAlignment="Stretch" - Padding="5" AlternationCount="2"> - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border BorderThickness="1"> - <DockPanel LastChildFill="true" x:Name="ItemsDockPanel"> - <Button DockPanel.Dock="Right" Height="24" - ContentTemplate="{DynamicResource TrashIcon}" - Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, - Path=DataContext.RemovePassengerHeatpumpCommand}" - CommandParameter="{Binding }"/> - <UniformGrid DockPanel.Dock="Left" Columns="2"> - <ContentControl Grid.Column="0" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpTypeVM}"/> - <ContentControl Grid.Column="1" DockPanel.Dock="Top" Content="{Binding Path=HeatPumpModeVM}"/> - </UniformGrid> - </DockPanel> - </Border> - <DataTemplate.Triggers> - <Trigger Property="ItemsControl.AlternationIndex" Value="0"> - <Setter Property="Background" Value="White" TargetName="ItemsDockPanel"/> - </Trigger> - <Trigger Property="ItemsControl.AlternationIndex" Value="1"> - <Setter Property="Background" Value="LightGray" TargetName="ItemsDockPanel"/> - </Trigger> - </DataTemplate.Triggers> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> + <Border Margin="5" BorderThickness="2" BorderBrush="{DynamicResource ButtonHighlightColor}"> + <StackPanel> + <Label Style="{DynamicResource LabelStyle1}">Driver Compartment Heat Pumps</Label> + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeCoolingDriverCompartment]}"/> + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeHeatingDriverCompartment]}"/> + </StackPanel> + </Border> + <Border Margin="5" BorderThickness="2" BorderBrush="{DynamicResource ButtonHighlightColor}"> + <StackPanel> + <Label Style="{DynamicResource LabelStyle1}">Passenger Compartment Heat Pumps</Label> + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeCoolingPassengerCompartment]}"/> + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeHeatingPassengerCompartment]}"/> </StackPanel> </Border> + + <ContentControl Content="{Binding ParameterViewModels[AuxHeaterPower]}"/> <ContentControl Content="{Binding ParameterViewModels[DoubleGlazing]}"/> <ContentControl Content="{Binding ParameterViewModels[AdjustableAuxiliaryHeater]}"/> <ContentControl Content="{Binding ParameterViewModels[SeparateAirDistributionDucts]}"/> - <Separator/> </StackPanel> </DockPanel> </ScrollViewer> diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml index 5d2b36a12ff695c078b2556ef598269eec531d19..21a1ba5b48ebed8ed7a3f59915a23f32853c604e 100644 --- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml +++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageView.xaml @@ -6,6 +6,7 @@ xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" xmlns:system="clr-namespace:System;assembly=mscorlib" + xmlns:properties="clr-namespace:VECTO3GUI2020.Properties" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:ManufacturingStageViewModel_v0_1 }"> <Grid> @@ -24,7 +25,7 @@ <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" Margin="0 10 20 10" > <StackPanel.Visibility> <PriorityBinding> - <Binding Path="StageCount" Converter="{StaticResource AlwaysVisibleConverter}"/> + <Binding Path="StepCount" Converter="{StaticResource AlwaysVisibleConverter}"/> <Binding> <Binding.Source> <Visibility>Collapsed</Visibility> @@ -32,10 +33,10 @@ </Binding> </PriorityBinding> </StackPanel.Visibility> - <Label>Manufacturing Stage</Label> + <Label Content="{x:Static properties:GUILabels.ManufacturingSteps}"></Label> <Label> <PriorityBinding> - <Binding Path="StageCount"></Binding> + <Binding Path="StepCount"></Binding> <Binding > </Binding> </PriorityBinding> diff --git a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml index 46ff212b1a4d0f52cd7afbfe3968bc0a42751cb8..1a3d4d4078fd7711f7634c1e8e4367ff934ee0f1 100644 --- a/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml +++ b/VECTO3GUI2020/Views/Multistage/MultiStageView.xaml @@ -12,7 +12,7 @@ <DockPanel> <customControls:FilePicker DockPanel.Dock="Top" - Command="{Binding LoadVehicleDataCommand}" + Command="{Binding ManufacturingStageViewModel.LoadVehicleDataCommand}" Text="{Binding VehicleInputDataFilePath, TargetNullValue=Select Vehicle Input Data . . .}"/> <Label DockPanel.Dock="Top" HorizontalAlignment="Center" Visibility="{Binding Exempted, Converter={StaticResource BooleanToVisibilityConverter}}">Exempted Vehicle</Label> <Border BorderThickness="1" BorderBrush="{DynamicResource ButtonHighlightColor}" Height="40" DockPanel.Dock="Bottom"> @@ -21,28 +21,20 @@ Width="100" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" - Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" - Padding="4">Close</Button> + Style="{DynamicResource MultiStageButtonStyle1}">Close</Button> <Button DockPanel.Dock="Right" Width="100" Command="{Binding SaveVIFCommand}" - Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" - Padding="4">Save as new VIF</Button> + Style="{DynamicResource MultiStageButtonStyle1}">Save as new VIF</Button> <Button DockPanel.Dock="Right" - Width="100" + Width="100" Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" - Padding="4" Command="{Binding ManufacturingStageViewModel.SaveInputDataCommand}">Save Input</Button> <Button DockPanel.Dock="Right" - Width="100" + Width="100" Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" - Padding="4" Command="{Binding ManufacturingStageViewModel.SaveInputDataAsCommand}">Save Input As ... </Button> </DockPanel> </Border> diff --git a/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml b/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml index b8e27af00a50661acf11845f1c8a689339c3b751..4a6ebd9a224cddadb6b3d58d79632f60c906af90 100644 --- a/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml +++ b/VECTO3GUI2020/Views/Multistage/NewMultistageFileView.xaml @@ -6,6 +6,7 @@ xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.MultiStage.Implementation" xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" + xmlns:properties="clr-namespace:VECTO3GUI2020.Properties" mc:Ignorable="d" d:DesignHeight="450" x:Name="NewMultistageJobView" d:DesignWidth="800" d:DataContext="{d:DesignInstance implementation:NewMultiStageJobViewModel }"> <Grid> @@ -14,8 +15,7 @@ <Grid DockPanel.Dock="Top"> <customControls:FilePicker x:Name="NewMultistageFilePicker" Grid.Row="0" Text="{Binding VifPath}" HorizontalAlignment="Stretch" Command="{Binding AddVifFileCommand}"/> </Grid> - <Button Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" DockPanel.Dock="Bottom" + <Button Style="{DynamicResource MultiStageButtonStyle1}" DockPanel.Dock="Bottom" Visibility="{Binding MultiStageJobViewModel, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=invert}" Command="{Binding CloseWindow}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"> @@ -25,7 +25,7 @@ <Binding Path="MultiStageJobViewModel" Mode="TwoWay" > <Binding.TargetNullValue> <Grid HorizontalAlignment="Center" VerticalAlignment="Stretch"> - <TextBlock>Load VIF File to add new manufacturing Stage</TextBlock> + <TextBlock>Load VIF to add new manufacturing step</TextBlock> </Grid> </Binding.TargetNullValue> </Binding> diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml index eef272c305d14f887a9d213780fe1a8121784336..5fb13f8d3cbcdce2ba840f84557e1eec004af5b4 100644 --- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml +++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml @@ -17,8 +17,6 @@ </Style> </UserControl.Resources> - <!--RelativeSource={x:Static RelativeSource.Self}, {Binding RelativeSource={x:Static RelativeSource.Self}, Path=Name}] - Path=(Validation.Errors)/ErrorContent}--> <Grid> <ScrollViewer> <DockPanel> @@ -37,14 +35,16 @@ <ContentControl Content="{Binding ParameterViewModels[LegislativeClass]}"/> + <!-- Corrected Actual Mass --> <ContentControl Content="{Binding ParameterViewModels[CurbMassChassis]}"/> + <!-- Technical Permissable Maximum Laden Mass --> <ContentControl Content="{Binding ParameterViewModels[GrossVehicleMassRating]}"></ContentControl> - <ContentControl Visibility="{Binding AirdragModifiedMultistageMandatory, Converter={StaticResource BooleanToVisibilityConverter}}" + <ContentControl Visibility="{Binding AirdragModifiedMultistepMandatory, Converter={StaticResource BooleanToVisibilityConverter}}" Content="{Binding ParameterViewModels[AirdragModifiedEnum]}"/> <ContentControl @@ -53,49 +53,57 @@ <ContentControl Content="{Binding ParameterViewModels[RegisteredClass]}"/> + <Label Style="{DynamicResource LabelStyle1}" Margin="0">Number of Passengers</Label> + <Border BorderThickness="2px" BorderBrush="{StaticResource ButtonHighlightColor}"> + <StackPanel> + - <Label Style="{DynamicResource LabelStyle1}">Number of Passengers</Label> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/> + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/> + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/> + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/> + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/> + </StackPanel> + + </Border> <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/> + Content="{Binding ParameterViewModels[VehicleCode]}"/> <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/> + Content="{Binding ParameterViewModels[LowEntry]}"/> + <Label Style="{DynamicResource LabelStyle1}"> Dimensions </Label> + <Border BorderBrush="{StaticResource ButtonHighlightColor}" BorderThickness="2"> + <StackPanel> + <ContentControl + Content="{Binding ParameterViewModels[HeightInMm]}"/> - <Separator/> - <ContentControl - Content="{Binding ParameterViewModels[VehicleCode]}"/> - <ContentControl - Content="{Binding ParameterViewModels[LowEntry]}"/> - <Separator/> + <ContentControl + Content="{Binding ParameterViewModels[WidthInMm]}"/> - <ContentControl - Content="{Binding ParameterViewModels[HeightInMm]}"/> + <ContentControl + Content="{Binding ParameterViewModels[LengthInMm]}"/> - <ContentControl - Content="{Binding ParameterViewModels[WidthInMm]}"/> - <ContentControl - Content="{Binding ParameterViewModels[LengthInMm]}"/> + <ContentControl + Content="{Binding ParameterViewModels[EntranceHeightInMm]}"/> + </StackPanel> + </Border> - <ContentControl - Content="{Binding ParameterViewModels[EntranceHeightInMm]}"/> - <Separator/> <ContentControl Content="{Binding ParameterViewModels[DoorDriveTechnology]}"/> @@ -103,7 +111,8 @@ <ContentControl Content="{Binding ParameterViewModels[VehicleDeclarationType]}"/> - <Label Content="ADAS" Style="{DynamicResource LabelStyle1}"/> + <ContentControl Content="{Binding ParameterViewModels[VehicleTypeApprovalNumber]}"/> + <Label Content="Advanced Driver Assistant Systems" Style="{DynamicResource LabelStyle1}"/> <ContentControl Content="{Binding ParameterViewModels[EngineStopStartNullable]}"/> diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml index e3f52ba7dbc010f5226c8134035eb564a88b0d24..997831e8d1b2eff318511e65cf56845a371f406e 100644 --- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml +++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8_exempted.xaml @@ -5,7 +5,7 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:VECTO3GUI2020.Views.Multistage" mc:Ignorable="d" - d:DesignHeight="450" d:DesignWidth="800"> + d:DesignHeight="450" d:DesignWidth="800" BorderThickness="2px" Margin="4px" BorderBrush="{StaticResource ButtonHighlightColor}"> <UserControl.Resources> <Style TargetType="ContentControl"> <Setter Property="ContentTemplateSelector" Value="{DynamicResource MultistageParameterTemplateSelector}"/> @@ -28,6 +28,29 @@ <ContentControl Content="{Binding ParameterViewModels[CurbMassChassis]}"/> <ContentControl Content="{Binding ParameterViewModels[GrossVehicleMassRating]}"/> <ContentControl Content="{Binding ParameterViewModels[RegisteredClass]}"/> + + + + <Label Style="{DynamicResource LabelStyle1}" Margin="0">Number of Passengers</Label> + <Border BorderThickness="2px" BorderBrush="{StaticResource ButtonHighlightColor}"> + <StackPanel> + + + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/> + </StackPanel> + + </Border> + <ContentControl Content="{Binding ParameterViewModels[VehicleCode]}"/> <ContentControl @@ -35,19 +58,6 @@ <ContentControl Content="{Binding ParameterViewModels[HeightInMm]}"/> - <Label Style="{DynamicResource LabelStyle1}">Number of Passengers</Label> - - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengerSeatsLowerDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingLowerDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengerSeatsUpperDeck]}"/> - <ContentControl - Content="{Binding ParameterViewModels[NumberPassengersStandingUpperDeck]}"/> - - - </StackPanel> </DockPanel> </ScrollViewer> diff --git a/VECTO3GUI2020/Views/OutputView.xaml b/VECTO3GUI2020/Views/OutputView.xaml index 0f988ee09b50fd530bb0a15e578781f276cec587..82db5ac343b92d481589bc6a375fd267274b857f 100644 --- a/VECTO3GUI2020/Views/OutputView.xaml +++ b/VECTO3GUI2020/Views/OutputView.xaml @@ -24,7 +24,7 @@ VerticalScrollBarVisibility="Auto" DockPanel.Dock="Top" ItemsSource="{Binding Messages, IsAsync=True}" - BorderThickness="1" + BorderThickness="0 0 0 1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionUnit="FullRow" @@ -34,7 +34,6 @@ Name="MessageList" ColumnHeaderStyle="{StaticResource JobListDataGridHeaderStyle}" ColumnHeaderHeight="30" - d:DataContext="{d:DesignInstance helper:DesignData}" AlternationCount="2" Background="White"> @@ -67,7 +66,7 @@ </DataTemplate> </DataGridTemplateColumn.CellTemplate> </DataGridTemplateColumn> - <DataGridTextColumn Header="Time" Binding="{Binding Time, StringFormat=hh:mm:ss dd.MM.yyyy}" Width="150" /> + <DataGridTextColumn Header="Time" Binding="{Binding Time, StringFormat=HH:mm:ss dd.MM.yyyy}" Width="150" /> </DataGrid.Columns> <DataGrid.RowStyle> <Style TargetType="DataGridRow"> diff --git a/VECTO3GUI2020/Views/SettingsView.xaml b/VECTO3GUI2020/Views/SettingsView.xaml index 6ef78b6a93d8de01b64309520d4547ebcd419a1f..29bf28e2745ff8b845e70ed00aed19c423e66b22 100644 --- a/VECTO3GUI2020/Views/SettingsView.xaml +++ b/VECTO3GUI2020/Views/SettingsView.xaml @@ -103,9 +103,7 @@ Width="100" Command="{Binding CloseWindowCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" - Style="{DynamicResource MultiStageButtonStyle1}" - Margin="4" - Padding="4">Close</Button> + Style="{DynamicResource MultiStageButtonStyle1}">Close</Button> </DockPanel> </DockPanel> </Grid> diff --git a/VECTO3GUI2020/app.manifest b/VECTO3GUI2020/app.manifest new file mode 100644 index 0000000000000000000000000000000000000000..e3f0b76d7783a6b3b088cab7826680c5105c3e0d --- /dev/null +++ b/VECTO3GUI2020/app.manifest @@ -0,0 +1,77 @@ +<?xml version="1.0" encoding="utf-8"?> +<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1"> + <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> + <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> + <security> + <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> + <!-- UAC Manifest Options + If you want to change the Windows User Account Control level replace the + requestedExecutionLevel node with one of the following. + + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> + <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> + + Specifying requestedExecutionLevel element will disable file and registry virtualization. + Remove this element if your application requires this virtualization for backwards + compatibility. + --> + <requestedExecutionLevel level="asInvoker" uiAccess="false" /> + </requestedPrivileges> + </security> + </trustInfo> + + <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> + <application> + <!-- A list of the Windows versions that this application has been tested on + and is designed to work with. Uncomment the appropriate elements + and Windows will automatically select the most compatible environment. --> + + <!-- Windows Vista --> + <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> + + <!-- Windows 7 --> + <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> + + <!-- Windows 8 --> + <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> + + <!-- Windows 8.1 --> + <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> + + <!-- Windows 10 --> + <!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />--> + + </application> + </compatibility> + + <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher + DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need + to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should + also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. + + Makes the application long-path aware. See https://docs.microsoft.com/windows/win32/fileio/maximum-file-path-limitation --> + <application xmlns="urn:schemas-microsoft-com:asm.v3"> + <windowsSettings> + <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness> + <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware> + </windowsSettings> + </application> + + <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) --> + <!-- + <dependency> + <dependentAssembly> + <assemblyIdentity + type="win32" + name="Microsoft.Windows.Common-Controls" + version="6.0.0.0" + processorArchitecture="*" + publicKeyToken="6595b64144ccf1df" + language="*" + /> + </dependentAssembly> + </dependency> + --> + +</assembly> diff --git a/Vecto3GUI2020Test/TestData/asdf.xml b/Vecto3GUI2020Test/TestData/asdf.xml deleted file mode 100644 index 70415bde697691075112a4a1c38990fceeee656d..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/asdf.xml +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="TODO_ADDIDENTIFIER" xsi:type="InterimStageInputType"> - <Manufacturer>adf</Manufacturer> - <ManufacturerAddress>asdf</ManufacturerAddress> - <VIN>asdf</VIN> - <Date>2021-07-01T22:00:00Z</Date> - <VehicleDeclarationType>interim</VehicleDeclarationType> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml b/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml deleted file mode 100644 index ef4e364d6bba89cfea33a6752982ae9d1cd2d1a6..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/exempted_primary_heavyBus.VIF.xml +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> - <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> - <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType"> - <Vehicle xsi:type="VehicleExemptedPrimaryBusType"> - <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle> - <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle> - <Model>Sample Bus Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeCategory>N2</LegislativeCategory> - <ChassisConfiguration>Bus</ChassisConfiguration> - <AxleConfiguration>6x2</AxleConfiguration> - <Articulated>false</Articulated> - <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <SumNetPower unit="W">350000</SumNetPower> - <Technology>Fuel cell vehicle</Technology> - </Vehicle> - <InputDataSignature> - <di:Reference URI="#VEH-1234567890"> - <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>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue> - </di:Reference> - </InputDataSignature> - <ManufacturerRecordSignature> - <di:Reference URI="#RESULT-4c4c52e522874a398b3a"> - <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>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue> - </di:Reference> - </ManufacturerRecordSignature> - <Results> - <Status>success</Status> - <ExemptedVehicle /> - </Results> - <ApplicationInformation> - <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2021-06-15T16:00:43.6769906Z</Date> - </ApplicationInformation> - </Data> - <Signature> - <di:Reference URI="#VEH-4cb168560c0d4b3d886d"> - <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>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue> - </di:Reference> - </Signature> - </PrimaryVehicle> -</VectoOutputMultistage> \ No newline at end of file diff --git a/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml b/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml deleted file mode 100644 index 0d7c3952ba98fe996a7f480e313f1203691ce146..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/exempted_vif_mandatory.xml +++ /dev/null @@ -1,94 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> - <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> - <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType"> - <Vehicle xsi:type="VehicleExemptedPrimaryBusType"> - <ManufacturerPrimaryVehicle>Some Manufacturer</ManufacturerPrimaryVehicle> - <ManufacturerAddressPrimaryVehicle>Infinite Loop 1</ManufacturerAddressPrimaryVehicle> - <Model>Sample Bus Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeCategory>N2</LegislativeCategory> - <ChassisConfiguration>Bus</ChassisConfiguration> - <AxleConfiguration>6x2</AxleConfiguration> - <Articulated>false</Articulated> - <TechnicalPermissibleMaximumLadenMass unit="kg">15400.0</TechnicalPermissibleMaximumLadenMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <SumNetPower unit="W">350000</SumNetPower> - <Technology>Fuel cell vehicle</Technology> - </Vehicle> - <InputDataSignature> - <di:Reference URI="#VEH-1234567890"> - <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>sYhNx2MDHaOAMTlPflP/qQbEkazmRDxY0Vw6yzwwcJc=</di:DigestValue> - </di:Reference> - </InputDataSignature> - <ManufacturerRecordSignature> - <di:Reference URI="#RESULT-4c4c52e522874a398b3a"> - <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>guwkv90jOyWgDpgQwAEbLRkq7pWGeVaGA+dHizLYufQ=</di:DigestValue> - </di:Reference> - </ManufacturerRecordSignature> - <Results> - <Status>success</Status> - <ExemptedVehicle /> - </Results> - <ApplicationInformation> - <SimulationToolVersion>0.7.3.2247-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2021-06-15T16:00:43.6769906Z</Date> - </ApplicationInformation> - </Data> - <Signature> - <di:Reference URI="#VEH-4cb168560c0d4b3d886d"> - <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>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue> - </di:Reference> - </Signature> - </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-4c2c483e8feb4ebd8503"> - <HashPreviousStage> - <di:Reference URI="#VEH-4cb168560c0d4b3d886d"> - <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>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue> - </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:ExemptedInterimStageInputType" id="VEH-c6ac253bde8b4bd49a9b"> - <v2.8:Manufacturer>123</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>123</v2.8:ManufacturerAddress> - <v2.8:VIN>adsf1</v2.8:VIN> - <v2.8:Date>2021-06-22T22:00:00Z</v2.8:Date> - </Vehicle> - <ApplicationInformation> - <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> - <Date>2021-06-23T08:19:04.8483845Z</Date> - </ApplicationInformation> - </Data> - <Signature> - <di:Reference URI="#MST-4c2c483e8feb4ebd8503"> - <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>XH5k0TQWvBWs/aV6Zz0T/aggks5HgnLTvKtekiARewE=</di:DigestValue> - </di:Reference> - </Signature> - </ManufacturingStage> -</VectoOutputMultistage> \ No newline at end of file diff --git a/Vecto3GUI2020Test/TestData/final.VIF_Report_4.xml b/Vecto3GUI2020Test/TestData/final.VIF_Report_4.xml deleted file mode 100644 index 094ccf10ca1d8f2bb5702912eeb5772ef2facb59..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/final.VIF_Report_4.xml +++ /dev/null @@ -1,783 +0,0 @@ -<?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/TestData/interim2.VIF_Report_3.xml b/Vecto3GUI2020Test/TestData/interim2.VIF_Report_3.xml deleted file mode 100644 index c181235c609cf5f861714f5fdde607e340a464df..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/interim2.VIF_Report_3.xml +++ /dev/null @@ -1,684 +0,0 @@ -<?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/TestData/newVifCompletedStage.json b/Vecto3GUI2020Test/TestData/newVifCompletedStage.json deleted file mode 100644 index 29c1c7463c97a68966b38a3572a50afe4bf81160..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/newVifCompletedStage.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Header": { - "CreatedBy": "Harry", - "Date": "2021-07-13T00:00:00+02:00", - "AppVersion": "Vecto3GUI2020", - "FileVersion": 10 - }, - "Body": { - "PrimaryVehicle": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\vecto_vehicle-primary_heavyBus-sample.xml", - "InterimStage": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.8\\vecto_vehicle-stage_input_full-sample.xml", - "Completed": true - } -} \ No newline at end of file diff --git a/Vecto3GUI2020Test/TestData/newVifInterimStage.json b/Vecto3GUI2020Test/TestData/newVifInterimStage.json deleted file mode 100644 index 7f64bef871f18c99ec84c396e8b6e2c2bd8f1a48..0000000000000000000000000000000000000000 --- a/Vecto3GUI2020Test/TestData/newVifInterimStage.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "Header": { - "CreatedBy": "Harry", - "Date": "2021-07-15T00:00:00+02:00", - "AppVersion": "Vecto3GUI2020", - "FileVersion": 10 - }, - "Body": { - "PrimaryVehicle": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\vecto_vehicle-primary_heavyBus-sample.xml", - "InterimStage": "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\XML\\XMLReaderDeclaration\\SchemaVersion2.8\\vecto_vehicle-stage_input_full-sample.xml", - "Completed": false - } -} \ No newline at end of file diff --git a/Vecto3GUI2020Test/TestData/vecto_multistage_conventional_final_vif.VIF_Report_1.xml b/Vecto3GUI2020Test/TestData/vecto_multistage_conventional_final_vif.VIF_Report_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..ad423c74f43d8fcb9946c51402ad5c2b1cbb75b8 --- /dev/null +++ b/Vecto3GUI2020Test/TestData/vecto_multistage_conventional_final_vif.VIF_Report_1.xml @@ -0,0 +1,690 @@ +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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.10.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <PrimaryVehicle> + <Data id="VEH-622a60d3b3cf4340a362" xsi:type="PrimaryVehicleDataType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <vif0.1:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <v2.0:Entry gear="6" maxTorque="1800" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + <v2.0:Entry gear="1" maxTorque="2500" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + <v2.0:Entry gear="12" maxTorque="1900" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + </vif0.1:TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2400</MaxEngineTorque> + <WHRType> + <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> + <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> + <v2.3:ElectricalOutput>false</v2.3:ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>560</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00" /> + <Entry engineSpeed="600.00" maxTorque="1282.00" dragTorque="-148.00" /> + <Entry engineSpeed="800.00" maxTorque="1791.00" dragTorque="-149.00" /> + <Entry engineSpeed="1000.00" maxTorque="2300.00" dragTorque="-160.00" /> + <Entry engineSpeed="1200.00" maxTorque="2300.00" dragTorque="-179.00" /> + <Entry engineSpeed="1400.00" maxTorque="2300.00" dragTorque="-203.00" /> + <Entry engineSpeed="1600.00" maxTorque="2079.00" dragTorque="-235.00" /> + <Entry engineSpeed="1800.00" maxTorque="1857.00" dragTorque="-264.00" /> + <Entry engineSpeed="2000.00" maxTorque="1352.00" dragTorque="-301.00" /> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00" /> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>NG CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationMethod>Standard values</CertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <Axles> + <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>true</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleDriven</v2.0:AxleType> + <v2.0:TwinTyres>true</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>electrically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-1234567890"> + <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>8uY4dWDsEyozlZhzV8X7Fq1tavvoBIXiCn8oAUcsjVw=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-c2756d6f924c489c81e9"> + <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>kCeubdlXuVQOI1TTqjrTTxSNL8vfA19QjSy60xXYCa4=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">19.71467</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1104.84</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">23.22512</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1301.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">15.45965</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">866.38</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">18.39275</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1030.76</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.17582</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">738.40</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">16.00192</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">896.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13050.44</TotalVehicleMass> + <Payload unit="kg">1075.44</Payload> + <PassengerCount>15.15</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.11672</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">623.00</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15494.61</TotalVehicleMass> + <Payload unit="kg">3519.61</Payload> + <PassengerCount>49.57</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">12.34809</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">692.01</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1160.65</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">24.68655</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1383.48</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">16.25928</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">911.20</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">19.58479</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1097.56</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.83088</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">775.11</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">17.02489</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">954.10</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14225.44</TotalVehicleMass> + <Payload unit="kg">1075.44</Payload> + <PassengerCount>15.15</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.30640</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">633.63</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16669.61</TotalVehicleMass> + <Payload unit="kg">3519.61</Payload> + <PassengerCount>49.57</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">12.56427</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">704.12</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14244.99</TotalVehicleMass> + <Payload unit="kg">1094.99</Payload> + <PassengerCount>15.42</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">8.73159</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">489.33</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15887.48</TotalVehicleMass> + <Payload unit="kg">2737.48</Payload> + <PassengerCount>38.56</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.18847</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">514.94</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14662.82</TotalVehicleMass> + <Payload unit="kg">1262.82</Payload> + <PassengerCount>17.79</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.67569</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">654.33</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17609.41</TotalVehicleMass> + <Payload unit="kg">4209.41</Payload> + <PassengerCount>59.29</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.23582</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">741.76</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14747.01</TotalVehicleMass> + <Payload unit="kg">1347.01</Payload> + <PassengerCount>18.97</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.18672</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">514.84</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16767.53</TotalVehicleMass> + <Payload unit="kg">3367.53</Payload> + <PassengerCount>47.43</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.74629</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">546.20</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.7.5.2380-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2021-08-24T08:43:39.7171617Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#VEH-622a60d3b3cf4340a362"> + <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>PMrdzQUpL67ALWFQpWjxSieZ4KQ2iqS2y4BmHV3nJ0g=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-0adf9390bde54a23a113" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <HashPreviousStep> + <di:Reference URI="#VEH-622a60d3b3cf4340a362"> + <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>PMrdzQUpL67ALWFQpWjxSieZ4KQ2iqS2y4BmHV3nJ0g=</di:DigestValue> + </di:Reference> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-09ab483f390a40d58f5a" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-08-23T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>123456</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</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> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>4</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>non R-744 4-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> + <ApplicationInformation> + <SimulationToolVersion>0.7.5.2380-DEV</SimulationToolVersion> + <Date>2021-08-24T08:43:41.1851923Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#MST-0adf9390bde54a23a113"> + <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>ExKEVzerQlHGdqCo8XsbBC5PWQ0dKFC0nsiPkW31ZBs=</di:DigestValue> + </di:Reference> + </Signature> + </ManufacturingStep> +</VectoOutputMultistep> \ No newline at end of file diff --git a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj index f51a815c10de39022bce192f090038f6878035fa..fe492b24eb0dab3cbdcd67bb616ad3cdd298565e 100644 --- a/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj +++ b/Vecto3GUI2020Test/Vecto3GUI2020Test.csproj @@ -7,34 +7,34 @@ </PropertyGroup> <ItemGroup> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_full-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_full-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_full-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_full-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml" Link="Testdata\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_mandatory_entries.xml" Link="Testdata\vecto_vehicle-exempted_input_only_mandatory_entries.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_mandatory_entries.xml" Link="Testdata\vecto_vehicle-exempted_input_only_mandatory_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample.xml" Link="Testdata\vecto_vehicle-stage_input_full-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample.xml" Link="Testdata\vecto_vehicle-stage_input_full-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries01-sample.xml" Link="Testdata\vecto_vehicle-stage_input_only_certain_entries01-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries01-sample.xml" Link="Testdata\vecto_vehicle-stage_input_only_certain_entries01-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries02-sample.xml" Link="Testdata\vecto_vehicle-stage_input_only_certain_entries02-sample.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries02-sample.xml" Link="Testdata\vecto_vehicle-stage_input_only_certain_entries02-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_component_nullable_entries.xml" Link="Testdata\vecto_vehicle-stage_input_only_component_nullable_entries.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_component_nullable_entries.xml" Link="Testdata\vecto_vehicle-stage_input_only_component_nullable_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_entries.xml" Link="Testdata\vecto_vehicle-stage_input_only_mandatory_entries.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_entries.xml" Link="Testdata\vecto_vehicle-stage_input_only_mandatory_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml" Link="Testdata\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml"> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml" Link="Testdata\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AidragComponent.xml" Link="Testdata\AidragComponent.xml"> @@ -46,6 +46,12 @@ <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AirdragLoadTestFilev2.xml" Link="Testdata\AirdragLoadTestFilev2.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_completed.VIF_Report_2.xml" Link="TestData\exempted_completed.VIF_Report_2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_primary_heavyBus.VIF.xml" Link="TestData\exempted_primary_heavyBus.VIF.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="..\VectoCore\VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml" Link="Testdata\vecto_multistage_consolidated_multiple_stages.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> @@ -83,12 +89,12 @@ <ItemGroup> <PackageReference Include="Appium.WebDriver" Version="4.3.1" /> + <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.0.0" /> <PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.0.2" /> <PackageReference Include="Moq" Version="4.16.1" /> <PackageReference Include="Ninject" Version="3.3.4" /> - <PackageReference Include="NUnit" Version="3.12.0" /> - <PackageReference Include="NUnit3TestAdapter" Version="3.16.1" /> - <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" /> + <PackageReference Include="NUnit" Version="3.11.0" /> + <PackageReference Include="NUnit3TestAdapter" Version="3.11.2" /> </ItemGroup> <ItemGroup> @@ -97,9 +103,6 @@ </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> @@ -128,7 +131,7 @@ <None Update="TestData\interim2.VIF_Report_3.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Update="TestData\newVifCompletedStage.json"> + <None Update="TestData\vecto_multistage_conventional_final_vif.VIF_Report_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Update="TestData\vecto_vehicle-completed_heavyBus_31b.xml"> @@ -142,4 +145,19 @@ <Folder Include="TestData\output\" /> </ItemGroup> + <ItemGroup> + <None Include="..\VectoCore\VectoCoreTest\TestData\Integration\Multistage\newVifCompletedConventional.vecto" Link="TestData\newVifCompletedConventional.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="..\VectoCore\VectoCoreTest\TestData\Integration\Multistage\newVifExempted.vecto" Link="TestData\newVifExempted.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="..\VectoCore\VectoCoreTest\TestData\Integration\Multistage\newVifExemptedIncomplete.vecto" Link="TestData\newVifExemptedIncomplete.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="..\VectoCore\VectoCoreTest\TestData\Integration\Multistage\newVifInterimDiesel.vecto" Link="TestData\newVifInterimDiesel.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + </ItemGroup> + </Project> diff --git a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs index a53049065c0728849d9d7d99820feeda878133de..8fc8052b196f610f50a6893005b01cd6f8fd7f77 100644 --- a/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/AirdragTests.cs @@ -19,29 +19,29 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void AirdragModifiedInPreviousStages() { - var vm = loadFile(consolidated_multiple_stages_airdrag); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - Assert.IsTrue(vehicleVm.AirdragModifiedMultistageEditingEnabled); + Assert.IsTrue(vehicleVm.AirdragModifiedMultistepEditingEnabled); //try to change to false - vehicleVm.AirdragModifiedMultistage = false; //should not change the value - Assert.IsTrue(vehicleVm.AirdragModifiedMultistageEditingEnabled); + vehicleVm.AirdragModifiedMultistep = false; //should not change the value + Assert.IsTrue(vehicleVm.AirdragModifiedMultistepEditingEnabled); } [Test] public void AirdragNotModifiedInPreviousStages() { - var vm = loadFile(consolidated_multiple_stages); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled); + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepEditingEnabled); } /// <summary> @@ -54,23 +54,23 @@ namespace Vecto3GUI2020Test.ViewModelTests { ///Load VIF without airdrag - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleVm.AirdragModifiedMultistage); + Assert.IsNull(vehicleVm.AirdragModifiedMultistep); var airdragViewModel = vehicleVm.MultistageAirdragViewModel as MultistageAirdragViewModel; Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile))); - Assert.IsNull(vehicleVm.AirdragModifiedMultistage); - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory); + Assert.IsNull(vehicleVm.AirdragModifiedMultistep); + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepMandatory); - vehicleVm.AirdragModifiedMultistageEditingEnabled = true; - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled); + vehicleVm.AirdragModifiedMultistepEditingEnabled = true; + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepEditingEnabled); - Assert.IsNull(vehicleVm.AirdragModifiedMultistage); + Assert.IsNull(vehicleVm.AirdragModifiedMultistep); //Set Mandatory Fields vehicleVm.Manufacturer = "testManufacturer"; @@ -84,18 +84,18 @@ namespace Vecto3GUI2020Test.ViewModelTests var resultFile = $"{outputName}.VIF_Report_2.xml"; Assert.IsTrue(checkFileNameExists(resultFile)); - var secondstageVm = loadFile(resultFile); + var secondstageVm = LoadFileFromPath(resultFile); Assert.IsNotNull(secondstageVm); var secondStageVehicleVm = (secondstageVm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel) as InterimStageBusVehicleViewModel_v2_8; - Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled); - Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageMandatory); - Assert.IsNull(secondStageVehicleVm.ConsolidatedVehicleData.AirdragModifiedMultistage); + Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistepEditingEnabled); + Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistepMandatory); + Assert.IsNull(secondStageVehicleVm.ConsolidatedVehicleData.AirdragModifiedMultistep); //try to disable AirdragModified - secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled = false; - Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistageEditingEnabled); + secondStageVehicleVm.AirdragModifiedMultistepEditingEnabled = false; + Assert.IsTrue(secondStageVehicleVm.AirdragModifiedMultistepEditingEnabled); } /// <summary> /// no airdrag component set in VIF => AirdragModifiedMultistage is disabled @@ -103,22 +103,22 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void AirdragModifiedDisabled() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleVm.AirdragModifiedMultistage); + Assert.IsNull(vehicleVm.AirdragModifiedMultistep); - Assert.IsNull(vehicleVm.AirdragModifiedMultistage); - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory); + Assert.IsNull(vehicleVm.AirdragModifiedMultistep); + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepMandatory); var airdragViewModel = vehicleVm.MultistageAirdragViewModel; Assert.IsTrue(airdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile)), "Airdrag file not loaded"); - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageMandatory); + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepMandatory); - vehicleVm.AirdragModifiedMultistageEditingEnabled = true; - Assert.IsFalse(vehicleVm.AirdragModifiedMultistageEditingEnabled); + vehicleVm.AirdragModifiedMultistepEditingEnabled = true; + Assert.IsFalse(vehicleVm.AirdragModifiedMultistepEditingEnabled); } /// <summary> @@ -146,11 +146,11 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void TemporarySaveAirdragComponent1() { - var vm = loadFile(consolidated_multiple_stages_airdrag); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); //Load airdrag file @@ -159,18 +159,18 @@ namespace Vecto3GUI2020Test.ViewModelTests 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.IsTrue(vehicleViewModel.AirdragModifiedMultistep); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistepMandatory); Assert.AreEqual( AIRDRAGMODIFIED.TRUE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); - vehicleViewModel.AirdragModifiedMultistage = false; + vehicleViewModel.AirdragModifiedMultistep = false; Assert.AreEqual(AIRDRAGMODIFIED.FALSE,vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); Assert.IsNull(vehicleViewModel.Components?.AirdragInputData); Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); - vehicleViewModel.AirdragModifiedMultistage = true; + vehicleViewModel.AirdragModifiedMultistep = true; Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); } @@ -178,11 +178,11 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void TemporarySaveAirdragComponent2() { - var vm = loadFile(consolidated_multiple_stages_airdrag); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); //Load input file @@ -196,18 +196,18 @@ namespace Vecto3GUI2020Test.ViewModelTests 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.IsTrue(vehicleViewModel.AirdragModifiedMultistep); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistepMandatory); Assert.AreEqual( AIRDRAGMODIFIED.TRUE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); - vehicleViewModel.AirdragModifiedMultistage = false; + vehicleViewModel.AirdragModifiedMultistep = false; Assert.AreEqual(AIRDRAGMODIFIED.FALSE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); Assert.IsNull(vehicleViewModel.Components?.AirdragInputData); Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); - vehicleViewModel.AirdragModifiedMultistage = true; + vehicleViewModel.AirdragModifiedMultistep = true; Assert.AreEqual(loadedAirdragComponent, vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); } @@ -215,11 +215,11 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void RemoveAirdragComponent() { - var vm = loadFile(consolidated_multiple_stages_airdrag); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); //Load input file @@ -228,9 +228,9 @@ namespace Vecto3GUI2020Test.ViewModelTests GetTestDataPath(stageInputFullSample)); - Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistep); vehicleViewModel.MultistageAirdragViewModel.RemoveAirdragComponent(); //remove airdrag viewmodel; - Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistep); @@ -242,11 +242,11 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void AirdragModifiedSetToTrueWhenComponentIsLoaded() { - var vm = loadFile(consolidated_multiple_stages_airdrag); + var vm = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); var vehicleViewModel = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; - Assert.IsNull(vehicleViewModel.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModel.AirdragModifiedMultistep); //Load airdrag file @@ -254,8 +254,8 @@ namespace Vecto3GUI2020Test.ViewModelTests 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.IsTrue(vehicleViewModel.AirdragModifiedMultistep); + Assert.IsTrue(vehicleViewModel.AirdragModifiedMultistepMandatory); Assert.AreEqual( AIRDRAGMODIFIED.TRUE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); @@ -266,7 +266,7 @@ namespace Vecto3GUI2020Test.ViewModelTests airdragLoaded = vehicleViewModel.MultistageAirdragViewModel.LoadAirdragFile(GetTestDataPath(airdragLoadTestFile)); Assert.IsTrue(airdragLoaded, "Airdrag file was not loaded"); - vehicleViewModel.AirdragModifiedMultistage = false; + vehicleViewModel.AirdragModifiedMultistep = false; Assert.IsNull(vehicleViewModel.MultistageAirdragViewModel.AirDragViewModel); diff --git a/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs index bef354ab424c31591b3f0ec3c69759250c27822f..29737a2826af3b60c6b3ce632c12b076878935ce 100644 --- a/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/CreateVifViewModelTests.cs @@ -15,16 +15,16 @@ namespace Vecto3GUI2020Test.ViewModelTests { private ICreateVifViewModel _createVifViewModel; - private const string testdata_2_6 = "XML\\XMLReaderDeclaration\\SchemaVersion2.6_Buses\\"; - private const string testdata_2_8 = "XML\\XMLReaderDeclaration\\SchemaVersion2.8\\"; + private const string testdata_2_10 = "XML\\XMLReaderDeclaration\\SchemaVersion2.10\\"; + //private const string testdata_2_10 = "XML\\XMLReaderDeclaration\\SchemaVersion2.10\\"; private const string vecto_vehicle_primary_heavyBusSample = - testdata_2_6 + "vecto_vehicle-primary_heavyBus-sample.xml"; + testdata_2_10 + "vecto_vehicle-primary_heavyBus-sample.xml"; private const string vecto_vehicle_exempted_input_only_certain_entries = "vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"; - private const string vecto_vehicle_primary_heavyBusExempted = testdata_2_6 + "exempted_primary_heavyBus.xml"; + private const string vecto_vehicle_primary_heavyBusExempted = testdata_2_10 + "exempted_primary_heavyBus.xml"; [SetUp] public void SetUpCreateVif() @@ -56,12 +56,6 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.IsNull(_createVifViewModel.StageInputPath); } - [Ignore("incomplete")] - [Test] - public void LoadExemptedCompletedAndNonExemptedPrimary() - { - - } [Test] public void SaveFile() @@ -179,8 +173,9 @@ namespace Vecto3GUI2020Test.ViewModelTests LoadValidNonExemptedFiles(); var primaryPath = _createVifViewModel.PrimaryInputPath; var stagePath = _createVifViewModel.StageInputPath; + - var savedToPath = _createVifViewModel.SaveJob("non_exempted.json"); + var savedToPath = _createVifViewModel.SaveJob(GetFullPath("non_exempted.vecto")); WriteLine($"Saved to: {savedToPath}"); Assert.AreEqual(primaryPath, _createVifViewModel.PrimaryInputPath); diff --git a/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs index 4a5e4b3c6de620e33bb83052314a1ff7ef0f25ef..633077948b4236687d05bf4053dde29f82c86e0c 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ExemptedTests.cs @@ -19,12 +19,12 @@ namespace Vecto3GUI2020Test.ViewModelTests public class ExemptedTests : ViewModelTestBase { - public const string _exemptedMandatory = "exempted_vif_mandatory.xml"; + public const string _exemptedCompleted = "exempted_completed.VIF_Report_2.xml"; [Test] public void LoadAndSaveExemptedPrimary() { - var newMultiStageJob = loadFile(exempted_primary_vif); + var newMultiStageJob = LoadFileFromTestDirectory(exempted_primary_vif); Assert.IsTrue(newMultiStageJob.MultiStageJobViewModel.Exempted); @@ -90,7 +90,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public async Task SaveAsNewVifAndSimulate() { - var newMultiStageJob = loadFile(exempted_primary_vif); + var newMultiStageJob = LoadFileFromTestDirectory(exempted_primary_vif); Assert.IsTrue(newMultiStageJob.MultiStageJobViewModel.Exempted); @@ -182,7 +182,7 @@ namespace Vecto3GUI2020Test.ViewModelTests { //Setup var jobListViewModel = _kernel.Get<IJobListViewModel>() as JobListViewModel; - await jobListViewModel.AddJobAsync(GetTestDataPath(_exemptedMandatory)); + await jobListViewModel.AddJobAsync(GetTestDataPath(_exemptedCompleted)); Assert.AreEqual(1, jobListViewModel.Jobs.Count); jobListViewModel.Jobs[0].Selected = true; diff --git a/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs index cbf317ed64243b879a5ae21c922c7f84a71e9e34..20cacdef6f2f62281d875eeaab608a6ef0a91be9 100644 --- a/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/JobListViewModelTests.cs @@ -14,11 +14,15 @@ namespace Vecto3GUI2020Test.ViewModelTests [TestFixture] public class JobListViewModelTests : ViewModelTestBase { - private const string finalVIF = "final.VIF_Report_4.xml"; + private const string finalVIF = "vecto_multistage_conventional_final_vif.VIF_Report_1.xml"; - private const string _newVifJob = "newVifCompletedStage.json"; private JobListViewModel _jobListViewModel; + private const string _newVifCompletedConventional = "newVifCompletedConventional.vecto"; + private const string _newVifExempted = "newVifExempted.vecto"; + private const string _newVifInterimDiesel = "newVifInterimDiesel.vecto"; + private const string _newVifExemptedIncomplete = "newVifExemptedIncomplete.vecto"; + [SetUp] public void SetupViewModelTests() { @@ -53,16 +57,24 @@ namespace Vecto3GUI2020Test.ViewModelTests TestContext.WriteLine($"ExecutionTime {watch.Elapsed.TotalSeconds}s"); } + [TestCase(_newVifCompletedConventional, TestName = "VIFConventionalCompleted")] + [TestCase(_newVifInterimDiesel, TestName="VIFConventionalInterim")] + [TestCase(_newVifExempted, TestName = "VIFExempted")] + [TestCase(_newVifExemptedIncomplete, TestName = "VIFExemptedInterim")] [TestCase(VIFTests.exempted_primary_vif, TestName="Exempted")] public async Task AddJobAsyncTest(string fileName) { var path = GetTestDataPath(fileName); Assert.AreEqual(0, _jobListViewModel.Jobs.Count); + await DoAddJobAsync(path); + } - await _jobListViewModel.AddJobAsync(path); + + private async Task DoAddJobAsync(string filepath) { + await _jobListViewModel.AddJobAsync(filepath); Assert.AreEqual(1, _jobListViewModel.Jobs.Count); - Assert.AreEqual(path, _jobListViewModel.Jobs[0].DataSource.SourceFile); + Assert.AreEqual(filepath, _jobListViewModel.Jobs[0].DataSource.SourceFile); } [TestCase(true, TestName = "Exempted")] @@ -93,6 +105,8 @@ namespace Vecto3GUI2020Test.ViewModelTests //select vif for simulation Assert.AreNotEqual(0, _jobListViewModel.Jobs.Count); + + Assert.IsTrue(_jobListViewModel.Jobs[0].CanBeSimulated); _jobListViewModel.Jobs[0].Selected = true; @@ -122,11 +136,5 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.NotNull(stageInputDocumentViewModel); } - [Test] - public async Task LoadNewVifJob() - { - var documentViewModel = await _jobListViewModel.AddJobAsync(GetTestDataPath(_newVifJob)); - Assert.NotNull(documentViewModel); - } } } \ No newline at end of file diff --git a/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs b/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs index 83aedfdca1f14e78787968998ca8023b5790811c..1c7efec51284650d1a3e1bffde0d229fbacb5e9b 100644 --- a/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/JsonTests.cs @@ -16,7 +16,7 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.AreEqual(JsonKeys.JsonBody, nameof(JSONJob.Body)); Assert.AreEqual(JsonKeys.PrimaryVehicle, nameof(JSONJob.Body.PrimaryVehicle)); - Assert.AreEqual(JsonKeys.InterimStage, nameof(JSONJob.Body.InterimStage)); + Assert.AreEqual(JsonKeys.InterimStep, nameof(JSONJob.Body.InterimStep)); Assert.AreEqual(JsonKeys.Completed, nameof(JSONJob.Body.Completed)); } } diff --git a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs index 43d10665153d00b3f3c05249ee0c2c3e5e2bf48b..4fc8221fbe147f600fff74aefa9b60ce0449c689 100644 --- a/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs +++ b/Vecto3GUI2020Test/ViewModelTests/LoadAndSaveVehicleData.cs @@ -34,51 +34,16 @@ namespace Vecto3GUI2020Test [Test] public void LoadInputFileMultipleStage() { - Assert.NotNull(loadFile(consolidated_multiple_stages)); + Assert.NotNull(LoadFileFromTestDirectory(consolidated_multiple_stages)); } - [Test, Combinatorial] - public void LoadPrimaryAndEditHVACDriverCompartmentOnly( - [Values(BusHVACSystemConfiguration.Configuration2)] BusHVACSystemConfiguration configuration) - { - var stageInputFileName = "stageinput.xml"; - - //Load Primary Vehicle VIF - var newMultiStageJob = loadFile(primary_vehicle_only); - var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - Assert.NotNull(vehicle); - vehicle.Manufacturer = "test1"; - vehicle.ManufacturerAddress = "testAddress2"; - vehicle.VIN = "VIN123456789"; - - - - var manufacturingStage = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel as ManufacturingStageViewModel_v0_1; - - var auxVm = manufacturingStage.VehicleViewModel.MultistageAuxiliariesViewModel as MultistageAuxiliariesViewModel; - - - auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration2; - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.non_R_744_2_stage; - auxVm.HeatPumpModeDriverCompartment = (HeatPumpMode)auxVm.HeatPumpModeDriverCompartmentAllowedValues[0]; - - var multistageJob = newMultiStageJob.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - multistageJob.ManufacturingStageViewModel.SaveInputDataExecute(GetFullPath(stageInputFileName)); - Assert.IsTrue(checkFileNameExists(stageInputFileName)); - - - - } - - - [Test] public void LoadPrimaryAndSaveVehicleData() { //Load Primary Vehicle VIF - var newMultiStageJob = loadFile(primary_vehicle_only); + var newMultiStageJob = LoadFileFromTestDirectory(primary_vehicle_only); var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; Assert.NotNull(vehicle); vehicle.Manufacturer = "test1"; @@ -103,7 +68,7 @@ namespace Vecto3GUI2020Test public void LoadPrimaryAndSaveAsVif() { //load file - var newMultiStageJob = loadFile(primary_vehicle_only); + var newMultiStageJob = LoadFileFromTestDirectory(primary_vehicle_only); var vehicle = newMultiStageJob.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; } @@ -113,7 +78,7 @@ namespace Vecto3GUI2020Test [Test] public void ReloadInputFile() { - var newMultistageJobViewModel = loadFile(consolidated_multiple_stages_airdrag) as NewMultiStageJobViewModel; + var newMultistageJobViewModel = LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag) as NewMultiStageJobViewModel; var vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as InterimStageBusVehicleViewModel_v2_8; @@ -121,12 +86,12 @@ namespace Vecto3GUI2020Test Assert.NotNull(vehicle); - Assert.True(vehicle.AirdragModifiedMultistageEditingEnabled); + Assert.True(vehicle.AirdragModifiedMultistepEditingEnabled); newMultistageJobViewModel.AddVifFile(GetTestDataPath(consolidated_multiple_stages_hev)); Assert.AreEqual(GetTestDataPath(consolidated_multiple_stages_hev), newMultistageJobViewModel.VifPath); vehicle = newMultistageJobViewModel.MultiStageJobViewModel.VehicleInputData as InterimStageBusVehicleViewModel_v2_8; - Assert.IsFalse(vehicle.AirdragModifiedMultistageEditingEnabled); + Assert.IsFalse(vehicle.AirdragModifiedMultistepEditingEnabled); } @@ -134,14 +99,14 @@ namespace Vecto3GUI2020Test [Test] public void LoadInputFileMultipleStageAirdrag() { - loadFile(consolidated_multiple_stages_airdrag); + LoadFileFromTestDirectory(consolidated_multiple_stages_airdrag); } [Ignore("incomplete")] [Test] public void LoadAndSaveFullInputDataSample() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var multiStageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; @@ -178,14 +143,14 @@ namespace Vecto3GUI2020Test [Test] public void loadInputFileConsolidatedOneStage() { - loadFile(consolidated_one_stage); + LoadFileFromTestDirectory(consolidated_one_stage); } [Test] public void loadInputFilePrimaryOnly() { - var vm = loadFile(primary_vehicle_only); - Assert.AreEqual(2, vm.MultiStageJobViewModel.ManufacturingStageViewModel.StageCount); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); + Assert.AreEqual(2, vm.MultiStageJobViewModel.ManufacturingStageViewModel.StepCount); var primaryVehicle = vm.MultiStageJobViewModel.PrimaryVehicle; Assert.NotNull(primaryVehicle); @@ -214,15 +179,15 @@ namespace Vecto3GUI2020Test Assert.Null(vehicleViewModelV28.ConsolidatedEntranceHeightInMm); - Assert.IsFalse(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled); + Assert.IsFalse(vehicleViewModelV28.AirdragModifiedMultistepEditingEnabled); - Assert.IsNull(vehicleViewModelV28.AirdragModifiedMultistage); + Assert.IsNull(vehicleViewModelV28.AirdragModifiedMultistep); Assert.IsNull(vehicleViewModelV28.ConsolidatedAirdragModifiedEnum); Assert.IsTrue(vehicleViewModelV28.AirdragModifiedEnum == AIRDRAGMODIFIED.UNKNOWN || vehicleViewModelV28.AirdragModifiedEnum == null); - Assert.AreEqual(vehicleViewModelV28.AirdragModifiedMultistageEditingEnabled, false); + Assert.AreEqual(vehicleViewModelV28.AirdragModifiedMultistepEditingEnabled, false); Assert.Null(vehicleViewModelV28.BusAuxiliaries); @@ -244,7 +209,7 @@ namespace Vecto3GUI2020Test [TestCase(primary_vehicle_only, null, TestName= "LoadAirdragPrimaryVehicle")] public void LoadAirdragComponentAndSaveVehicleData(string fileName, object expectedAirdragModifiedValue) { - var vm = loadFile(fileName); + var vm = LoadFileFromTestDirectory(fileName); var vehicleVm = vm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as @@ -268,9 +233,9 @@ namespace Vecto3GUI2020Test TestContext.Write("Saving file with loaded Airdrag Component ... "); var multistageJobViewModel = vm.MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - multistageJobViewModel.ManufacturingStageViewModel.SaveInputDataAsCommand.Execute(null); + var savePath = GetFullPath($"{TestContext.CurrentContext.Test.Name}.xml"); + multistageJobViewModel.ManufacturingStageViewModel.SaveInputDataExecute(savePath); - var savePath = mockDialogHelper.Object.SaveToXMLDialog(); Assert.IsTrue(File.Exists(savePath)); TestContext.WriteLine("Done!"); @@ -280,7 +245,7 @@ namespace Vecto3GUI2020Test Assert.NotNull(inputData.JobInputData.Vehicle.Components.AirdragInputData, "No Airdrag Component loaded"); var airdragData = inputData.JobInputData.Vehicle.Components.AirdragInputData; - Assert.AreEqual(expectedAirdragModifiedValue, vehicleVm.AirdragModifiedMultistage); + Assert.AreEqual(expectedAirdragModifiedValue, vehicleVm.AirdragModifiedMultistep); TestContext.WriteLine("Done!"); @@ -295,7 +260,7 @@ namespace Vecto3GUI2020Test TestContext.WriteLine($"Loading {consolidated_multiple_stages}"); //New Manufacturing Stage - var newMultistageJobViewModel = loadFile(consolidated_multiple_stages); + var newMultistageJobViewModel = LoadFileFromTestDirectory(consolidated_multiple_stages); Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as IMultistageVehicleViewModel; Assert.NotNull(manstageVehicleViewModel); @@ -327,7 +292,7 @@ namespace Vecto3GUI2020Test Assert.AreEqual(LegislativeClass.M3, vehicleViewModel.LegislativeClass); Assert.AreEqual(500, vehicleViewModel.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(3500, vehicleViewModel.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass - Assert.AreEqual(true, vehicleViewModel.AirdragModifiedMultistage); + Assert.AreEqual(true, vehicleViewModel.AirdragModifiedMultistep); Assert.AreEqual(AIRDRAGMODIFIED.TRUE, vehicleViewModel.AirdragModifiedEnum); Assert.AreEqual(AIRDRAGMODIFIED.TRUE, vehicleViewModel.ParameterViewModels[nameof(vehicleViewModel.AirdragModifiedEnum)].CurrentContent); Assert.AreEqual(TankSystem.Compressed, vehicleViewModel.TankSystem);//NgTankSystem @@ -350,6 +315,7 @@ namespace Vecto3GUI2020Test Assert.AreEqual(2, vehicleViewModel.EntranceHeight.Value()); Assert.AreEqual(ConsumerTechnology.Electrically, vehicleViewModel.DoorDriveTechnology); Assert.AreEqual(VehicleDeclarationType.interim, vehicleViewModel.VehicleDeclarationType); + Assert.AreEqual("1234567890", vehicleViewModel.VehicleTypeApprovalNumber); Assert.AreEqual(newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle.DoorDriveTechnology, vehicleViewModel.DoorDriveTechnology); @@ -361,8 +327,6 @@ namespace Vecto3GUI2020Test TestAdasInput(vehicleViewModel); TestComponents(vehicleViewModel.Components); - TestAirdragComponent(vehicleViewModel.Components.AirdragInputData); - TestAuxiliariesComponent(vehicleViewModel.BusAuxiliaries); @@ -408,38 +372,32 @@ namespace Vecto3GUI2020Test Assert.AreEqual(false, electricConsumer.HeadlightsLED); } - private void TestHVACComponent(IHVACBusAuxiliariesDeclarationData hvacAux) - { - Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment); - - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[0].Item2); - - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[1].Item1); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[1].Item2); + private void TestHVACComponent(IHVACBusAuxiliariesDeclarationData hvacAux) + { + Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[2].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[2].Item2); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_4_stage, hvacAux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(50, hvacAux.AuxHeaterPower.Value()); - Assert.AreEqual(false, hvacAux.DoubleGlazing); - Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); - Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); - Assert.AreEqual(true, hvacAux.WaterElectricHeater); - Assert.AreEqual(false, hvacAux.AirElectricHeater); - Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); - } + Assert.AreEqual(false, hvacAux.DoubleGlazing); + Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); + Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); + Assert.AreEqual(null, hvacAux.WaterElectricHeater); + Assert.AreEqual(null, hvacAux.AirElectricHeater); + Assert.AreEqual(null, hvacAux.OtherHeatingTechnology); + } - #region Helper + #region Helper - #endregion - } + #endregion + } } \ No newline at end of file diff --git a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs index 801e095995c191e606368b3edbac1dd74d623a13..3a51f0eb107d23ac241809d7562ca0374e67a41c 100644 --- a/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/MultistageAuxiliariesViewModelTests.cs @@ -13,112 +13,45 @@ namespace Vecto3GUI2020Test.ViewModelTests public class MultistageAuxiliariesViewModelTests : ViewModelTestBase { - - - [Test] - public void TestAllowedValuesHeatPumpModePassenger() - { - - //var auxVm = new MultistageAuxiliariesViewModel(null); - //auxVm.HeatPumpTypePassengerCompartment = HeatPumpType.none; - //Assert.IsTrue(auxVm.HeatPumpModePassengerCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - //Assert.IsFalse(auxVm.HeatPumpModePassengerCompartmentAllowedValues.Contains(HeatPumpMode.cooling)); - //Assert.IsFalse(auxVm.HeatPumpModePassengerCompartmentAllowedValues.Contains(HeatPumpMode.heating)); - //Assert.IsFalse(auxVm.HeatPumpModePassengerCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling)); - - - //auxVm.HeatPumpTypePassengerCompartment = HeatPumpType.R_744; - //Assert.IsFalse(auxVm.HeatPumpModePassengerCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - } - - [Test] - public void TestAllowedValuesHeatPumpModeDriver() - { - var auxVm = new MultistageAuxiliariesViewModel(null); - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.none; - Assert.IsTrue(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.cooling)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating)); - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.heating_and_cooling)); - - - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744; - Assert.IsFalse(auxVm.HeatPumpModeDriverCompartmentAllowedValues.Contains(HeatPumpMode.N_A)); - } - - - [Test] - public void TestEnumParameters() - { - var auxVm = new MultistageAuxiliariesViewModel(null); - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.none; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.R_744; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - - auxVm.HeatPumpGroupEditingEnabled = false; - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent = - HeatPumpType.R_744; - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeDriverCompartment)].CurrentContent = - HeatPumpType.none; - - - Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); - - } - [Test] - public void TestEnum() - { - var auxVm = new MultistageAuxiliariesViewModel(null); - auxVm.HeatPumpTypeDriverCompartment = HeatPumpType.none; - auxVm.HeatPumpModeDriverCompartment = HeatPumpMode.N_A; - auxVm.HeatPumpGroupEditingEnabled = false; - auxVm.HeatPumpGroupEditingEnabled = true; - Assert.AreEqual(HeatPumpMode.N_A, auxVm.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpMode.N_A, - auxVm.ParameterViewModels[nameof(auxVm.HeatPumpModeDriverCompartment)].CurrentContent); + public void TestAllowedValuesHeatPumpTypeDriver() + { + var auxVm = new MultistageAuxiliariesViewModel(null); + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration6; + Assert.AreEqual(auxVm.HeatPumpTypeDriverAllowedValues.Count,1); + Assert.Contains(HeatPumpType.not_applicable, auxVm.HeatPumpTypeDriverAllowedValues); + + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration3; + Assert.IsFalse(auxVm.HeatPumpTypeDriverAllowedValues.Contains(HeatPumpType.not_applicable)); + + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration10; + Assert.AreEqual(auxVm.HeatPumpTypeDriverAllowedValues.Count, 1); + Assert.Contains(HeatPumpType.not_applicable, auxVm.HeatPumpTypeDriverAllowedValues); + + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration2; + Assert.IsFalse(auxVm.HeatPumpTypeDriverAllowedValues.Contains(HeatPumpType.not_applicable)); } - [Test] - public void TestPassengerHeatPumpConfigurations() - { - var auxVm = new MultistageAuxiliariesViewModel(null); - auxVm.HeatPumpGroupEditingEnabled = true; - - - Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count); - - Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); - - - bool canExecuteChangedFired = false; - auxVm.RemovePassengerHeatpumpCommand.CanExecuteChanged += (sender, args) => { - canExecuteChangedFired = true; - }; - - //Add another configuration - - auxVm.AddPassengerHeatpumpCommand.Execute(null); - Assert.AreEqual(2, auxVm.HeatPumpConfigurationsPassenger.Count); - Assert.IsTrue(canExecuteChangedFired, "Can Execute Changed Not Fired"); - canExecuteChangedFired = false; - Assert.IsTrue(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); - - //Remove configuration - auxVm.RemovePassengerHeatpumpCommand.Execute(auxVm.HeatPumpConfigurationsPassenger.Last()); - Assert.AreEqual(1, auxVm.HeatPumpConfigurationsPassenger.Count); - Assert.IsTrue(canExecuteChangedFired); - Assert.IsFalse(auxVm.RemovePassengerHeatpumpCommand.CanExecute(null)); - - + [Test] + public void TestEnumParameters() + { + var auxVm = new MultistageAuxiliariesViewModel(null); + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.none; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.R_744; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + auxVm.HeatPumpGroupEditingEnabled = false; + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = + HeatPumpType.R_744; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); + auxVm.ParameterViewModels[nameof(auxVm.HeatPumpTypeCoolingDriverCompartment)].CurrentContent = + HeatPumpType.none; + Assert.IsTrue(auxVm.HeatPumpGroupEditingEnabled); } } } diff --git a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs index 3cf07d8a49a5447f99da09fba33e3595ba8d48f5..9cc2a9cbf596fa3a83052ad18f3e01435bf97fc6 100644 --- a/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/StageViewModelTests.cs @@ -2,6 +2,10 @@ using System.Runtime.InteropServices; using Ninject; using NUnit.Framework; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using VECTO3GUI2020.ViewModel.Implementation; using VECTO3GUI2020.ViewModel.Interfaces; @@ -19,7 +23,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [TestCase(true, TestName="Exempted")] [TestCase(false, TestName="NotExempted")] - public void updateFilePathsWhenSavedAs_non_exempted(bool exempted) + public void updateFilePathsWhenSaved(bool exempted) { IMultiStageViewModelFactory vmFactory = _kernel.Get<IMultiStageViewModelFactory>(); @@ -32,7 +36,74 @@ namespace Vecto3GUI2020Test.ViewModelTests var fileName = TestHelper.GetMethodName() + ".xml"; StageInput.SaveInputDataExecute(GetFullPath(fileName)); Assert.True(checkFileNameExists(fileName)); - Assert.AreEqual(GetFullPath(fileName), StageInput.InputDataFilePath); + Assert.AreEqual(GetFullPath(fileName), StageInput.VehicleInputDataFilePath); + + //Check if title is updated + StringAssert.Contains(fileName, StageInput.Title); + + //Check datasource + Assert.NotNull(StageInput.DataSource); + + File.Delete(GetFullPath(fileName)); + } + + [Test] + public void SaveFullStageInput() + { + IMultiStageViewModelFactory vmFactory = _kernel.Get<IMultiStageViewModelFactory>(); + + var StageInput = vmFactory.GetStageInputViewModel(false) as StageInputViewModel; + var vehicleVm = StageInput.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; + vehicleVm.Manufacturer = "adsf"; + vehicleVm.ManufacturerAddress = "asdf 123"; + vehicleVm.VIN = "1234567890"; + vehicleVm.Model = "Model"; + vehicleVm.LegislativeClass = LegislativeClass.M3; + vehicleVm.CurbMassChassis = Kilogram.Create(20000); + vehicleVm.GrossVehicleMassRating = Kilogram.Create(20000); + vehicleVm.RegisteredClass = RegistrationClass.I_II; + vehicleVm.VehicleCode = VehicleCode.CC; + vehicleVm.LowEntry = true; + vehicleVm.Height = Meter.Create(2.6); + vehicleVm.NumberPassengerSeatsUpperDeck = 2; + vehicleVm.NumberPassengersStandingLowerDeck = 13; + vehicleVm.NumberPassengerSeatsLowerDeck = 10; + vehicleVm.NumberPassengersStandingUpperDeck = 12; + + //SETADAS + vehicleVm.EngineStopStartNullable = true; + vehicleVm.EcoRollTypeNullable = EcoRollType.WithEngineStop; + vehicleVm.PredictiveCruiseControlNullable = PredictiveCruiseControlType.Option_1_2_3; + vehicleVm.ATEcoRollReleaseLockupClutch = false; + + + + //SETAUxiliaries + var auxVm = vehicleVm.MultistageAuxiliariesViewModel as MultistageAuxiliariesViewModel; + + + auxVm.InteriorLightsLED = true; + auxVm.DayrunninglightsLED = false; + auxVm.PositionlightsLED = false; + auxVm.BrakelightsLED = true; + auxVm.HeadlightsLED = false; + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration2; + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.non_R_744_3_stage; + auxVm.HeatPumpTypeCoolingPassengerCompartment = HeatPumpType.non_R_744_4_stage; + auxVm.HeatPumpTypeHeatingDriverCompartment = HeatPumpType.non_R_744_2_stage; + auxVm.HeatPumpTypeHeatingPassengerCompartment = HeatPumpType.non_R_744_continuous; + auxVm.AuxHeaterPower = SIBase<Watt>.Create(50); + auxVm.DoubleGlazing = true; + auxVm.AdjustableAuxiliaryHeater = false; + auxVm.SeparateAirDistributionDucts = false; + + + + + var fileName = TestHelper.GetMethodName() + ".xml"; + StageInput.SaveInputDataExecute(GetFullPath(fileName)); + Assert.True(checkFileNameExists(fileName)); + Assert.AreEqual(GetFullPath(fileName), StageInput.VehicleInputDataFilePath); //Check if title is updated StringAssert.Contains(fileName, StageInput.Title); diff --git a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs index 868e5033e1c069ba3e144df4acc4cb3033c93d23..da2385bc41057e53bea7e1e3d0eb9d67b56ef7f7 100644 --- a/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/VIFTests.cs @@ -1,11 +1,13 @@ using System; using System.IO; using System.Linq; +using System.Windows; using System.Xml; using Moq; using Ninject; using NUnit.Framework; using NUnit.Framework.Internal; +using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; @@ -19,16 +21,18 @@ using VECTO3GUI2020.ViewModel.MultiStage.Implementation; namespace Vecto3GUI2020Test.ViewModelTests { + [TestFixture] public class VIFTests : ViewModelTestBase { - public const string _finalVifReport4 = "final.VIF_Report_4.xml"; + public const string _finalVif = "vecto_multistage_conventional_final_vif.VIF_Report_1.xml"; + public const string _vectoMultistageOneStage = "vecto_multistage_consolidated_one_stage.xml"; [Test] public void loadPrimaryVehicleOnlyAndCreateNewVIF() { - var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - var stage = multistagevm.ManufacturingStageViewModel.StageCount; + var multistagevm = LoadFileFromTestDirectory(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var stage = multistagevm.ManufacturingStageViewModel.StepCount; Assert.AreEqual(2, stage); @@ -50,7 +54,7 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.IsTrue(File.Exists(writer.XMLMultistageReportFileName)); var validator = new XMLValidator(XmlReader.Create(writer.XMLMultistageReportFileName)); - Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData)); + Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistepOutputData)); } [Test, Combinatorial] @@ -58,21 +62,64 @@ namespace Vecto3GUI2020Test.ViewModelTests [Values("manufacturer")] string manufacturer, [Values(LegislativeClass.M3)] LegislativeClass legCategory) { - var multistagevm = loadFile(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; - var stage = multistagevm.ManufacturingStageViewModel.StageCount; + var multistagevm = LoadFileFromTestDirectory(primary_vehicle_only).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var stage = multistagevm.ManufacturingStageViewModel.StepCount; Assert.AreEqual(2, stage); //Set Necessary Fields - var vehicle = + var vehicleVm = multistagevm.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; - - vehicle.ManufacturerAddress = "Address"; - vehicle.Manufacturer = "Manufacturer"; - vehicle.VIN = "VIN12345678"; - vehicle.Model = "Model"; + vehicleVm.Manufacturer = "adsf"; + vehicleVm.ManufacturerAddress = "asdf 123"; + vehicleVm.VIN = "1234567890"; + vehicleVm.Model = "Model"; + vehicleVm.LegislativeClass = LegislativeClass.M3; + vehicleVm.CurbMassChassis = Kilogram.Create(20000); + vehicleVm.GrossVehicleMassRating = Kilogram.Create(20000); + vehicleVm.RegisteredClass = RegistrationClass.I_II; + vehicleVm.VehicleCode = VehicleCode.CC; + vehicleVm.LowEntry = true; + vehicleVm.Height = Meter.Create(2.6); + vehicleVm.NumberPassengerSeatsUpperDeck = 2; + vehicleVm.NumberPassengersStandingLowerDeck = 13; + vehicleVm.NumberPassengerSeatsLowerDeck = 10; + vehicleVm.NumberPassengersStandingUpperDeck = 12; + + //SETADAS + vehicleVm.EngineStopStartNullable = true; + vehicleVm.EcoRollTypeNullable = EcoRollType.WithEngineStop; + vehicleVm.PredictiveCruiseControlNullable = PredictiveCruiseControlType.Option_1_2_3; + vehicleVm.ATEcoRollReleaseLockupClutch = false; + + + + //SETAUxiliaries + var auxVm = vehicleVm.MultistageAuxiliariesViewModel as MultistageAuxiliariesViewModel; + + auxVm.InteriorLightsLED = true; + auxVm.DayrunninglightsLED = false; + auxVm.PositionlightsLED = false; + auxVm.BrakelightsLED = true; + auxVm.HeadlightsLED = false; + auxVm.SystemConfiguration = BusHVACSystemConfiguration.Configuration2; + auxVm.HeatPumpTypeCoolingDriverCompartment = HeatPumpType.non_R_744_3_stage; + auxVm.HeatPumpTypeCoolingPassengerCompartment = HeatPumpType.non_R_744_4_stage; + auxVm.HeatPumpTypeHeatingDriverCompartment = HeatPumpType.non_R_744_2_stage; + auxVm.HeatPumpTypeHeatingPassengerCompartment = HeatPumpType.non_R_744_continuous; + auxVm.AuxHeaterPower = SIBase<Watt>.Create(50); + auxVm.DoubleGlazing = true; + auxVm.AdjustableAuxiliaryHeater = false; + auxVm.SeparateAirDistributionDucts = false; + + var resultFile = multistagevm.SaveVif(GetFullPath( + "completed_final" + ".xml")); + + + var jobListVm = _kernel.Get<IJobListViewModel>(); + Assert.That(() => jobListVm.Jobs.Count, Is.EqualTo(2)); } @@ -81,7 +128,10 @@ namespace Vecto3GUI2020Test.ViewModelTests [TestCase(false, 0, TestName="Without Airdrag Component")] public void CreateCompletedFinalVIFWithAirdrag(bool loadAirdrag, int airdragVersion) { - var multistagevm = loadFile(_finalVifReport4); + GetMockDialogHelper().Setup(dialogHelper => dialogHelper.ShowMessageBox(It.IsAny<string>(), + It.IsAny<string>(), MessageBoxButton.YesNo, It.IsAny<MessageBoxImage>())).Returns(MessageBoxResult.No); + + var multistagevm = LoadFileFromTestDirectory(_finalVif); var VehicleViewModel = multistagevm.MultiStageJobViewModel.ManufacturingStageViewModel.VehicleViewModel as InterimStageBusVehicleViewModel_v2_8; @@ -91,7 +141,7 @@ namespace Vecto3GUI2020Test.ViewModelTests VehicleViewModel.Model = "asdf"; VehicleViewModel.AirdragModifiedEnum = loadAirdrag ? AIRDRAGMODIFIED.TRUE: AIRDRAGMODIFIED.FALSE; VehicleViewModel.VehicleDeclarationType = VehicleDeclarationType.final; - + VehicleViewModel.VehicleTypeApprovalNumber = "123456789"; //SETADAS VehicleViewModel.EngineStopStartNullable = true; VehicleViewModel.EcoRollTypeNullable = EcoRollType.WithEngineStop; @@ -117,7 +167,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void CreateCompletedExemptedVif() { - var multistagevm = loadFile(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var multistagevm = LoadFileFromTestDirectory(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; var jobListVm = _kernel.Get<IJobListViewModel>(); var vehicleVm = @@ -158,7 +208,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void CreateIncompletedExemptedVif() { - var multistagevm = loadFile(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; + var multistagevm = LoadFileFromTestDirectory(exempted_primary_vif).MultiStageJobViewModel as MultiStageJobViewModel_v0_1; var jobListVm = _kernel.Get<IJobListViewModel>(); var vehicleVm = @@ -200,7 +250,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void TestAirdragLoadAndSave() { - var newMultistageJobViewModel = loadFile(consolidated_multiple_stages); + var newMultistageJobViewModel = LoadFileFromTestDirectory(consolidated_multiple_stages); Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as IMultistageVehicleViewModel; @@ -221,7 +271,7 @@ namespace Vecto3GUI2020Test.ViewModelTests vehicle.ManufacturerAddress = "Address"; vehicle.Manufacturer = "Manufacturer"; vehicle.VIN = "VIN12345678"; - vehicle.AirdragModifiedMultistage = true; + vehicle.AirdragModifiedMultistep = true; vehicle.VehicleDeclarationType = VehicleDeclarationType.interim; var writer = GetFileOutputVIFWriter(multiStageViewModel); @@ -232,7 +282,7 @@ namespace Vecto3GUI2020Test.ViewModelTests multiStageViewModel.SaveVif(multiStageViewModel, writer); var validator = new XMLValidator(XmlReader.Create(writer.XMLMultistageReportFileName)); - Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistageOutputData)); + Assert.True(validator.ValidateXML(TUGraz.VectoCore.Utils.XmlDocumentType.MultistepOutputData)); } diff --git a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs index c814654b61c4c8f0f4ca1794492140a01b3d6764..fcd3071ec09189ab573310891c3a3a3ef59e4b6c 100644 --- a/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs +++ b/Vecto3GUI2020Test/ViewModelTests/VehicleViewModelTests.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; +using Castle.Core.Internal; using Ninject; using NUnit.Framework; using TUGraz.VectoCommon.InputData; @@ -22,7 +23,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void restoreValuesWhenEditingAgain() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; @@ -74,7 +75,7 @@ namespace Vecto3GUI2020Test.ViewModelTests public void SIDummyCreation() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; @@ -91,18 +92,10 @@ namespace Vecto3GUI2020Test.ViewModelTests - [Test] - public void loadVehicleDataAgainUnset() - { - - - - } - [Test] public void NoErrorAfterDataLoading() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); var vehicleVM = vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; @@ -118,7 +111,7 @@ namespace Vecto3GUI2020Test.ViewModelTests [Test] public void LoadPrimaryAndEdit() { - var vm = loadFile(primary_vehicle_only); + var vm = LoadFileFromTestDirectory(primary_vehicle_only); Assert.NotNull(vm); var vehicleViewModel = @@ -134,9 +127,31 @@ namespace Vecto3GUI2020Test.ViewModelTests Assert.Null(vehicleData.ADAS); } + + + + #endregion + [Test] + public void ConsolidatedADASandTPMLMFromPrimaryVehicle() + { + + var vm = LoadFileFromTestDirectory(primary_vehicle_only); + Assert.NotNull(vm); + + var vehicleViewModel = + vm.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; + + Assert.IsTrue(vm.MultiStageJobViewModel.ManufacturingStages.IsNullOrEmpty()); + + Assert.NotNull(vehicleViewModel.ConsolidatedVehicleData); + var consolidatedADAS = vehicleViewModel.ConsolidatedVehicleData.ADAS; + Assert.NotNull(consolidatedADAS); + + Assert.NotNull(vehicleViewModel.ConsolidatedVehicleData.GrossVehicleMassRating); + } } diff --git a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs index b809717d78e15428000f42e6fda53fcab6301cab..a041a6339fcb9d3ccae57f0e3f6788417098fd34 100644 --- a/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs +++ b/Vecto3GUI2020Test/ViewModelTests/ViewModelTestBase.cs @@ -156,23 +156,23 @@ namespace Vecto3GUI2020Test File.Delete(fileName); } - public virtual NewMultiStageJobViewModel loadFile(string fileName) + public virtual NewMultiStageJobViewModel LoadFileFromPath(string filePath) { - - var newMultistageJobViewModel = _kernel.Get<NewMultiStageJobViewModel>(); - var filePath = GetTestDataPath(fileName); + + WriteLine("Loading" + filePath); newMultistageJobViewModel.AddVifFile(filePath); - + Assert.NotNull(newMultistageJobViewModel.MultiStageJobViewModel); var manstageVehicleViewModel = newMultistageJobViewModel.MultiStageJobViewModel.ManufacturingStageViewModel.Vehicle as InterimStageBusVehicleViewModel_v2_8; Assert.NotNull(manstageVehicleViewModel); - Assert.AreEqual(GetTestDataPath(fileName), newMultistageJobViewModel.VifPath); + //Assert.AreEqual(GetTestDataPath(fileName), newMultistageJobViewModel.VifPath); - if (!manstageVehicleViewModel.ExemptedVehicle) { + if (!manstageVehicleViewModel.ExemptedVehicle) + { var auxiliariesViewModel = manstageVehicleViewModel.MultistageAuxiliariesViewModel; Assert.NotNull(auxiliariesViewModel); @@ -182,6 +182,13 @@ namespace Vecto3GUI2020Test return newMultistageJobViewModel; } + public virtual NewMultiStageJobViewModel LoadFileFromTestDirectory(string fileName) + { + var filePath = GetTestDataPath(fileName); + + return LoadFileFromPath(filePath); + } + protected virtual Mock<IDialogHelper> SetMockDialogHelper(string fileToLoad = null, string fileToSave = null) { diff --git a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs index f38ab1e7611420243f5f411006a2d76a001d518e..c7795bb2db0d352824103186d1a7a231c719a84b 100644 --- a/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs +++ b/VectoCommon/VectoCommon/BusAuxiliaries/ISSMDeclarationInputs.cs @@ -194,6 +194,9 @@ namespace TUGraz.VectoCommon.BusAuxiliaries public enum HeatPumpType { + [GuiLabel("not applicable")] + not_applicable, + [GuiLabel("None")] none, @@ -216,6 +219,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries public static class HeatPumpTypeHelper { private const string NONE = "none"; + private const string NOT_APPLICABLE = "not applicable"; private const string R_744 = "R-744"; private const string NON_R_744_2_STAGE = "non R-744 2-stage"; private const string NON_R_744_3_STAGE = "non R-744 3-stage"; @@ -227,12 +231,13 @@ namespace TUGraz.VectoCommon.BusAuxiliaries switch (parse) { case NONE: return HeatPumpType.none; + case NOT_APPLICABLE: return HeatPumpType.not_applicable; case R_744: return HeatPumpType.R_744; case NON_R_744_2_STAGE: return HeatPumpType.non_R_744_2_stage; case NON_R_744_3_STAGE: return HeatPumpType.non_R_744_3_stage; case NON_R_744_4_STAGE: return HeatPumpType.non_R_744_4_stage; case NON_R_744_CONTINUOUS: return HeatPumpType.non_R_744_continuous; - // to support old input parametersd + // to support old input parameters case "2-stage": return HeatPumpType.non_R_744_2_stage; case "3-stage": return HeatPumpType.non_R_744_3_stage; case "4-stage": return HeatPumpType.non_R_744_4_stage; @@ -247,6 +252,7 @@ namespace TUGraz.VectoCommon.BusAuxiliaries } switch (type) { case HeatPumpType.none: return NONE; + case HeatPumpType.not_applicable: return NOT_APPLICABLE; case HeatPumpType.R_744: return R_744; case HeatPumpType.non_R_744_2_stage: return NON_R_744_2_STAGE; case HeatPumpType.non_R_744_3_stage: return NON_R_744_3_STAGE; @@ -300,55 +306,6 @@ namespace TUGraz.VectoCommon.BusAuxiliaries } } - public enum HeatPumpMode - { - - [GuiLabel("Heating")] - heating, - [GuiLabel("Heating and cooling")] - heating_and_cooling, - [GuiLabel("Cooling")] - cooling, - [GuiLabel("not_applicable")] - N_A, - } - - public static class HeatPumpModeHelper - { - private const string HEATING = "heating"; - private const string HEATING_AND_COOLING = "heating and cooling"; - private const string COOLING = "cooling"; - private const string N_A = "N.A."; - - public static HeatPumpMode Parse(string parse) - { - switch (parse) - { - case HEATING: return HeatPumpMode.heating; - case HEATING_AND_COOLING: return HeatPumpMode.heating_and_cooling; - case COOLING: return HeatPumpMode.cooling; - case N_A: return HeatPumpMode.N_A; - default: throw new InvalidEnumArgumentException("HeatPumpMode"); - } - } - - public static string GetLabel(this HeatPumpMode? type) - { - switch (type) - { - case HeatPumpMode.heating: return HEATING; - case HeatPumpMode.heating_and_cooling: return HEATING_AND_COOLING; - case HeatPumpMode.cooling: return COOLING; - case HeatPumpMode.N_A: return N_A; - default: return null; - } - } - - public static string GetLabel(this HeatPumpMode type) - { - return GetLabel(type as HeatPumpMode?); - } - } public interface ISSMEngineeringInputs : ISSMInputs { diff --git a/VectoCommon/VectoCommon/Hashing/VectoComponents.cs b/VectoCommon/VectoCommon/Hashing/VectoComponents.cs index c9e480966fd5307e3873dd36de3b0b7f1a5c6eb4..5999e92d61475ccd8487483b9c359c934e33db77 100644 --- a/VectoCommon/VectoCommon/Hashing/VectoComponents.cs +++ b/VectoCommon/VectoCommon/Hashing/VectoComponents.cs @@ -48,7 +48,12 @@ namespace TUGraz.VectoCommon.Hashing VectoOutput, VectoCustomerInformation, VectoPrimaryVehicleInformation, - VectoManufacturingStage + VectoManufacturingStep, + BatterySystem, + CapacitorSystem, + ElectricMachineSystem, + IEPC, + ADC } public static class VectoComponentsExtensionMethods @@ -80,8 +85,18 @@ namespace TUGraz.VectoCommon.Hashing return "VectoCustomerInformation"; case VectoComponents.VectoPrimaryVehicleInformation: return "PrimaryVehicle"; - case VectoComponents.VectoManufacturingStage: - return "ManufacturingStage"; + case VectoComponents.VectoManufacturingStep: + return XMLNames.ManufacturingStep; + case VectoComponents.BatterySystem: + return XMLNames.Component_BatterySystem; + case VectoComponents.CapacitorSystem: + return XMLNames.Component_CapacitorSystem; + case VectoComponents.ElectricMachineSystem: + return XMLNames.Component_ElectricMachineSystem; + case VectoComponents.IEPC: + return XMLNames.Component_IEPC; + case VectoComponents.ADC: + return XMLNames.Component_ADC; default: throw new ArgumentOutOfRangeException("VectoComponents", component, null); } @@ -114,8 +129,18 @@ namespace TUGraz.VectoCommon.Hashing return "PIF-"; case VectoComponents.Vehicle: return "VEH-"; - case VectoComponents.VectoManufacturingStage: + case VectoComponents.VectoManufacturingStep: return "MST-"; + case VectoComponents.BatterySystem: + return "BAT-"; + case VectoComponents.CapacitorSystem: + return "CAP-"; + case VectoComponents.ElectricMachineSystem: + return "EM-"; + case VectoComponents.IEPC: + return "IEPC-"; + case VectoComponents.ADC: + return "ADC-"; default: throw new ArgumentOutOfRangeException("VectoComponents", component, null); } @@ -127,7 +152,7 @@ namespace TUGraz.VectoCommon.Hashing case VectoComponents.VectoCustomerInformation: case VectoComponents.VectoOutput: case VectoComponents.VectoPrimaryVehicleInformation: - case VectoComponents.VectoManufacturingStage: + case VectoComponents.VectoManufacturingStep: return true; default: return false; diff --git a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs index 9dc542755814da2a20f4e59226230c48d3846cdd..087518be4301d6817f734dd829b4fb096b50605a 100644 --- a/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs +++ b/VectoCommon/VectoCommon/InputData/DeclarationInputData.cs @@ -143,7 +143,7 @@ namespace TUGraz.VectoCommon.InputData bool? SleeperCab { get; } - bool? AirdragModifiedMultistage { get; } + bool? AirdragModifiedMultistep { get; } TankSystem? TankSystem { get; } @@ -195,10 +195,23 @@ namespace TUGraz.VectoCommon.InputData VehicleDeclarationType VehicleDeclarationType { get; } + Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + + TableData BoostingLimitations { get; } + // components IVehicleComponentsDeclaration Components { get; } XmlNode XMLSource { get; } + + string VehicleTypeApprovalNumber { get; } + + ArchitectureID ArchitectureID { get; } + + bool OvcHev { get; } + + Watt MaxChargingPower { get; } + } public interface IVehicleComponentsDeclaration @@ -228,6 +241,8 @@ namespace TUGraz.VectoCommon.InputData IElectricStorageSystemDeclarationInputData ElectricStorage { get; } IElectricMachinesDeclarationInputData ElectricMachines { get; } + + IIEPCDeclarationInputData IEPC { get; } } public interface IAxlesDeclarationInputData @@ -707,36 +722,62 @@ namespace TUGraz.VectoCommon.InputData IList<string> Technology { get; } } - public interface IElectricMotorDeclarationInputData : IComponentInputData - { - IList<IElectricMotorVoltageLevel> VoltageLevels { get; } + //public interface IPowerRatingInputData + //{ - TableData DragCurve { get; } + //NewtonMeter ContinuousTorque { get; } + //PerSecond ContinuousTorqueSpeed { get; } //TestSpeedContinuousTorque + //NewtonMeter OverloadTorque { get; } + //PerSecond OverloadTestSpeed { get; } //TestSpeedOverloadTorque + //Second OverloadTime { get; } //OverloadDuration + //} - KilogramSquareMeter Inertia { get; } - Second OverloadTime { get; } + public interface IElectricMotorDeclarationInputData : IComponentInputData + { + ElectricMachineType ElectricMachineType { get; } + Watt R85RatedPower { get; } + KilogramSquareMeter Inertia { get; } //RotationalInertia - double OverloadRecoveryFactor { get; } - NewtonMeter ContinuousTorque { get; } + bool DcDcConverterIncluded { get; } - PerSecond ContinuousTorqueSpeed { get; } + string IHPCType { get; } - NewtonMeter OverloadTorque { get; } + IList<IElectricMotorVoltageLevel> VoltageLevels { get; } + + TableData DragCurve { get; } - PerSecond OverloadTestSpeed { get; } + TableData Conditioning { get; } + + //double OverloadRecoveryFactor { get; } } public interface IElectricMotorVoltageLevel { Volt VoltageLevel { get; } - TableData FullLoadCurve { get; } + NewtonMeter ContinuousTorque { get; } - TableData EfficiencyMap { get; } + PerSecond ContinuousTorqueSpeed { get; } //TestSpeedContinuousTorque + NewtonMeter OverloadTorque { get; } + + PerSecond OverloadTestSpeed { get; } //TestSpeedOverloadTorque + + Second OverloadTime { get; } //OverloadDuration + + TableData FullLoadCurve { get; } //MaxTorqueCurve + + IList<IElectricMotorPowerMap> PowerMap { get; } } + public interface IElectricMotorPowerMap + { + int Gear { get; } + + TableData PowerMap { get; } + } + public interface IElectricMachinesDeclarationInputData { IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> Entries { get; } @@ -757,10 +798,63 @@ namespace TUGraz.VectoCommon.InputData public double MechanicalTransmissionEfficiency { get; set; } public TableData MechanicalTransmissionLossMap { get; set; } - } + public IADCDeclarationInputData ADC {get; set; } + } + public interface IADCDeclarationInputData : IComponentInputData + { + /// <summary> + /// P176 + /// </summary> + double Ratio { get; } + + /// <summary> + /// P173, P174, P175 + /// </summary> + TableData LossMap { get; } + } + + + public interface IIEPCDeclarationInputData : IComponentInputData + { + ElectricMachineType ElectricMachineType { get; } + Watt R85RatedPower { get; } + KilogramSquareMeter Inertia { get; } //RotationalInertia + + bool DifferentialIncluded { get; } + + bool DesignTypeWheelMotor { get; } + + int? NrOfDesignTypeWheelMotorMeasured { get; } + + IList<IGearEntry> Gears { get; } + IList<IElectricMotorVoltageLevel> VoltageLevels { get; } + + IList<IDragCurve> DragCurves { get; } + + TableData Conditioning { get; } + } + + public interface IDragCurve + { + int? Gear { get; } + + TableData DragCurve { get; } + } + + + public interface IGearEntry + { + int GearNumber { get; } + + double Ratio { get; } + NewtonMeter MaxOutputShaftTorque { get; } + + PerSecond MaxOutputShaftSpeed { get; } + } + public interface IElectricStorageSystemDeclarationInputData { IList<IElectricStorageDeclarationInputData> ElectricStorageElements { get; } @@ -789,13 +883,20 @@ namespace TUGraz.VectoCommon.InputData public interface IBatteryPackDeclarationInputData : IREESSPackInputData { - - double MinSOC { get; } + double? MinSOC { get; } + + double? MaxSOC { get; } - double MaxSOC { get; } + BatteryType BatteryType { get; } AmpereSecond Capacity { get; } + bool ConnectorsSubsystemsIncluded { get; } + + bool JunctionboxIncluded { get; } + + Kelvin TestingTemperature { get; } + TableData InternalResistanceCurve { get; } TableData VoltageCurve { get; } @@ -817,6 +918,7 @@ namespace TUGraz.VectoCommon.InputData Ampere MaxCurrentDischarge { get; } + Kelvin TestingTemperature { get; } } @@ -852,6 +954,8 @@ namespace TUGraz.VectoCommon.InputData IList<IAlternatorDeclarationInputData> Alternators { get; } + bool ESSupplyFromHEVREESS { get; } + IList<IBusAuxElectricStorageDeclarationInputData> ElectricStorage { get; } } @@ -908,11 +1012,13 @@ namespace TUGraz.VectoCommon.InputData { BusHVACSystemConfiguration? SystemConfiguration { get; } - HeatPumpType? HeatPumpTypeDriverCompartment { get; } - - HeatPumpMode? HeatPumpModeDriverCompartment { get; } + HeatPumpType? HeatPumpTypeCoolingDriverCompartment { get; } + + HeatPumpType? HeatPumpTypeHeatingDriverCompartment { get; } + + HeatPumpType? HeatPumpTypeCoolingPassengerCompartment { get; } - IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments { get; } + HeatPumpType? HeatPumpTypeHeatingPassengerCompartment { get; } Watt AuxHeaterPower { get; } @@ -973,8 +1079,8 @@ namespace TUGraz.VectoCommon.InputData public interface IManufacturingStageInputData { - DigestData HashPreviousStage { get; } - int StageCount { get; } + DigestData HashPreviousStep { get; } + int StepCount { get; } IVehicleDeclarationInputData Vehicle { get; } @@ -1052,4 +1158,83 @@ namespace TUGraz.VectoCommon.InputData } } -} \ No newline at end of file + + public enum ElectricMachineType + { + ASM, + ESM, + PSM, + RM + } + + public enum BatteryType + { + HPBS, + HEBS + } + + public enum ArchitectureID + { + E2, + E3, + E4, + E_IEPC, + P1, + P2, + P2_5, + P3, + P4, + S2, + S3, + S4, + S_IEPC + } + + + public static class ArchitectureIDHelper + { + private const string E_IEPC_ID = "E-IEPC"; + private const string P2_5_ID = "P2.5"; + private const string S_IEPC_ID = "S-IEPC"; + + public static ArchitectureID Parse(string parse) + { + switch (parse) + { + case nameof(ArchitectureID.E2): + case nameof(ArchitectureID.E3): + case nameof(ArchitectureID.E4): + case nameof(ArchitectureID.P1): + case nameof(ArchitectureID.P2): + case nameof(ArchitectureID.P3): + case nameof(ArchitectureID.P4): + case nameof(ArchitectureID.S2): + case nameof(ArchitectureID.S3): + case nameof(ArchitectureID.S4): + return parse.ParseEnum<ArchitectureID>(); + case E_IEPC_ID: + return ArchitectureID.E_IEPC; + case P2_5_ID: + return ArchitectureID.P2_5; + case S_IEPC_ID: + return ArchitectureID.S_IEPC; + default: + throw new ArgumentOutOfRangeException($"{nameof(ArchitectureID)}"); + } + } + + public static string GetLabel(this ArchitectureID type) + { + switch (type) { + case ArchitectureID.E_IEPC: + return E_IEPC_ID; + case ArchitectureID.P2_5: + return P2_5_ID; + case ArchitectureID.S_IEPC: + return S_IEPC_ID; + default: + return type.ToString(); + } + } + } +} diff --git a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs index 7dc547529bc5df9fa432e22df7d6586c57c94832..d15fd87f43cb4c85baf9b505697f8289ab3ee4d5 100644 --- a/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs +++ b/VectoCommon/VectoCommon/InputData/EngineeringInputData.cs @@ -30,8 +30,6 @@ */ using System.Collections.Generic; -using System.Data; -using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Models.SimulationComponent.Impl; @@ -56,7 +54,7 @@ namespace TUGraz.VectoCommon.InputData public enum VectoSimulationJobType { - ConventionalVehicle, + ConventionalVehicle = 1, ParallelHybridVehicle, SerialHybridVehicle, BatteryElectricVehicle, @@ -104,12 +102,9 @@ namespace TUGraz.VectoCommon.InputData /// </summary> Meter DynamicTyreRadius { get; } - Meter Height { get; } - - TableData ElectricMotorTorqueLimits { get; } - - TableData MaxPropulsionTorque { get; } + Meter Height { get; } + new IVehicleComponentsEngineering Components { get; } new IAdvancedDriverAssistantSystemsEngineering ADAS { get; } @@ -210,7 +205,7 @@ namespace TUGraz.VectoCommon.InputData TableData PTOCycleWhileDriving { get; } } - + public interface IAxleEngineeringInputData : IAxleDeclarationInputData { /// <summary> @@ -478,6 +473,7 @@ namespace TUGraz.VectoCommon.InputData public interface IElectricMotorEngineeringInputData : IElectricMotorDeclarationInputData { + double OverloadRecoveryFactor { get; } } public interface IElectricMachinesEngineeringInputData : IElectricMachinesDeclarationInputData @@ -629,5 +625,5 @@ namespace TUGraz.VectoCommon.InputData Watt ElectricPowerDemand { get; } } - + } diff --git a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs index 66e6a172bab78bd27aaa89d0dbbecbaf2c1e3677..3cfeac75b278d1f031181e0a5e145d38e41f4e67 100644 --- a/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs +++ b/VectoCommon/VectoCommon/InputData/IInputDataProvider.cs @@ -84,7 +84,6 @@ namespace TUGraz.VectoCommon.InputData public interface ISingleBusInputDataProvider : IDeclarationInputDataProvider { IVehicleDeclarationInputData PrimaryVehicle { get; } - IVehicleDeclarationInputData CompletedVehicle { get; } } @@ -96,6 +95,13 @@ namespace TUGraz.VectoCommon.InputData new IDeclarationMultistageJobInputData JobInputData { get; } } + public interface IMultistagePrimaryAndStageInputDataProvider : IInputDataProvider + { + IDeclarationInputDataProvider PrimaryVehicle { get; } + IVehicleDeclarationInputData StageInputData { get; } + } + + public interface IDeclarationMultistageJobInputData { IPrimaryVehicleInformationInputDataProvider PrimaryVehicle { get; } diff --git a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs index 6253726c5de309a8ffa13950ec1871a43288f39d..cf25a4c8e7714f609364984a89ec29a3a2921368 100644 --- a/VectoCommon/VectoCommon/Models/PowertrainPosition.cs +++ b/VectoCommon/VectoCommon/Models/PowertrainPosition.cs @@ -13,6 +13,8 @@ namespace TUGraz.VectoCommon.InputData { HybridP3, HybridP4, + GEN, + BatteryElectricE4, BatteryElectricE3, BatteryElectricE2, @@ -25,6 +27,10 @@ namespace TUGraz.VectoCommon.InputData { public static PowertrainPosition Parse(string pos) { + if (pos.EndsWith(nameof(PowertrainPosition.GEN))) { + return PowertrainPosition.GEN; + } + if (pos.StartsWith("P",StringComparison.InvariantCultureIgnoreCase)) { return (HybridPrefix + pos).Replace(".", "_").ParseEnum<PowertrainPosition>(); } @@ -54,6 +60,8 @@ namespace TUGraz.VectoCommon.InputData { return pos.ToString().Replace(HybridPrefix, ""); case PowertrainPosition.HybridP2_5: return pos.ToString().Replace(HybridPrefix, "").Replace("_", "."); + case PowertrainPosition.GEN: + return nameof(PowertrainPosition.GEN); } return pos.ToString().Replace(BatteryElectriPrefix, "").Replace("B", "E"); } diff --git a/VectoCommon/VectoCommon/Models/RetarderType.cs b/VectoCommon/VectoCommon/Models/RetarderType.cs index d6aced020cb70ad9752b7934001ac8e37b185ea7..1cf592758e9152121ba3afeb55f4354265b5fac7 100644 --- a/VectoCommon/VectoCommon/Models/RetarderType.cs +++ b/VectoCommon/VectoCommon/Models/RetarderType.cs @@ -40,7 +40,8 @@ namespace TUGraz.VectoCommon.Models TransmissionInputRetarder, TransmissionOutputRetarder, EngineRetarder, - LossesIncludedInTransmission + LossesIncludedInTransmission, + AxlegearInputRetarder, } public static class RetarderTypeHelper @@ -52,6 +53,8 @@ namespace TUGraz.VectoCommon.Models return RetarderType.TransmissionInputRetarder; case "secondary": return RetarderType.TransmissionOutputRetarder; + case "losses included in gearbox": + return RetarderType.LossesIncludedInTransmission; default: return retarderType.ParseEnum<RetarderType>(); } diff --git a/VectoCommon/VectoCommon/Models/VehicleCategory.cs b/VectoCommon/VectoCommon/Models/VehicleCategory.cs index dcd11cbfa3f42f1560613a607ba7c51087e4a660..083aca805f5b7e96b1bfff493511262707d6da76 100644 --- a/VectoCommon/VectoCommon/Models/VehicleCategory.cs +++ b/VectoCommon/VectoCommon/Models/VehicleCategory.cs @@ -154,6 +154,8 @@ namespace TUGraz.VectoCommon.Models return VehicleCategory.Tractor; case "Rigid Lorry": return VehicleCategory.RigidTruck; + case "Van": + return VehicleCategory.Van; default: return VehicleCategory.Unknown; } diff --git a/VectoCommon/VectoCommon/Properties/Version.cs b/VectoCommon/VectoCommon/Properties/Version.cs index b967d0c706fcd758c3cb553603eb98c49af3ffa5..2371bff40d458615dd78cbea831da80cfdfaf23e 100644 --- a/VectoCommon/VectoCommon/Properties/Version.cs +++ b/VectoCommon/VectoCommon/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("0.7.3.2171")] -[assembly: AssemblyFileVersion("0.7.3.2171")] \ No newline at end of file +[assembly: AssemblyVersion("0.7.6.2527")] +[assembly: AssemblyFileVersion("0.7.6.2527")] \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs index 21355b20571c62f6af6cc389e9f127fbb398b75f..e64483c26e0e3ffa0c7ea8bc808b9e3be476f6ec 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs +++ b/VectoCommon/VectoCommon/Resources/XMLNames.Designer.cs @@ -60,6 +60,60 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Ratio. + /// </summary> + public static string ADC_Ratio { + get { + return ResourceManager.GetString("ADC_Ratio", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to TorqueLossMap. + /// </summary> + public static string ADC_TorqueLossMap { + get { + return ResourceManager.GetString("ADC_TorqueLossMap", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. + /// </summary> + public static string ADC_TorqueLossMap_Entry { + get { + return ResourceManager.GetString("ADC_TorqueLossMap_Entry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to inputSpeed. + /// </summary> + public static string ADC_TorqueLossMap_InputSpeed { + get { + return ResourceManager.GetString("ADC_TorqueLossMap_InputSpeed", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to inputTorque. + /// </summary> + public static string ADC_TorqueLossMap_InputTorque { + get { + return ResourceManager.GetString("ADC_TorqueLossMap_InputTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to torqueLoss. + /// </summary> + public static string ADC_TorqueLossMap_TorqueLoss { + get { + return ResourceManager.GetString("ADC_TorqueLossMap_TorqueLoss", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to CdxA_0. /// </summary> @@ -493,11 +547,56 @@ namespace TUGraz.VectoCommon.Resources { } /// <summary> - /// Looks up a localized string similar to APTEcoRollReleaseLockupClutch. + /// Looks up a localized string similar to SOCmax. + /// </summary> + public static string Battery_SOCmax { + get { + return ResourceManager.GetString("Battery_SOCmax", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to SOCmin. + /// </summary> + public static string Battery_SOCmin { + get { + return ResourceManager.GetString("Battery_SOCmin", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to StringID. + /// </summary> + public static string Battery_StringID { + get { + return ResourceManager.GetString("Battery_StringID", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to boostingTorque. + /// </summary> + public static string BoostingLimitation_BoostingTorque { + get { + return ResourceManager.GetString("BoostingLimitation_BoostingTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. + /// </summary> + public static string BoostingLimitation_Entry { + get { + return ResourceManager.GetString("BoostingLimitation_Entry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to rotationalSpeed. /// </summary> - public static string Bus_ADAS_APTEcoRollReleaseLockupClutch { + public static string BoostingLimitation_RotationalSpeed { get { - return ResourceManager.GetString("Bus_ADAS_APTEcoRollReleaseLockupClutch", resourceCulture); + return ResourceManager.GetString("BoostingLimitation_RotationalSpeed", resourceCulture); } } @@ -529,11 +628,11 @@ namespace TUGraz.VectoCommon.Resources { } /// <summary> - /// Looks up a localized string similar to AirdragModifiedMultistage. + /// Looks up a localized string similar to AirdragModifiedMultistep. /// </summary> - public static string Bus_AirdragModifiedMultistage { + public static string Bus_AirdragModifiedMultistep { get { - return ResourceManager.GetString("Bus_AirdragModifiedMultistage", resourceCulture); + return ResourceManager.GetString("Bus_AirdragModifiedMultistep", resourceCulture); } } @@ -582,15 +681,6 @@ namespace TUGraz.VectoCommon.Resources { } } - /// <summary> - /// Looks up a localized string similar to ChassisConfiguration. - /// </summary> - public static string Bus_ChassisConfiguration { - get { - return ResourceManager.GetString("Bus_ChassisConfiguration", resourceCulture); - } - } - /// <summary> /// Looks up a localized string similar to CompressorRatio. /// </summary> @@ -609,15 +699,6 @@ namespace TUGraz.VectoCommon.Resources { } } - /// <summary> - /// Looks up a localized string similar to CorrectedActualMass. - /// </summary> - public static string Bus_CorrectedActualMass { - get { - return ResourceManager.GetString("Bus_CorrectedActualMass", resourceCulture); - } - } - /// <summary> /// Looks up a localized string similar to Dayrunninglights. /// </summary> @@ -738,9 +819,9 @@ namespace TUGraz.VectoCommon.Resources { /// <summary> /// Looks up a localized string similar to HeightIntegratedBody. /// </summary> - public static string Bus_HeighIntegratedBody { + public static string Bus_HeightIntegratedBody { get { - return ResourceManager.GetString("Bus_HeighIntegratedBody", resourceCulture); + return ResourceManager.GetString("Bus_HeightIntegratedBody", resourceCulture); } } @@ -753,15 +834,6 @@ namespace TUGraz.VectoCommon.Resources { } } - /// <summary> - /// Looks up a localized string similar to LegislativeCategory. - /// </summary> - public static string Bus_LegislativeCategory { - get { - return ResourceManager.GetString("Bus_LegislativeCategory", resourceCulture); - } - } - /// <summary> /// Looks up a localized string similar to LowEntry. /// </summary> @@ -1311,6 +1383,105 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Cooling. + /// </summary> + public static string BusHVACHeatPumpCooling { + get { + return ResourceManager.GetString("BusHVACHeatPumpCooling", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Heating. + /// </summary> + public static string BusHVACHeatPumpHeating { + get { + return ResourceManager.GetString("BusHVACHeatPumpHeating", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BusManufacturingStepDataType. + /// </summary> + public static string BusManufacturingStepDataType { + get { + return ResourceManager.GetString("BusManufacturingStepDataType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Capacitance. + /// </summary> + public static string Capacitor_Capacitance { + get { + return ResourceManager.GetString("Capacitor_Capacitance", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to InternalResistance. + /// </summary> + public static string Capacitor_InternalResistance { + get { + return ResourceManager.GetString("Capacitor_InternalResistance", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxChargingCurrent. + /// </summary> + public static string Capacitor_MaxChargingCurrent { + get { + return ResourceManager.GetString("Capacitor_MaxChargingCurrent", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxDischargingCurrent. + /// </summary> + public static string Capacitor_MaxDischargingCurrent { + get { + return ResourceManager.GetString("Capacitor_MaxDischargingCurrent", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxVoltage. + /// </summary> + public static string Capacitor_MaxVoltage { + get { + return ResourceManager.GetString("Capacitor_MaxVoltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MinVoltage. + /// </summary> + public static string Capacitor_MinVoltage { + get { + return ResourceManager.GetString("Capacitor_MinVoltage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ChassisConfiguration. + /// </summary> + public static string ChassisConfiguration { + get { + return ResourceManager.GetString("ChassisConfiguration", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ADC. + /// </summary> + public static string Component_ADC { + get { + return ResourceManager.GetString("Component_ADC", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to AirDrag. /// </summary> @@ -1365,6 +1536,24 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to BatterySystem. + /// </summary> + public static string Component_BatterySystem { + get { + return ResourceManager.GetString("Component_BatterySystem", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to CapacitorSystem. + /// </summary> + public static string Component_CapacitorSystem { + get { + return ResourceManager.GetString("Component_CapacitorSystem", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to CertificationMethod. /// </summary> @@ -1410,6 +1599,42 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ElectricEnergyStorage. + /// </summary> + public static string Component_ElectricEnergyStorage { + get { + return ResourceManager.GetString("Component_ElectricEnergyStorage", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachine. + /// </summary> + public static string Component_ElectricMachine { + get { + return ResourceManager.GetString("Component_ElectricMachine", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachineGEN. + /// </summary> + public static string Component_ElectricMachineGEN { + get { + return ResourceManager.GetString("Component_ElectricMachineGEN", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachineSystem. + /// </summary> + public static string Component_ElectricMachineSystem { + get { + return ResourceManager.GetString("Component_ElectricMachineSystem", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Engine. /// </summary> @@ -1446,6 +1671,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to IEPC. + /// </summary> + public static string Component_IEPC { + get { + return ResourceManager.GetString("Component_IEPC", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Manufacturer. /// </summary> @@ -1563,6 +1797,51 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Conditioning. + /// </summary> + public static string Conditioning { + get { + return ResourceManager.GetString("Conditioning", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to coolantTempInlet. + /// </summary> + public static string Conditioning_CoolantTempInlet { + get { + return ResourceManager.GetString("Conditioning_CoolantTempInlet", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to coolingPower. + /// </summary> + public static string Conditioning_CoolingPower { + get { + return ResourceManager.GetString("Conditioning_CoolingPower", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. + /// </summary> + public static string Conditioning_Entry { + get { + return ResourceManager.GetString("Conditioning_Entry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to CorrectedActualMass. + /// </summary> + public static string CorrectedActualMass { + get { + return ResourceManager.GetString("CorrectedActualMass", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Signature. /// </summary> @@ -1636,52 +1915,97 @@ namespace TUGraz.VectoCommon.Resources { } /// <summary> - /// Looks up a localized string similar to decisionFactorVel. + /// Looks up a localized string similar to DragCurve. /// </summary> - public static string Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr { + public static string DragCurve { get { - return ResourceManager.GetString("Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr", resourceCulture); + return ResourceManager.GetString("DragCurve", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to targetVelocity. + /// Looks up a localized string similar to dragTorque. /// </summary> - public static string Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr { + public static string DragCurve_DragTorque { get { - return ResourceManager.GetString("Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr", resourceCulture); + return ResourceManager.GetString("DragCurve_DragTorque", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to decisionFactorDrop. + /// Looks up a localized string similar to Entry. /// </summary> - public static string Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr { + public static string DragCurve_Entry { get { - return ResourceManager.GetString("Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr", resourceCulture); + return ResourceManager.GetString("DragCurve_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to velocityDrop. + /// Looks up a localized string similar to gear. /// </summary> - public static string Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr { + public static string DragCurve_Gear { get { - return ResourceManager.GetString("Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr", resourceCulture); + return ResourceManager.GetString("DragCurve_Gear", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to DriverAccelerationCurve. + /// Looks up a localized string similar to outShaftSpeed. /// </summary> - public static string DriverModel_DriverAccelerationCurve { + public static string DragCurve_OutShaftSpeed { get { - return ResourceManager.GetString("DriverModel_DriverAccelerationCurve", resourceCulture); + return ResourceManager.GetString("DragCurve_OutShaftSpeed", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Entry. + /// Looks up a localized string similar to decisionFactorVel. + /// </summary> + public static string Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr { + get { + return ResourceManager.GetString("Driver_CoastingDFTargetSpeedLookupMapping_DecisionFactor_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to targetVelocity. + /// </summary> + public static string Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr { + get { + return ResourceManager.GetString("Driver_CoastingDFTargetSpeedLookupMapping_TargetVelocity_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to decisionFactorDrop. + /// </summary> + public static string Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr { + get { + return ResourceManager.GetString("Driver_CoastingDFVelocityDropLookupMapping_DecisionFactorDrop_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to velocityDrop. + /// </summary> + public static string Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr { + get { + return ResourceManager.GetString("Driver_CoastingDFVelocityDropLookupMapping_VelocityDrop_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DriverAccelerationCurve. + /// </summary> + public static string DriverModel_DriverAccelerationCurve { + get { + return ResourceManager.GetString("DriverModel_DriverAccelerationCurve", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. /// </summary> public static string DriverModel_DriverAccelerationCurve_Entry { get { @@ -1932,6 +2256,195 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to Battery. + /// </summary> + public static string ElectricEnergyStorage_Battery { + get { + return ResourceManager.GetString("ElectricEnergyStorage_Battery", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Capacitor. + /// </summary> + public static string ElectricEnergyStorage_Capacitor { + get { + return ResourceManager.GetString("ElectricEnergyStorage_Capacitor", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ContinuousTorque. + /// </summary> + public static string ElectricMachine_ContinuousTorque { + get { + return ResourceManager.GetString("ElectricMachine_ContinuousTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Count. + /// </summary> + public static string ElectricMachine_Count { + get { + return ResourceManager.GetString("ElectricMachine_Count", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DcDcConverterIncluded. + /// </summary> + public static string ElectricMachine_DcDcConverterIncluded { + get { + return ResourceManager.GetString("ElectricMachine_DcDcConverterIncluded", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachineType. + /// </summary> + public static string ElectricMachine_ElectricMachineType { + get { + return ResourceManager.GetString("ElectricMachine_ElectricMachineType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to IHPCType. + /// </summary> + public static string ElectricMachine_IHPCType { + get { + return ResourceManager.GetString("ElectricMachine_IHPCType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to OverloadDuration. + /// </summary> + public static string ElectricMachine_OverloadDuration { + get { + return ResourceManager.GetString("ElectricMachine_OverloadDuration", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to OverloadTorque. + /// </summary> + public static string ElectricMachine_OverloadTorque { + get { + return ResourceManager.GetString("ElectricMachine_OverloadTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to P2.5GearRatios. + /// </summary> + public static string ElectricMachine_P2_5GearRatios { + get { + return ResourceManager.GetString("ElectricMachine_P2.5GearRatios", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Position. + /// </summary> + public static string ElectricMachine_Position { + get { + return ResourceManager.GetString("ElectricMachine_Position", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to PowertrainPosition. + /// </summary> + public static string ElectricMachine_PowertrainPosition { + get { + return ResourceManager.GetString("ElectricMachine_PowertrainPosition", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to R85RatedPower. + /// </summary> + public static string ElectricMachine_R85RatedPower { + get { + return ResourceManager.GetString("ElectricMachine_R85RatedPower", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to RotationalInertia. + /// </summary> + public static string ElectricMachine_RotationalInertia { + get { + return ResourceManager.GetString("ElectricMachine_RotationalInertia", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to TestSpeedContinuousTorque. + /// </summary> + public static string ElectricMachine_TestSpeedContinuousTorque { + get { + return ResourceManager.GetString("ElectricMachine_TestSpeedContinuousTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to TestSpeedOverloadTorque. + /// </summary> + public static string ElectricMachine_TestSpeedOverloadTorque { + get { + return ResourceManager.GetString("ElectricMachine_TestSpeedOverloadTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to TestVoltageOverload. + /// </summary> + public static string ElectricMachine_TestVoltageOverload { + get { + return ResourceManager.GetString("ElectricMachine_TestVoltageOverload", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to VoltageLevel. + /// </summary> + public static string ElectricMachine_VoltageLevel { + get { + return ResourceManager.GetString("ElectricMachine_VoltageLevel", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachineSystem. + /// </summary> + public static string ElectricMachineSystem { + get { + return ResourceManager.GetString("ElectricMachineSystem", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMachine. + /// </summary> + public static string ElectricMotorTorqueLimit_ElectricMachine { + get { + return ResourceManager.GetString("ElectricMotorTorqueLimit_ElectricMachine", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to ElectricMotorTorqueLimits. + /// </summary> + public static string ElectricMotorTorqueLimits { + get { + return ResourceManager.GetString("ElectricMotorTorqueLimits", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to BFColdHot. /// </summary> @@ -2176,488 +2689,893 @@ namespace TUGraz.VectoCommon.Resources { } /// <summary> - /// Looks up a localized string similar to MechanicalOutputICE. + /// Looks up a localized string similar to MechanicalOutputICE. + /// </summary> + public static string Engine_WHR_MechanicalOutputICE { + get { + return ResourceManager.GetString("Engine_WHR_MechanicalOutputICE", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MechanicalOutputDrivetrain. + /// </summary> + public static string Engine_WHR_MechanicalOutputIDrivetrain { + get { + return ResourceManager.GetString("Engine_WHR_MechanicalOutputIDrivetrain", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHRCorrection. + /// </summary> + public static string Engine_WHRCorrectionFactor { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactor", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHRCorrectionFactors. + /// </summary> + public static string Engine_WHRCorrectionFactors { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BFColdHot. + /// </summary> + public static string Engine_WHRCorrectionFactors_BFColdHot { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_BFColdHot", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to CFRegPer. + /// </summary> + public static string Engine_WHRCorrectionFactors_CFRegPer { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_CFRegPer", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Electrical. + /// </summary> + public static string Engine_WHRCorrectionFactors_Electrical { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_Electrical", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Mechanical. + /// </summary> + public static string Engine_WHRCorrectionFactors_Mechanical { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_Mechanical", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Motorway. + /// </summary> + public static string Engine_WHRCorrectionFactors_Motorway { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_Motorway", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Rural. + /// </summary> + public static string Engine_WHRCorrectionFactors_Rural { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_Rural", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Urban. + /// </summary> + public static string Engine_WHRCorrectionFactors_Urban { + get { + return ResourceManager.GetString("Engine_WHRCorrectionFactors_Urban", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHRMap. + /// </summary> + public static string Engine_WHRMap { + get { + return ResourceManager.GetString("Engine_WHRMap", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. + /// </summary> + public static string Engine_WHRMap_Entry { + get { + return ResourceManager.GetString("Engine_WHRMap_Entry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHRType. + /// </summary> + public static string Engine_WHRType { + get { + return ResourceManager.GetString("Engine_WHRType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHTCEngineering. + /// </summary> + public static string Engine_WHTCEngineering { + get { + return ResourceManager.GetString("Engine_WHTCEngineering", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHTCMotorway. + /// </summary> + public static string Engine_WHTCMotorway { + get { + return ResourceManager.GetString("Engine_WHTCMotorway", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHTCRural. + /// </summary> + public static string Engine_WHTCRural { + get { + return ResourceManager.GetString("Engine_WHTCRural", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to WHTCUrban. + /// </summary> + public static string Engine_WHTCUrban { + get { + return ResourceManager.GetString("Engine_WHTCUrban", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to SumNetPower. + /// </summary> + public static string Exempted_SumNetPower { + get { + return ResourceManager.GetString("Exempted_SumNetPower", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Technology. + /// </summary> + public static string Exempted_Technology { + get { + return ResourceManager.GetString("Exempted_Technology", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Resource. + /// </summary> + public static string ExternalResource { + get { + return ResourceManager.GetString("ExternalResource", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to component. + /// </summary> + public static string ExtResource_Component_Attr { + get { + return ResourceManager.GetString("ExtResource_Component_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to file. + /// </summary> + public static string ExtResource_File_Attr { + get { + return ResourceManager.GetString("ExtResource_File_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to type. + /// </summary> + public static string ExtResource_Type_Attr { + get { + return ResourceManager.GetString("ExtResource_Type_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to csv. + /// </summary> + public static string ExtResource_Type_Value_CSV { + get { + return ResourceManager.GetString("ExtResource_Type_Value_CSV", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to xml. + /// </summary> + public static string ExtResource_Type_Value_XML { + get { + return ResourceManager.GetString("ExtResource_Type_Value_XML", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Gear. + /// </summary> + public static string Gear_EntryName { + get { + return ResourceManager.GetString("Gear_EntryName", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to number. + /// </summary> + public static string Gear_GearNumber_Attr { + get { + return ResourceManager.GetString("Gear_GearNumber_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxOutShaftSpeed. + /// </summary> + public static string Gear_MaxOutputShaftSpeed { + get { + return ResourceManager.GetString("Gear_MaxOutputShaftSpeed", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxOutShaftTorque. + /// </summary> + public static string Gear_MaxOutputShaftTorque { + get { + return ResourceManager.GetString("Gear_MaxOutputShaftTorque", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Ratio. + /// </summary> + public static string Gear_Ratio { + get { + return ResourceManager.GetString("Gear_Ratio", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to engineTorque. + /// </summary> + public static string Gear_ShiftPolygon_EngineTorque_Attr { + get { + return ResourceManager.GetString("Gear_ShiftPolygon_EngineTorque_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to downshiftSpeed. + /// </summary> + public static string Gear_ShiftPolygonMapping_DownshiftSpeed_Attr { + get { + return ResourceManager.GetString("Gear_ShiftPolygonMapping_DownshiftSpeed_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to upshiftSpeed. + /// </summary> + public static string Gear_ShiftPolygonMapping_UpshiftSpeed_Attr { + get { + return ResourceManager.GetString("Gear_ShiftPolygonMapping_UpshiftSpeed_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to GearboxDataDeclarationType. + /// </summary> + public static string Gearbox_attr_GearboxDataDeclarationType { + get { + return ResourceManager.GetString("Gearbox_attr_GearboxDataDeclarationType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to AxlegearRatio. + /// </summary> + public static string Gearbox_AxlegearRatio { + get { + return ResourceManager.GetString("Gearbox_AxlegearRatio", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to DifferentialIncluded. + /// </summary> + public static string Gearbox_DifferentialIncluded { + get { + return ResourceManager.GetString("Gearbox_DifferentialIncluded", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Efficiency. + /// </summary> + public static string Gearbox_Gear_Efficiency { + get { + return ResourceManager.GetString("Gearbox_Gear_Efficiency", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to number. + /// </summary> + public static string Gearbox_Gear_GearNumber_Attr { + get { + return ResourceManager.GetString("Gearbox_Gear_GearNumber_Attr", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to MaxSpeed. + /// </summary> + public static string Gearbox_Gear_MaxSpeed { + get { + return ResourceManager.GetString("Gearbox_Gear_MaxSpeed", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Ratio. + /// </summary> + public static string Gearbox_Gear_Ratio { + get { + return ResourceManager.GetString("Gearbox_Gear_Ratio", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to TorqueLossMap. + /// </summary> + public static string Gearbox_Gear_TorqueLossMap { + get { + return ResourceManager.GetString("Gearbox_Gear_TorqueLossMap", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Entry. + /// </summary> + public static string Gearbox_Gear_TorqueLossMap_Entry { + get { + return ResourceManager.GetString("Gearbox_Gear_TorqueLossMap_Entry", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Gears. + /// </summary> + public static string Gearbox_Gears { + get { + return ResourceManager.GetString("Gearbox_Gears", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to GearsDeclarationType. + /// </summary> + public static string Gearbox_Gears_Attr_GearsDeclarationType { + get { + return ResourceManager.GetString("Gearbox_Gears_Attr_GearsDeclarationType", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Gear. /// </summary> - public static string Engine_WHR_MechanicalOutputICE { + public static string Gearbox_Gears_Gear { get { - return ResourceManager.GetString("Engine_WHR_MechanicalOutputICE", resourceCulture); + return ResourceManager.GetString("Gearbox_Gears_Gear", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to MechanicalOutputDrivetrain. + /// Looks up a localized string similar to ShiftPolygon. /// </summary> - public static string Engine_WHR_MechanicalOutputIDrivetrain { + public static string Gearbox_Gears_Gear_ShiftPolygon { get { - return ResourceManager.GetString("Engine_WHR_MechanicalOutputIDrivetrain", resourceCulture); + return ResourceManager.GetString("Gearbox_Gears_Gear_ShiftPolygon", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHRCorrection. + /// Looks up a localized string similar to Entry. /// </summary> - public static string Engine_WHRCorrectionFactor { + public static string Gearbox_Gears_Gear_ShiftPolygon_Entry { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactor", resourceCulture); + return ResourceManager.GetString("Gearbox_Gears_Gear_ShiftPolygon_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHRCorrectionFactors. + /// Looks up a localized string similar to MaxTorque. /// </summary> - public static string Engine_WHRCorrectionFactors { + public static string Gearbox_Gears_MaxTorque { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors", resourceCulture); + return ResourceManager.GetString("Gearbox_Gears_MaxTorque", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to BFColdHot. + /// Looks up a localized string similar to Inertia. /// </summary> - public static string Engine_WHRCorrectionFactors_BFColdHot { + public static string Gearbox_Inertia { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_BFColdHot", resourceCulture); + return ResourceManager.GetString("Gearbox_Inertia", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to CFRegPer. + /// Looks up a localized string similar to TractionInterruption. /// </summary> - public static string Engine_WHRCorrectionFactors_CFRegPer { + public static string Gearbox_TractionInterruption { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_CFRegPer", resourceCulture); + return ResourceManager.GetString("Gearbox_TractionInterruption", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Electrical. + /// Looks up a localized string similar to TransmissionType. /// </summary> - public static string Engine_WHRCorrectionFactors_Electrical { + public static string Gearbox_TransmissionType { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_Electrical", resourceCulture); + return ResourceManager.GetString("Gearbox_TransmissionType", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Mechanical. + /// Looks up a localized string similar to Ratio. /// </summary> - public static string Engine_WHRCorrectionFactors_Mechanical { + public static string GearRatio_Ratio { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_Mechanical", resourceCulture); + return ResourceManager.GetString("GearRatio_Ratio", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Motorway. + /// Looks up a localized string similar to IEPC. /// </summary> - public static string Engine_WHRCorrectionFactors_Motorway { + public static string IEPC_Component { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_Motorway", resourceCulture); + return ResourceManager.GetString("IEPC_Component", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Rural. + /// Looks up a localized string similar to DesignTypeWheelMotor. /// </summary> - public static string Engine_WHRCorrectionFactors_Rural { + public static string IEPC_DesignTypeWheelMotor { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_Rural", resourceCulture); + return ResourceManager.GetString("IEPC_DesignTypeWheelMotor", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Urban. + /// Looks up a localized string similar to DifferentialIncluded. /// </summary> - public static string Engine_WHRCorrectionFactors_Urban { + public static string IEPC_DifferentialIncluded { get { - return ResourceManager.GetString("Engine_WHRCorrectionFactors_Urban", resourceCulture); + return ResourceManager.GetString("IEPC_DifferentialIncluded", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHRMap. + /// Looks up a localized string similar to NrOfDesignTypeWheelMotorMeasured. /// </summary> - public static string Engine_WHRMap { + public static string IEPC_NrOfDesignTypeWheelMotorMeasured { get { - return ResourceManager.GetString("Engine_WHRMap", resourceCulture); + return ResourceManager.GetString("IEPC_NrOfDesignTypeWheelMotorMeasured", resourceCulture); } } /// <summary> /// Looks up a localized string similar to Entry. /// </summary> - public static string Engine_WHRMap_Entry { + public static string LookAheadCoasting_SpeedDependentDecisionFactor_Entry { get { - return ResourceManager.GetString("Engine_WHRMap_Entry", resourceCulture); + return ResourceManager.GetString("LookAheadCoasting_SpeedDependentDecisionFactor_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHRType. + /// Looks up a localized string similar to Entry. /// </summary> - public static string Engine_WHRType { + public static string LookAheadCoasting_VelocityDropDecisionFactor_Entry { get { - return ResourceManager.GetString("Engine_WHRType", resourceCulture); + return ResourceManager.GetString("LookAheadCoasting_VelocityDropDecisionFactor_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHTCEngineering. + /// Looks up a localized string similar to ManufacturerAddressCompletedVehicle. /// </summary> - public static string Engine_WHTCEngineering { + public static string ManufacturerAddressCompletedVehicle { get { - return ResourceManager.GetString("Engine_WHTCEngineering", resourceCulture); + return ResourceManager.GetString("ManufacturerAddressCompletedVehicle", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHTCMotorway. + /// Looks up a localized string similar to ManufacturerAddressPrimaryVehicle. /// </summary> - public static string Engine_WHTCMotorway { + public static string ManufacturerAddressPrimaryVehicle { get { - return ResourceManager.GetString("Engine_WHTCMotorway", resourceCulture); + return ResourceManager.GetString("ManufacturerAddressPrimaryVehicle", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHTCRural. + /// Looks up a localized string similar to ManufacturerCompletedVehicle. /// </summary> - public static string Engine_WHTCRural { + public static string ManufacturerCompletedVehicle { get { - return ResourceManager.GetString("Engine_WHTCRural", resourceCulture); + return ResourceManager.GetString("ManufacturerCompletedVehicle", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to WHTCUrban. + /// Looks up a localized string similar to ManufacturerPrimaryVehicle. /// </summary> - public static string Engine_WHTCUrban { + public static string ManufacturerPrimaryVehicle { get { - return ResourceManager.GetString("Engine_WHTCUrban", resourceCulture); + return ResourceManager.GetString("ManufacturerPrimaryVehicle", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Resource. + /// Looks up a localized string similar to ManufacturingStep. /// </summary> - public static string ExternalResource { + public static string ManufacturingStep { get { - return ResourceManager.GetString("ExternalResource", resourceCulture); + return ResourceManager.GetString("ManufacturingStep", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to component. + /// Looks up a localized string similar to BusManufacturingStepDataType. /// </summary> - public static string ExtResource_Component_Attr { + public static string ManufacturingStep_Bus_DataType { get { - return ResourceManager.GetString("ExtResource_Component_Attr", resourceCulture); + return ResourceManager.GetString("ManufacturingStep_Bus_DataType", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to file. + /// Looks up a localized string similar to HashPreviousStep. /// </summary> - public static string ExtResource_File_Attr { + public static string ManufacturingStep_HashPreviousStep { get { - return ResourceManager.GetString("ExtResource_File_Attr", resourceCulture); + return ResourceManager.GetString("ManufacturingStep_HashPreviousStep", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to type. + /// Looks up a localized string similar to stepCount. /// </summary> - public static string ExtResource_Type_Attr { + public static string ManufacturingStep_StepCount { get { - return ResourceManager.GetString("ExtResource_Type_Attr", resourceCulture); + return ResourceManager.GetString("ManufacturingStep_StepCount", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to csv. + /// Looks up a localized string similar to stepCount. /// </summary> - public static string ExtResource_Type_Value_CSV { + public static string ManufacturingStep_stepCount_Attr { get { - return ResourceManager.GetString("ExtResource_Type_Value_CSV", resourceCulture); + return ResourceManager.GetString("ManufacturingStep_stepCount_Attr", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to xml. + /// Looks up a localized string similar to MaxTorqueCurve. /// </summary> - public static string ExtResource_Type_Value_XML { + public static string MaxTorqueCurve { get { - return ResourceManager.GetString("ExtResource_Type_Value_XML", resourceCulture); + return ResourceManager.GetString("MaxTorqueCurve", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to engineTorque. + /// Looks up a localized string similar to Entry. /// </summary> - public static string Gear_ShiftPolygon_EngineTorque_Attr { + public static string MaxTorqueCurve_Entry { get { - return ResourceManager.GetString("Gear_ShiftPolygon_EngineTorque_Attr", resourceCulture); + return ResourceManager.GetString("MaxTorqueCurve_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to downshiftSpeed. + /// Looks up a localized string similar to maxTorque. /// </summary> - public static string Gear_ShiftPolygonMapping_DownshiftSpeed_Attr { + public static string MaxTorqueCurve_MaxTorque { get { - return ResourceManager.GetString("Gear_ShiftPolygonMapping_DownshiftSpeed_Attr", resourceCulture); + return ResourceManager.GetString("MaxTorqueCurve_MaxTorque", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to upshiftSpeed. + /// Looks up a localized string similar to minTorque. /// </summary> - public static string Gear_ShiftPolygonMapping_UpshiftSpeed_Attr { + public static string MaxTorqueCurve_MinTorque { get { - return ResourceManager.GetString("Gear_ShiftPolygonMapping_UpshiftSpeed_Attr", resourceCulture); + return ResourceManager.GetString("MaxTorqueCurve_MinTorque", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to GearboxDataDeclarationType. + /// Looks up a localized string similar to outShaftSpeed. /// </summary> - public static string Gearbox_attr_GearboxDataDeclarationType { + public static string MaxTorqueCurve_OutShaftSpeed { get { - return ResourceManager.GetString("Gearbox_attr_GearboxDataDeclarationType", resourceCulture); + return ResourceManager.GetString("MaxTorqueCurve_OutShaftSpeed", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to AxlegearRatio. + /// Looks up a localized string similar to Cycle. /// </summary> - public static string Gearbox_AxlegearRatio { + public static string Missions_Cycle { get { - return ResourceManager.GetString("Gearbox_AxlegearRatio", resourceCulture); + return ResourceManager.GetString("Missions_Cycle", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to DifferentialIncluded. + /// Looks up a localized string similar to PowerMap. /// </summary> - public static string Gearbox_DifferentialIncluded { + public static string PowerMap { get { - return ResourceManager.GetString("Gearbox_DifferentialIncluded", resourceCulture); + return ResourceManager.GetString("PowerMap", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Efficiency. + /// Looks up a localized string similar to electricPower. /// </summary> - public static string Gearbox_Gear_Efficiency { + public static string PowerMap_ElectricPower { get { - return ResourceManager.GetString("Gearbox_Gear_Efficiency", resourceCulture); + return ResourceManager.GetString("PowerMap_ElectricPower", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to number. + /// Looks up a localized string similar to Entry. /// </summary> - public static string Gearbox_Gear_GearNumber_Attr { + public static string PowerMap_Entry { get { - return ResourceManager.GetString("Gearbox_Gear_GearNumber_Attr", resourceCulture); + return ResourceManager.GetString("PowerMap_Entry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to MaxSpeed. + /// Looks up a localized string similar to gear. /// </summary> - public static string Gearbox_Gear_MaxSpeed { + public static string PowerMap_Gear { get { - return ResourceManager.GetString("Gearbox_Gear_MaxSpeed", resourceCulture); + return ResourceManager.GetString("PowerMap_Gear", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Ratio. + /// Looks up a localized string similar to outShaftSpeed. /// </summary> - public static string Gearbox_Gear_Ratio { + public static string PowerMap_OutShaftSpeed { get { - return ResourceManager.GetString("Gearbox_Gear_Ratio", resourceCulture); + return ResourceManager.GetString("PowerMap_OutShaftSpeed", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to TorqueLossMap. + /// Looks up a localized string similar to torque. /// </summary> - public static string Gearbox_Gear_TorqueLossMap { + public static string PowerMap_Torque { get { - return ResourceManager.GetString("Gearbox_Gear_TorqueLossMap", resourceCulture); + return ResourceManager.GetString("PowerMap_Torque", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Entry. + /// Looks up a localized string similar to BatteryType. /// </summary> - public static string Gearbox_Gear_TorqueLossMap_Entry { + public static string REESS_BatteryType { get { - return ResourceManager.GetString("Gearbox_Gear_TorqueLossMap_Entry", resourceCulture); + return ResourceManager.GetString("REESS_BatteryType", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Gears. + /// Looks up a localized string similar to ConnectorsSubsystemsIncluded. /// </summary> - public static string Gearbox_Gears { + public static string REESS_ConnectorsSubsystemsIncluded { get { - return ResourceManager.GetString("Gearbox_Gears", resourceCulture); + return ResourceManager.GetString("REESS_ConnectorsSubsystemsIncluded", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to GearsDeclarationType. + /// Looks up a localized string similar to CurrentLimits. /// </summary> - public static string Gearbox_Gears_Attr_GearsDeclarationType { + public static string REESS_CurrentLimits { get { - return ResourceManager.GetString("Gearbox_Gears_Attr_GearsDeclarationType", resourceCulture); + return ResourceManager.GetString("REESS_CurrentLimits", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Gear. + /// Looks up a localized string similar to maxChargingCurrent. /// </summary> - public static string Gearbox_Gears_Gear { + public static string REESS_CurrentLimits_MaxChargingCurrent { get { - return ResourceManager.GetString("Gearbox_Gears_Gear", resourceCulture); + return ResourceManager.GetString("REESS_CurrentLimits_MaxChargingCurrent", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ShiftPolygon. + /// Looks up a localized string similar to maxDischargingCurrent. /// </summary> - public static string Gearbox_Gears_Gear_ShiftPolygon { + public static string REESS_CurrentLimits_MaxDischargingCurrent { get { - return ResourceManager.GetString("Gearbox_Gears_Gear_ShiftPolygon", resourceCulture); + return ResourceManager.GetString("REESS_CurrentLimits_MaxDischargingCurrent", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Entry. + /// Looks up a localized string similar to SoC. /// </summary> - public static string Gearbox_Gears_Gear_ShiftPolygon_Entry { + public static string REESS_CurrentLimits_SoC { get { - return ResourceManager.GetString("Gearbox_Gears_Gear_ShiftPolygon_Entry", resourceCulture); + return ResourceManager.GetString("REESS_CurrentLimits_SoC", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to MaxTorque. + /// Looks up a localized string similar to InternalResistance. /// </summary> - public static string Gearbox_Gears_MaxTorque { + public static string REESS_InternalResistanceCurve { get { - return ResourceManager.GetString("Gearbox_Gears_MaxTorque", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Inertia. + /// Looks up a localized string similar to R_10. /// </summary> - public static string Gearbox_Inertia { + public static string REESS_InternalResistanceCurve_R10 { get { - return ResourceManager.GetString("Gearbox_Inertia", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve_R10", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to TractionInterruption. + /// Looks up a localized string similar to R_120. /// </summary> - public static string Gearbox_TractionInterruption { + public static string REESS_InternalResistanceCurve_R120 { get { - return ResourceManager.GetString("Gearbox_TractionInterruption", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve_R120", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to TransmissionType. + /// Looks up a localized string similar to R_2. /// </summary> - public static string Gearbox_TransmissionType { + public static string REESS_InternalResistanceCurve_R2 { get { - return ResourceManager.GetString("Gearbox_TransmissionType", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve_R2", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Entry. + /// Looks up a localized string similar to R_20. /// </summary> - public static string LookAheadCoasting_SpeedDependentDecisionFactor_Entry { + public static string REESS_InternalResistanceCurve_R20 { get { - return ResourceManager.GetString("LookAheadCoasting_SpeedDependentDecisionFactor_Entry", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve_R20", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Entry. + /// Looks up a localized string similar to SoC. /// </summary> - public static string LookAheadCoasting_VelocityDropDecisionFactor_Entry { + public static string REESS_InternalResistanceCurve_SoC { get { - return ResourceManager.GetString("LookAheadCoasting_VelocityDropDecisionFactor_Entry", resourceCulture); + return ResourceManager.GetString("REESS_InternalResistanceCurve_SoC", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ManufacturerAddressCompletedVehicle. + /// Looks up a localized string similar to JunctionboxIncluded. /// </summary> - public static string ManufacturerAddressCompletedVehicle { + public static string REESS_JunctionboxIncluded { get { - return ResourceManager.GetString("ManufacturerAddressCompletedVehicle", resourceCulture); + return ResourceManager.GetString("REESS_JunctionboxIncluded", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ManufacturerAddressPrimaryVehicle. + /// Looks up a localized string similar to Entry. /// </summary> - public static string ManufacturerAddressPrimaryVehicle { + public static string REESS_MapEntry { get { - return ResourceManager.GetString("ManufacturerAddressPrimaryVehicle", resourceCulture); + return ResourceManager.GetString("REESS_MapEntry", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ManufacturerCompletedVehicle. + /// Looks up a localized string similar to OCV. /// </summary> - public static string ManufacturerCompletedVehicle { + public static string REESS_OCV { get { - return ResourceManager.GetString("ManufacturerCompletedVehicle", resourceCulture); + return ResourceManager.GetString("REESS_OCV", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ManufacturerPrimaryVehicle. + /// Looks up a localized string similar to OCV. /// </summary> - public static string ManufacturerPrimaryVehicle { + public static string REESS_OCV_OCV { get { - return ResourceManager.GetString("ManufacturerPrimaryVehicle", resourceCulture); + return ResourceManager.GetString("REESS_OCV_OCV", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to ManufacturingStage. + /// Looks up a localized string similar to SoC. /// </summary> - public static string ManufacturingStage { + public static string REESS_OCV_SoC { get { - return ResourceManager.GetString("ManufacturingStage", resourceCulture); + return ResourceManager.GetString("REESS_OCV_SoC", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to stageCount. + /// Looks up a localized string similar to RatedCapacity. /// </summary> - public static string ManufacturingStage_StageCount { + public static string REESS_RatedCapacity { get { - return ResourceManager.GetString("ManufacturingStage_StageCount", resourceCulture); + return ResourceManager.GetString("REESS_RatedCapacity", resourceCulture); } } /// <summary> - /// Looks up a localized string similar to Cycle. + /// Looks up a localized string similar to TestingTemperature. /// </summary> - public static string Missions_Cycle { + public static string REESS_TestingTemperature { get { - return ResourceManager.GetString("Missions_Cycle", resourceCulture); + return ResourceManager.GetString("REESS_TestingTemperature", resourceCulture); } } @@ -3742,11 +4660,11 @@ namespace TUGraz.VectoCommon.Resources { } /// <summary> - /// Looks up a localized string similar to VectoOutputMultistage. + /// Looks up a localized string similar to VectoOutputMultistep. /// </summary> - public static string VectoOutputMultistage { + public static string VectoOutputMultistep { get { - return ResourceManager.GetString("VectoOutputMultistage", resourceCulture); + return ResourceManager.GetString("VectoOutputMultistep", resourceCulture); } } @@ -3921,6 +4839,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to ArchitectureID. + /// </summary> + public static string Vehicle_ArchitectureID { + get { + return ResourceManager.GetString("Vehicle_ArchitectureID", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to Articulated. /// </summary> @@ -3948,6 +4875,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to BoostingLimitations. + /// </summary> + public static string Vehicle_BoostingLimitation { + get { + return ResourceManager.GetString("Vehicle_BoostingLimitation", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to CargoVolume. /// </summary> @@ -4110,6 +5046,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to LegislativeCategory. + /// </summary> + public static string Vehicle_LegislativeCategory { + get { + return ResourceManager.GetString("Vehicle_LegislativeCategory", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to LegislativeClass. /// </summary> @@ -4128,6 +5073,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to MaxChargingPower. + /// </summary> + public static string Vehicle_MaxChargingPower { + get { + return ResourceManager.GetString("Vehicle_MaxChargingPower", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to MaxNetPower1. /// </summary> @@ -4155,6 +5109,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to OvcHev. + /// </summary> + public static string Vehicle_OvcHev { + get { + return ResourceManager.GetString("Vehicle_OvcHev", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to PTO. /// </summary> @@ -4362,6 +5325,15 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to VehicleTypeApprovalNumber. + /// </summary> + public static string Vehicle_TypeApprovalNumber { + get { + return ResourceManager.GetString("Vehicle_TypeApprovalNumber", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to VehicleCategory. /// </summary> @@ -4416,6 +5388,24 @@ namespace TUGraz.VectoCommon.Resources { } } + /// <summary> + /// Looks up a localized string similar to VehicleTypeApprovalNumber. + /// </summary> + public static string VehicleTypeApprovalNumber { + get { + return ResourceManager.GetString("VehicleTypeApprovalNumber", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Voltage. + /// </summary> + public static string VoltageLevel_Voltage { + get { + return ResourceManager.GetString("VoltageLevel_Voltage", resourceCulture); + } + } + /// <summary> /// Looks up a localized string similar to torqueLimit. /// </summary> diff --git a/VectoCommon/VectoCommon/Resources/XMLNames.resx b/VectoCommon/VectoCommon/Resources/XMLNames.resx index 5b3d5c193ade3c8741a0fd51c5b2ed6a39a4676c..431dbe7fdb2313bd29e35837c23e7f5caf5ab7c6 100644 --- a/VectoCommon/VectoCommon/Resources/XMLNames.resx +++ b/VectoCommon/VectoCommon/Resources/XMLNames.resx @@ -210,6 +210,12 @@ <data name="Component_Transmission" xml:space="preserve"> <value>Transmission</value> </data> + <data name="Component_ElectricMachine" xml:space="preserve"> + <value>ElectricMachine</value> + </data> + <data name="Component_ElectricMachineGEN" xml:space="preserve"> + <value>ElectricMachineGEN</value> + </data> <data name="Gearbox_TransmissionType" xml:space="preserve"> <value>TransmissionType</value> </data> @@ -1245,7 +1251,7 @@ <data name="Bus_LowEntry" xml:space="preserve"> <value>LowEntry</value> </data> - <data name="Bus_HeighIntegratedBody" xml:space="preserve"> + <data name="Bus_HeightIntegratedBody" xml:space="preserve"> <value>HeightIntegratedBody</value> </data> <data name="Bus_VehicleLength" xml:space="preserve"> @@ -1377,16 +1383,13 @@ <data name="Report_Result_PassengerCount" xml:space="preserve"> <value>PassengerCount</value> </data> - <data name="Bus_LegislativeCategory" xml:space="preserve"> + <data name="Vehicle_LegislativeCategory" xml:space="preserve"> <value>LegislativeCategory</value> </data> - <data name="Bus_ADAS_APTEcoRollReleaseLockupClutch" xml:space="preserve"> - <value>APTEcoRollReleaseLockupClutch</value> + <data name="Bus_AirdragModifiedMultistep" xml:space="preserve"> + <value>AirdragModifiedMultistep</value> </data> - <data name="Bus_AirdragModifiedMultistage" xml:space="preserve"> - <value>AirdragModifiedMultistage</value> - </data> - <data name="Bus_CorrectedActualMass" xml:space="preserve"> + <data name="CorrectedActualMass" xml:space="preserve"> <value>CorrectedActualMass</value> </data> <data name="Bus_NumberPassengersLowerDeck" xml:space="preserve"> @@ -1416,17 +1419,17 @@ <data name="Bus_WaterElectricHeater" xml:space="preserve"> <value>WaterElectricHeater</value> </data> - <data name="VectoOutputMultistage" xml:space="preserve"> - <value>VectoOutputMultistage</value> + <data name="VectoOutputMultistep" xml:space="preserve"> + <value>VectoOutputMultistep</value> </data> <data name="Bus_PrimaryVehicle" xml:space="preserve"> <value>PrimaryVehicle</value> </data> - <data name="ManufacturingStage" xml:space="preserve"> - <value>ManufacturingStage</value> + <data name="ManufacturingStep" xml:space="preserve"> + <value>ManufacturingStep</value> </data> - <data name="ManufacturingStage_StageCount" xml:space="preserve"> - <value>stageCount</value> + <data name="ManufacturingStep_StepCount" xml:space="preserve"> + <value>stepCount</value> </data> <data name="Bus_DeclarationType" xml:space="preserve"> <value>DeclarationType</value> @@ -1512,7 +1515,7 @@ <data name="CompressorDrive" xml:space="preserve"> <value>CompressorDrive</value> </data> - <data name="Bus_ChassisConfiguration" xml:space="preserve"> + <data name="ChassisConfiguration" xml:space="preserve"> <value>ChassisConfiguration</value> </data> <data name="Bus_NumberPassengerSeatsLowerDeck" xml:space="preserve"> @@ -1572,7 +1575,334 @@ <data name="BusAux_Technology" xml:space="preserve"> <value>Technology</value> </data> -<data name="Report_CO2StandardsGroup" xml:space="preserve"> - <value>CO2StandardsGroup</value> -</data> + <data name="BusHVACHeatPumpCooling" xml:space="preserve"> + <value>Cooling</value> + </data> + <data name="BusHVACHeatPumpHeating" xml:space="preserve"> + <value>Heating</value> + </data> + <data name="Exempted_SumNetPower" xml:space="preserve"> + <value>SumNetPower</value> + </data> + <data name="Exempted_Technology" xml:space="preserve"> + <value>Technology</value> + </data> + <data name="VehicleTypeApprovalNumber" xml:space="preserve"> + <value>VehicleTypeApprovalNumber</value> + </data> + <data name="BusManufacturingStepDataType" xml:space="preserve"> + <value>BusManufacturingStepDataType</value> + </data> + <data name="ManufacturingStep_HashPreviousStep" xml:space="preserve"> + <value>HashPreviousStep</value> + </data> + <data name="ManufacturingStep_stepCount_Attr" xml:space="preserve"> + <value>stepCount</value> + </data> + <data name="ManufacturingStep_Bus_DataType" xml:space="preserve"> + <value>BusManufacturingStepDataType</value> + </data> + <data name="Report_CO2StandardsGroup" xml:space="preserve"> + <value>CO2StandardsGroup</value> + </data> + <data name="ElectricMachine_Count" xml:space="preserve"> + <value>Count</value> + </data> + <data name="ElectricMachine_P2.5GearRatios" xml:space="preserve"> + <value>P2.5GearRatios</value> + </data> + <data name="ElectricMachine_PowertrainPosition" xml:space="preserve"> + <value>PowertrainPosition</value> + </data> + <data name="ElectricMachine_ContinuousTorque" xml:space="preserve"> + <value>ContinuousTorque</value> + </data> + <data name="ElectricMachine_DcDcConverterIncluded" xml:space="preserve"> + <value>DcDcConverterIncluded</value> + </data> + <data name="ElectricMachine_ElectricMachineType" xml:space="preserve"> + <value>ElectricMachineType</value> + </data> + <data name="ElectricMachine_IHPCType" xml:space="preserve"> + <value>IHPCType</value> + </data> + <data name="ElectricMachine_OverloadDuration" xml:space="preserve"> + <value>OverloadDuration</value> + </data> + <data name="ElectricMachine_OverloadTorque" xml:space="preserve"> + <value>OverloadTorque</value> + </data> + <data name="ElectricMachine_R85RatedPower" xml:space="preserve"> + <value>R85RatedPower</value> + </data> + <data name="ElectricMachine_RotationalInertia" xml:space="preserve"> + <value>RotationalInertia</value> + </data> + <data name="ElectricMachine_TestSpeedContinuousTorque" xml:space="preserve"> + <value>TestSpeedContinuousTorque</value> + </data> + <data name="ElectricMachine_TestSpeedOverloadTorque" xml:space="preserve"> + <value>TestSpeedOverloadTorque</value> + </data> + <data name="ElectricMachine_TestVoltageOverload" xml:space="preserve"> + <value>TestVoltageOverload</value> + </data> + <data name="GearRatio_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="VoltageLevel_Voltage" xml:space="preserve"> + <value>Voltage</value> + </data> + <data name="ElectricMachineSystem" xml:space="preserve"> + <value>ElectricMachineSystem</value> + </data> + <data name="Component_ElectricEnergyStorage" xml:space="preserve"> + <value>ElectricEnergyStorage</value> + </data> + <data name="ElectricEnergyStorage_Battery" xml:space="preserve"> + <value>Battery</value> + </data> + <data name="ElectricEnergyStorage_Capacitor" xml:space="preserve"> + <value>Capacitor</value> + </data> + <data name="Battery_SOCmax" xml:space="preserve"> + <value>SOCmax</value> + </data> + <data name="Battery_SOCmin" xml:space="preserve"> + <value>SOCmin</value> + </data> + <data name="Battery_StringID" xml:space="preserve"> + <value>StringID</value> + </data> + <data name="REESS_BatteryType" xml:space="preserve"> + <value>BatteryType</value> + </data> + <data name="REESS_ConnectorsSubsystemsIncluded" xml:space="preserve"> + <value>ConnectorsSubsystemsIncluded</value> + </data> + <data name="REESS_CurrentLimits" xml:space="preserve"> + <value>CurrentLimits</value> + </data> + <data name="REESS_InternalResistanceCurve" xml:space="preserve"> + <value>InternalResistance</value> + </data> + <data name="REESS_InternalResistanceCurve_R10" xml:space="preserve"> + <value>R_10</value> + </data> + <data name="REESS_InternalResistanceCurve_R120" xml:space="preserve"> + <value>R_120</value> + </data> + <data name="REESS_InternalResistanceCurve_R2" xml:space="preserve"> + <value>R_2</value> + </data> + <data name="REESS_InternalResistanceCurve_R20" xml:space="preserve"> + <value>R_20</value> + </data> + <data name="REESS_InternalResistanceCurve_SoC" xml:space="preserve"> + <value>SoC</value> + </data> + <data name="REESS_JunctionboxIncluded" xml:space="preserve"> + <value>JunctionboxIncluded</value> + </data> + <data name="REESS_MapEntry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="REESS_OCV" xml:space="preserve"> + <value>OCV</value> + </data> + <data name="REESS_OCV_OCV" xml:space="preserve"> + <value>OCV</value> + </data> + <data name="REESS_OCV_SoC" xml:space="preserve"> + <value>SoC</value> + </data> + <data name="REESS_RatedCapacity" xml:space="preserve"> + <value>RatedCapacity</value> + </data> + <data name="REESS_TestingTemperature" xml:space="preserve"> + <value>TestingTemperature</value> + </data> + <data name="BoostingLimitation_BoostingTorque" xml:space="preserve"> + <value>boostingTorque</value> + </data> + <data name="BoostingLimitation_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="BoostingLimitation_RotationalSpeed" xml:space="preserve"> + <value>rotationalSpeed</value> + </data> + <data name="DragCurve" xml:space="preserve"> + <value>DragCurve</value> + </data> + <data name="DragCurve_DragTorque" xml:space="preserve"> + <value>dragTorque</value> + </data> + <data name="DragCurve_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="DragCurve_OutShaftSpeed" xml:space="preserve"> + <value>outShaftSpeed</value> + </data> + <data name="ElectricMachine_Position" xml:space="preserve"> + <value>Position</value> + </data> + <data name="ElectricMachine_VoltageLevel" xml:space="preserve"> + <value>VoltageLevel</value> + </data> + <data name="ElectricMotorTorqueLimits" xml:space="preserve"> + <value>ElectricMotorTorqueLimits</value> + </data> + <data name="ElectricMotorTorqueLimit_ElectricMachine" xml:space="preserve"> + <value>ElectricMachine</value> + </data> + <data name="MaxTorqueCurve" xml:space="preserve"> + <value>MaxTorqueCurve</value> + </data> + <data name="MaxTorqueCurve_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="MaxTorqueCurve_MaxTorque" xml:space="preserve"> + <value>maxTorque</value> + </data> + <data name="MaxTorqueCurve_MinTorque" xml:space="preserve"> + <value>minTorque</value> + </data> + <data name="MaxTorqueCurve_OutShaftSpeed" xml:space="preserve"> + <value>outShaftSpeed</value> + </data> + <data name="PowerMap" xml:space="preserve"> + <value>PowerMap</value> + </data> + <data name="PowerMap_ElectricPower" xml:space="preserve"> + <value>electricPower</value> + </data> + <data name="PowerMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="PowerMap_OutShaftSpeed" xml:space="preserve"> + <value>outShaftSpeed</value> + </data> + <data name="PowerMap_Torque" xml:space="preserve"> + <value>torque</value> + </data> + <data name="REESS_CurrentLimits_MaxChargingCurrent" xml:space="preserve"> + <value>maxChargingCurrent</value> + </data> + <data name="REESS_CurrentLimits_MaxDischargingCurrent" xml:space="preserve"> + <value>maxDischargingCurrent</value> + </data> + <data name="REESS_CurrentLimits_SoC" xml:space="preserve"> + <value>SoC</value> + </data> + <data name="Vehicle_BoostingLimitation" xml:space="preserve"> + <value>BoostingLimitations</value> + </data> + <data name="Capacitor_Capacitance" xml:space="preserve"> + <value>Capacitance</value> + </data> + <data name="Capacitor_InternalResistance" xml:space="preserve"> + <value>InternalResistance</value> + </data> + <data name="Capacitor_MaxChargingCurrent" xml:space="preserve"> + <value>MaxChargingCurrent</value> + </data> + <data name="Capacitor_MaxDischargingCurrent" xml:space="preserve"> + <value>MaxDischargingCurrent</value> + </data> + <data name="Capacitor_MaxVoltage" xml:space="preserve"> + <value>MaxVoltage</value> + </data> + <data name="Capacitor_MinVoltage" xml:space="preserve"> + <value>MinVoltage</value> + </data> + <data name="ADC_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="ADC_TorqueLossMap" xml:space="preserve"> + <value>TorqueLossMap</value> + </data> + <data name="ADC_TorqueLossMap_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="ADC_TorqueLossMap_InputSpeed" xml:space="preserve"> + <value>inputSpeed</value> + </data> + <data name="ADC_TorqueLossMap_InputTorque" xml:space="preserve"> + <value>inputTorque</value> + </data> + <data name="ADC_TorqueLossMap_TorqueLoss" xml:space="preserve"> + <value>torqueLoss</value> + </data> + <data name="Gear_EntryName" xml:space="preserve"> + <value>Gear</value> + </data> + <data name="Gear_GearNumber_Attr" xml:space="preserve"> + <value>number</value> + </data> + <data name="Gear_MaxOutputShaftSpeed" xml:space="preserve"> + <value>MaxOutShaftSpeed</value> + </data> + <data name="Gear_MaxOutputShaftTorque" xml:space="preserve"> + <value>MaxOutShaftTorque</value> + </data> + <data name="Gear_Ratio" xml:space="preserve"> + <value>Ratio</value> + </data> + <data name="IEPC_Component" xml:space="preserve"> + <value>IEPC</value> + </data> + <data name="IEPC_DesignTypeWheelMotor" xml:space="preserve"> + <value>DesignTypeWheelMotor</value> + </data> + <data name="IEPC_DifferentialIncluded" xml:space="preserve"> + <value>DifferentialIncluded</value> + </data> + <data name="IEPC_NrOfDesignTypeWheelMotorMeasured" xml:space="preserve"> + <value>NrOfDesignTypeWheelMotorMeasured</value> + </data> + <data name="Vehicle_TypeApprovalNumber" xml:space="preserve"> + <value>VehicleTypeApprovalNumber</value> + </data> + <data name="Vehicle_ArchitectureID" xml:space="preserve"> + <value>ArchitectureID</value> + </data> + <data name="Vehicle_MaxChargingPower" xml:space="preserve"> + <value>MaxChargingPower</value> + </data> + <data name="Vehicle_OvcHev" xml:space="preserve"> + <value>OvcHev</value> + </data> + <data name="Conditioning" xml:space="preserve"> + <value>Conditioning</value> + </data> + <data name="Conditioning_CoolantTempInlet" xml:space="preserve"> + <value>coolantTempInlet</value> + </data> + <data name="Conditioning_CoolingPower" xml:space="preserve"> + <value>coolingPower</value> + </data> + <data name="Conditioning_Entry" xml:space="preserve"> + <value>Entry</value> + </data> + <data name="PowerMap_Gear" xml:space="preserve"> + <value>gear</value> + </data> + <data name="DragCurve_Gear" xml:space="preserve"> + <value>gear</value> + </data> + <data name="Component_ADC" xml:space="preserve"> + <value>ADC</value> + </data> + <data name="Component_BatterySystem" xml:space="preserve"> + <value>BatterySystem</value> + </data> + <data name="Component_CapacitorSystem" xml:space="preserve"> + <value>CapacitorSystem</value> + </data> + <data name="Component_ElectricMachineSystem" xml:space="preserve"> + <value>ElectricMachineSystem</value> + </data> + <data name="Component_IEPC" xml:space="preserve"> + <value>IEPC</value> + </data> </root> \ No newline at end of file diff --git a/VectoCommon/VectoCommon/Utils/Validation.cs b/VectoCommon/VectoCommon/Utils/Validation.cs index 459464c82f3e244205c5aa11c0231682ccc1ce05..8367b50e54da9e7245ee66fa022049afac723ec6 100644 --- a/VectoCommon/VectoCommon/Utils/Validation.cs +++ b/VectoCommon/VectoCommon/Utils/Validation.cs @@ -114,19 +114,31 @@ namespace TUGraz.VectoCommon.Utils const BindingFlags flags = BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.FlattenHierarchy; - var prop = obj.GetProperty(m.Name, flags); - if (prop != null) { - attributes = prop.GetCustomAttributes(typeof(T)) - .Cast<T>() - .Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>)); + + if (m.MemberType == MemberTypes.Property) { + PropertyInfo prop = m as PropertyInfo ?? obj.GetProperty(m.Name, flags); + //var prop = obj.GetProperty(m.Name, flags); + if (prop != null) + { + //if (m is PropertyInfo prop) { + attributes = prop.GetCustomAttributes(typeof(T)) + .Cast<T>() + .Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>)); + } } - var field = obj.GetField(m.Name, flags); - if (field != null) { - attributes = - attributes.Concat( - field.GetCustomAttributes(typeof(T)).Cast<T>().Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>))); + if (m.MemberType == MemberTypes.Field) { + FieldInfo field = m as FieldInfo ?? obj.GetField(m.Name, flags); + //var field = obj.GetField(m.Name, flags); + if (field != null) + { + //if (m is FieldInfo field) { + attributes = + attributes.Concat( + field.GetCustomAttributes(typeof(T)).Cast<T>().Concat(obj.GetInterfaces().SelectMany(m.GetAttributes<T>))).Distinct(); + } } + return attributes; } diff --git a/VectoCommon/VectoCommon/VectoCommon.csproj b/VectoCommon/VectoCommon/VectoCommon.csproj index 25531274f2168cd087db47f2f1ab439d7146e1d7..787d2753bf242dcf3598882d2cad508ecf612ad3 100644 --- a/VectoCommon/VectoCommon/VectoCommon.csproj +++ b/VectoCommon/VectoCommon/VectoCommon.csproj @@ -149,6 +149,7 @@ <Compile Include="Utils\VectoMath.cs" /> </ItemGroup> <ItemGroup> + <None Include="InputData\BusInputData.cd" /> <None Include="packages.config" /> <None Include="Properties\Version.tt"> <Generator>TextTemplatingFileGenerator</Generator> diff --git a/VectoCommon/VectoHashing/Properties/Version.cs b/VectoCommon/VectoHashing/Properties/Version.cs index 76142d992be960affef95e39393e5efcd9f399af..4f3fd2a3bf40edec40cde6f2873c753f0c7559f4 100644 --- a/VectoCommon/VectoHashing/Properties/Version.cs +++ b/VectoCommon/VectoHashing/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("1.2.0.2171")] -[assembly: AssemblyFileVersion("1.2.0.2171")] +[assembly: AssemblyVersion("1.2.0.2527")] +[assembly: AssemblyFileVersion("1.2.0.2527")] diff --git a/VectoCommon/VectoHashing/VectoHash.cs b/VectoCommon/VectoHashing/VectoHash.cs index f7e9cbaf24a0c5bf918d264651141ec90e61e144..743eb743896abae20140ac657423dc16f507ec5e 100644 --- a/VectoCommon/VectoHashing/VectoHash.cs +++ b/VectoCommon/VectoHashing/VectoHash.cs @@ -292,8 +292,8 @@ namespace TUGraz.VectoHashing if (Document.DocumentElement.LocalName.Equals("VectoOutputPrimaryVehicle")) { return VectoComponents.VectoPrimaryVehicleInformation; } - if (Document.DocumentElement.LocalName.Equals(XMLNames.ManufacturingStage)) { - return VectoComponents.VectoManufacturingStage; + if (Document.DocumentElement.LocalName.Equals(XMLNames.ManufacturingStep)) { + return VectoComponents.VectoManufacturingStep; } throw new Exception("unknown document structure! neither input data nor output data format"); } diff --git a/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/final.VIF_Report_5.xml b/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/final.VIF_Report_5.xml index 22abd19676c4ad6431007b2975b21b056211ab81..5a89f405dae41ad73da95c3142075e0998a539d2 100644 --- a/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/final.VIF_Report_5.xml +++ b/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/final.VIF_Report_5.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep 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:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:v2.10="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> <Data id="VEH-88dcf76d37a64b5eaf70" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -571,9 +572,9 @@ </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-bdbd4d15937b460bac07"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-bdbd4d15937b460bac07"> + <HashPreviousStep> <di:Reference URI="#VEH-88dcf76d37a64b5eaf70"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -582,34 +583,38 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>4MFxDdYDnYyRrUdyIPFhEYwbyqqJl3MlYtXMaB/RQis=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-75e3023cd8384f3c9895"> - <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-07T22:00:00Z</v2.8:Date> - <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> - </Vehicle> + </HashPreviousStep> + <vif:Vehicle xsi:type="v2.10:Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-75e3023cd8384f3c9895" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <Manufacturer>IVT</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Positionlights>false</Positionlights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> <Date>2021-06-08T19:16:37.2732909Z</Date> @@ -622,34 +627,34 @@ <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>Gf8zuIFbnoV0Uu7vMHJNxr7tiV12rS/TdX0+WzDS8z8=</di:DigestValue> + <di:DigestValue>ZwduOHBrWk8hYhDvEzXNmjr/nWhhdx98Gl7a2qhYmFk=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-853f372b8a2f4acaa8d2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-853f372b8a2f4acaa8d2"> + <HashPreviousStep> <di:Reference URI="#MST-bdbd4d15937b460bac07"> <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>Gf8zuIFbnoV0Uu7vMHJNxr7tiV12rS/TdX0+WzDS8z8=</di:DigestValue> + <di:DigestValue>ZwduOHBrWk8hYhDvEzXNmjr/nWhhdx98Gl7a2qhYmFk=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-3a0b04069aee4b10b8dd"> - <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-07T22: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> + </HashPreviousStep> + <vif:Vehicle xsi:type="v2.10:Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-3a0b04069aee4b10b8dd" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <Manufacturer>TUG</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>250</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -670,9 +675,9 @@ <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> </v2.0:Signature> - </v2.8:AirDrag> - </v2.8:Components> - </Vehicle> + </AirDrag> + </Components> + </vif:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> <Date>2021-06-08T19:17:10.0533609Z</Date> @@ -685,47 +690,47 @@ <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>8SinxaBKYPZvF7ntzAqO1EdTE/QiWp+yr8/e0wUO/DA=</di:DigestValue> + <di:DigestValue>uNSPX5uJ1VVA/5aaibqX/S+yeMthh5Fbq73kCNi8b5E=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-4e4b3629643e459d9c2c"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-4e4b3629643e459d9c2c"> + <HashPreviousStep> <di:Reference URI="#MST-853f372b8a2f4acaa8d2"> <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>8SinxaBKYPZvF7ntzAqO1EdTE/QiWp+yr8/e0wUO/DA=</di:DigestValue> + <di:DigestValue>uNSPX5uJ1VVA/5aaibqX/S+yeMthh5Fbq73kCNi8b5E=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-5a6a0d735e1d4eb88b87"> - <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-07T22: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:AirdragModifiedMultistage>true</v2.8:AirdragModifiedMultistage> - <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> + </HashPreviousStep> + <vif:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-5a6a0d735e1d4eb88b87" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>10680</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistage>true</AirdragModifiedMultistage> + <ClassBus>II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <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="Components_Conventional_CompletedBusType" > + <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -746,33 +751,37 @@ <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> - </Vehicle> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>not applicable</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>15000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> <Date>2021-06-08T19:17:34.7076217Z</Date> @@ -785,31 +794,31 @@ <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>tFVU88I1bcALZmtSUnTM5c9ue8L1NstlboChNj2NBOc=</di:DigestValue> + <di:DigestValue>HLykOvb1YHr6fg3CpZLY9TuJhyT6xiRO8WhjdWITnBk=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="5"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-67c850fef6ac40c8be1f"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="5"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-67c850fef6ac40c8be1f"> + <HashPreviousStep> <di:Reference URI="#MST-4e4b3629643e459d9c2c"> <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>tFVU88I1bcALZmtSUnTM5c9ue8L1NstlboChNj2NBOc=</di:DigestValue> + <di:DigestValue>HLykOvb1YHr6fg3CpZLY9TuJhyT6xiRO8WhjdWITnBk=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-2d3ccda8f72345568864"> - <v2.8:Manufacturer>Somebody</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Address</v2.8:ManufacturerAddress> - <v2.8:VIN>VIN-1234</v2.8:VIN> - <v2.8:Date>2021-06-07T22:00:00Z</v2.8:Date> - <v2.8:AirdragModifiedMultistage>true</v2.8:AirdragModifiedMultistage> - <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> + </HashPreviousStep> + <vif:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-2d3ccda8f72345568864" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2"> + <Manufacturer>Somebody</Manufacturer> + <ManufacturerAddress>Address</ManufacturerAddress> + <VIN>VIN-1234</VIN> + <Date>2021-06-07T22:00:00Z</Date> + <AirdragModifiedMultistage>true</AirdragModifiedMultistage> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> <v2.0:Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" 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> @@ -830,9 +839,9 @@ <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> </v2.0:Signature> - </v2.8:AirDrag> - </v2.8:Components> - </Vehicle> + </AirDrag> + </Components> + </vif:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> <Date>2021-06-08T19:18:29.4586936Z</Date> @@ -845,8 +854,8 @@ <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>UgLuCebJJ9KWYO9tDVVuLjlGRvC5qfsZudmyZQWJiic=</di:DigestValue> + <di:DigestValue>XaMrkmy7yiWYS1BSOtq5UulfM+7c70oCyWi4oasX8Pw=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> \ No newline at end of file + </ManufacturingStep> +</VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/vecto_multistage_primary_vehicle_stage_2_3_group41.xml b/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/vecto_multistage_primary_vehicle_stage_2_3_group41.xml index 25f603ea99e35ce43fd01a44b2bf8917aa71a3d8..162dae3689fd9f8892ec59e3c8f5f2b391c4047d 100644 --- a/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/vecto_multistage_primary_vehicle_stage_2_3_group41.xml +++ b/VectoCommon/VectoHashingTest/Testdata/XML/Multistage/vecto_multistage_primary_vehicle_stage_2_3_group41.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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" @@ -572,9 +572,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -583,7 +583,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>VTu71FU/Sijqk2Z8sScROGolObZK/UNTycf4K2CAgEs=</di:DigestValue> </di:Reference> - </HashPreviousStage> + </HashPreviousStep> <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> @@ -606,10 +606,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>Muaefd8RS+EjtmMVbSejxbSy5Tgcpm/WqnoLk+YH8ho=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#MSTG-1"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -618,7 +618,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>Muaefd8RS+EjtmMVbSejxbSy5Tgcpm/WqnoLk+YH8ho=</di:DigestValue> </di:Reference> - </HashPreviousStage> + </HashPreviousStep> <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> <v2.8:ManufacturerAddress></v2.8:ManufacturerAddress> @@ -641,5 +641,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>l7Z22F1bPMaAD4+0WNY+cahbjDKE80gxYv6K91YTMcU=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCommon/VectoHashingTest/VectoHashTest.cs b/VectoCommon/VectoHashingTest/VectoHashTest.cs index 3609921c551eeb4a2dd52b52707941a2df7db10b..cec97578d8715bd85b94f05848431b44cb012280 100644 --- a/VectoCommon/VectoHashingTest/VectoHashTest.cs +++ b/VectoCommon/VectoHashingTest/VectoHashTest.cs @@ -569,9 +569,9 @@ namespace VectoHashingTest { var h = VectoHash.Load(file); - var primaryHash = h.ComputeHash(VectoComponents.VectoManufacturingStage, 0); + var primaryHash = h.ComputeHash(VectoComponents.VectoManufacturingStep, 0); - Assert.AreEqual("Muaefd8RS+EjtmMVbSejxbSy5Tgcpm/WqnoLk+YH8ho=", primaryHash); + Assert.AreEqual("Ce88HeMkWznnWAYoilvoYNbzrALiWyImvTVsW9Myno0=", primaryHash); } @@ -580,9 +580,9 @@ namespace VectoHashingTest { var h = VectoHash.Load(file); - var primaryHash = h.ComputeHash(VectoComponents.VectoManufacturingStage, 1); + var primaryHash = h.ComputeHash(VectoComponents.VectoManufacturingStep, 1); - Assert.AreEqual("l7Z22F1bPMaAD4+0WNY+cahbjDKE80gxYv6K91YTMcU=", primaryHash); + Assert.AreEqual("ErE9njkgNIeg+SaPkbvpLfBQSTmw/WTDvmirEmzll2s=", primaryHash); } @@ -591,7 +591,7 @@ namespace VectoHashingTest { var h = VectoHash.Load(file); - var primaryHash = h.ReadHash(VectoComponents.VectoManufacturingStage, 0); + var primaryHash = h.ReadHash(VectoComponents.VectoManufacturingStep, 0); Assert.AreEqual("Muaefd8RS+EjtmMVbSejxbSy5Tgcpm/WqnoLk+YH8ho=", primaryHash); } @@ -602,7 +602,7 @@ namespace VectoHashingTest { var h = VectoHash.Load(file); - var primaryHash = h.ReadHash(VectoComponents.VectoManufacturingStage, 1); + var primaryHash = h.ReadHash(VectoComponents.VectoManufacturingStep, 1); Assert.AreEqual("l7Z22F1bPMaAD4+0WNY+cahbjDKE80gxYv6K91YTMcU=", primaryHash); } @@ -618,23 +618,23 @@ namespace VectoHashingTest Assert.AreEqual(hashReadPrimary, hashCalcPrimary); - var hashCalcInterim1 = h.ComputeHash(VectoComponents.VectoManufacturingStage, 0); - var hashReadInterim1 = h.ReadHash(VectoComponents.VectoManufacturingStage, 0); + var hashCalcInterim1 = h.ComputeHash(VectoComponents.VectoManufacturingStep, 0); + var hashReadInterim1 = h.ReadHash(VectoComponents.VectoManufacturingStep, 0); Assert.AreEqual(hashReadInterim1, hashCalcInterim1); - var hashCalcInterim2 = h.ComputeHash(VectoComponents.VectoManufacturingStage, 1); - var hashReadInterim2 = h.ReadHash(VectoComponents.VectoManufacturingStage, 1); + var hashCalcInterim2 = h.ComputeHash(VectoComponents.VectoManufacturingStep, 1); + var hashReadInterim2 = h.ReadHash(VectoComponents.VectoManufacturingStep, 1); Assert.AreEqual(hashReadInterim2, hashCalcInterim2); - var hashCalcInterim3 = h.ComputeHash(VectoComponents.VectoManufacturingStage, 2); - var hashReadInterim3 = h.ReadHash(VectoComponents.VectoManufacturingStage, 2); + var hashCalcInterim3 = h.ComputeHash(VectoComponents.VectoManufacturingStep, 2); + var hashReadInterim3 = h.ReadHash(VectoComponents.VectoManufacturingStep, 2); Assert.AreEqual(hashReadInterim3, hashCalcInterim3); - var hashCalcInterim4 = h.ComputeHash(VectoComponents.VectoManufacturingStage, 3); - var hashReadInterim4 = h.ReadHash(VectoComponents.VectoManufacturingStage, 3); + var hashCalcInterim4 = h.ComputeHash(VectoComponents.VectoManufacturingStep, 3); + var hashReadInterim4 = h.ReadHash(VectoComponents.VectoManufacturingStep, 3); Assert.AreEqual(hashReadInterim4, hashCalcInterim4); @@ -647,13 +647,13 @@ namespace VectoHashingTest Assert.AreEqual(hashReadPrimary, inputDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle.VehicleSignatureHash.DigestValue); - Assert.AreEqual(hashReadPrimary, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[0].HashPreviousStage.DigestValue); + Assert.AreEqual(hashReadPrimary, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[0].HashPreviousStep.DigestValue); - Assert.AreEqual(hashReadInterim1, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[1].HashPreviousStage.DigestValue); + Assert.AreEqual(hashReadInterim1, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[1].HashPreviousStep.DigestValue); - Assert.AreEqual(hashReadInterim2, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[2].HashPreviousStage.DigestValue); + Assert.AreEqual(hashReadInterim2, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[2].HashPreviousStep.DigestValue); - Assert.AreEqual(hashReadInterim3, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[3].HashPreviousStage.DigestValue); + Assert.AreEqual(hashReadInterim3, inputDataProvider.MultistageJobInputData.JobInputData.ManufacturingStages[3].HashPreviousStep.DigestValue); } } diff --git a/VectoConsole/Program.cs b/VectoConsole/Program.cs index e14008517b96205a4d3f4737d9c7cc8fe6877051..435e2835c8fd4aa2f40a78e2232c5a92ea418d40 100644 --- a/VectoConsole/Program.cs +++ b/VectoConsole/Program.cs @@ -49,7 +49,9 @@ using TUGraz.VectoCore; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; @@ -105,6 +107,7 @@ Examples: private static int Main(string[] args) { + _kernel = new StandardKernel(new VectoNinjectModule()); try { // on -h display help and terminate. @@ -227,12 +230,12 @@ Examples: } fileWriter = new FileOutputWriter(file); - var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) { - ModalResults1Hz = args.Contains("-1Hz"), - WriteModalResults = args.Contains("-mod"), - ActualModalData = args.Contains("-act"), - Validate = !args.Contains("-nv"), - }; + var runsFactory = _kernel.Get<ISimulatorFactoryFactory>().Factory(mode, dataProvider, fileWriter); + //var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = args.Contains("-1Hz"); + runsFactory.WriteModalResults = args.Contains("-mod"); + runsFactory.ActualModalData = args.Contains("-act"); + runsFactory.Validate = !args.Contains("-nv"); _jobContainer.AddRuns(runsFactory); } @@ -359,7 +362,7 @@ Examples: WriteLine($@"VectoCore: {VectoSimulationCore.VersionNumber}"); } - private static void PrintProgress(Dictionary<int, JobContainer.ProgressEntry> progessData, + private static void PrintProgress(IDictionary<int, JobContainer.ProgressEntry> progessData, bool showTiming = true, bool force = false) { try { diff --git a/VectoConsole/Properties/Version.cs b/VectoConsole/Properties/Version.cs index 8574fca21af749c2bf12cdab99c101b14404cca6..9066173be5f704acd1d2a0526007a96a2853fdfa 100644 --- a/VectoConsole/Properties/Version.cs +++ b/VectoConsole/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("0.7.3.2171")] -[assembly: AssemblyFileVersion("0.7.3.2171")] \ No newline at end of file +[assembly: AssemblyVersion("0.7.6.2527")] +[assembly: AssemblyFileVersion("0.7.6.2527")] \ No newline at end of file diff --git a/VectoCore/VectoCore/Configuration/Constants.cs b/VectoCore/VectoCore/Configuration/Constants.cs index 5dca2e72d78652308bac51eb4077ff0443e5d73c..f704edb773ff567b4066696aecb160a93fe1c676 100644 --- a/VectoCore/VectoCore/Configuration/Constants.cs +++ b/VectoCore/VectoCore/Configuration/Constants.cs @@ -252,6 +252,8 @@ namespace TUGraz.VectoCore.Configuration public const string DriverAccelerationCurve = ".vacc"; public const string HybridStrategyParameters = ".vhctl"; + + public const string Json = ".json"; } public static class SimulationSettings diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs index 41fa5ce3b234e2a74c548c10422bf7dbbf1bcbb8..7fa174a6300370c58107d40c1b742872d88a5042 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONBattery.cs @@ -26,11 +26,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public DigestData DigestValue => null; - public double MinSOC => Body.GetEx<double>("SOC_min") / 100.0; + public double? MinSOC => Body.GetEx<double>("SOC_min") / 100.0; - public double MaxSOC => Body.GetEx<double>("SOC_max") / 100.0; + public double? MaxSOC => Body.GetEx<double>("SOC_max") / 100.0; + public BatteryType BatteryType { get; } AmpereSecond IBatteryPackDeclarationInputData.Capacity => Body.GetEx<double>("Capacity").SI(Unit.SI.Ampere.Hour).Cast<AmpereSecond>(); + public bool ConnectorsSubsystemsIncluded { get; } + public bool JunctionboxIncluded { get; } + public Kelvin TestingTemperature => null; Farad ISuperCapDeclarationInputData.Capacity => Body.GetEx<double>("Capacity").SI<Farad>(); diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs index a6f6cd859655c1093fdfe4cd88c708c22f4c738c..6fd637d21c13dfa1ea909c0d20a1b793f11ff6f0 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONComponentInputData.cs @@ -217,6 +217,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON }); } } + public IIEPCDeclarationInputData IEPC => null; + IElectricStorageSystemDeclarationInputData IVehicleComponentsDeclaration.ElectricStorage => new JSONElectricStorageSystemEngineeringInputData(new List<IElectricStorageEngineeringInputData>() { new JSONElectricStorageEngineeringInputData { @@ -235,13 +237,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public Meter Height => VehicleData.Height; - public TableData ElectricMotorTorqueLimits => Vehicle.ElectricMotorTorqueLimits; - - public TableData MaxPropulsionTorque => Vehicle.ElectricMotorTorqueLimits; - public bool? ATEcoRollReleaseLockupClutch => VehicleData.ADAS.ATEcoRollReleaseLockupClutch; public XmlNode XMLSource => null; + public string VehicleTypeApprovalNumber { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } public Meter Length => VehicleData.Length; @@ -252,7 +254,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public ConsumerTechnology? DoorDriveTechnology => VehicleData.DoorDriveTechnology; public VehicleDeclarationType VehicleDeclarationType { get; } + + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => Vehicle.ElectricMotorTorqueLimits; + public TableData BoostingLimitations => Vehicle.BoostingLimitations; + IVehicleComponentsEngineering IVehicleEngineeringInputData.Components => this; XmlNode IVehicleDeclarationInputData.XMLSource => null; @@ -314,7 +320,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public bool? SleeperCab => DeclarationData.Vehicle.SleeperCabDefault; - public bool? AirdragModifiedMultistage { get; } + public bool? AirdragModifiedMultistep { get; } public TankSystem? TankSystem => DeclarationData.Vehicle.TankSystemDefault; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs index 111a8cc108be9dbbecb36f869b076438cb521023..9cf63d391c083355aef1e582b2f68bcb3f3a5fbc 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONElectricMotor.cs @@ -7,11 +7,53 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.JSON { + public class JSONElectricMotorV5 : JSONElectricMotorV4 + { + public JSONElectricMotorV5(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { } + + #region Overrides of JSONElectricMotorV1 + + + protected override IList<IElectricMotorVoltageLevel> ReadVoltageLevels() + { + return Body["VoltageLevels"].Select(entry => new ElectricMotorVoltageLevel() { + VoltageLevel = entry.GetEx<double>("Voltage").SI<Volt>(), + ContinuousTorque = entry.GetEx<double>("ContinuousTorque").SI<NewtonMeter>(), + ContinuousTorqueSpeed = entry.GetEx<double>("ContinuousTorqueSpeed").RPMtoRad(), + OverloadTorque = entry.GetEx<double>("OverloadTorque").SI<NewtonMeter>(), + OverloadTestSpeed = entry.GetEx<double>("OverloadTorqueSpeed").RPMtoRad(), + OverloadTime = entry.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(entry.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + }, + // DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + FullLoadCurve = ReadTableData(entry.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") + }).Cast<IElectricMotorVoltageLevel>().ToList(); + } + + #endregion + } + + // ----------------------------- + + public class JSONElectricMotorPowerMap : IElectricMotorPowerMap + { + #region Implementation of IElectricMotorPowerMap + + public int Gear { get; set; } + public TableData PowerMap { get; set; } + + #endregion + } public class JSONElectricMotorV4 : JSONElectricMotorV3 { @@ -27,12 +69,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region Overrides of JSONElectricMotorV1 + protected override IList<IElectricMotorVoltageLevel> ReadVoltageLevels() { return Body["VoltageLevels"].Select(entry => new ElectricMotorVoltageLevel() { VoltageLevel = entry.GetEx<double>("Voltage").SI<Volt>(), - EfficiencyMap = ReadTableData(entry.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - //DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + ContinuousTorque = Body.GetEx<double>("ContinuousTorque").SI<NewtonMeter>(), + ContinuousTorqueSpeed = Body.GetEx<double>("ContinuousTorqueSpeed").RPMtoRad(), + OverloadTorque = Body.GetEx<double>("OverloadTorque").SI<NewtonMeter>(), + OverloadTestSpeed = Body.GetEx<double>("OverloadTorqueSpeed").RPMtoRad(), + OverloadTime = Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(entry.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + }, + // DragCurve = ReadTableData(entry.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(entry.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }).Cast<IElectricMotorVoltageLevel>().ToList(); } @@ -43,17 +96,49 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #endregion } + // ----------------------------- + public class JSONElectricMotorV2 : JSONElectricMotorV1 { public JSONElectricMotorV2(JObject data, string filename, bool tolerateMissing = false) : base(data, filename, tolerateMissing) { } - public override NewtonMeter ContinuousTorque => Body.GetEx<double>("ContinuousTorque").SI<NewtonMeter>(); - - public override PerSecond ContinuousTorqueSpeed => Body.GetEx<double>("ContinuousTorqueSpeed").RPMtoRad(); - - public override NewtonMeter OverloadTorque => Body.GetEx<double>("OverloadTorque").SI<NewtonMeter>(); + protected override IList<IElectricMotorVoltageLevel> ReadVoltageLevels() + { + return new List<IElectricMotorVoltageLevel>() { + new ElectricMotorVoltageLevel() { + VoltageLevel = 0.SI<Volt>(), + ContinuousTorque = Body.GetEx<double>("ContinuousTorque").SI<NewtonMeter>(), + ContinuousTorqueSpeed = Body.GetEx<double>("ContinuousTorqueSpeed").RPMtoRad(), + OverloadTorque = Body.GetEx<double>("OverloadTorque").SI<NewtonMeter>(), + OverloadTestSpeed = Body.GetEx<double>("OverloadTorqueSpeed").RPMtoRad(), + OverloadTime = Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + },// DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") + }, + new ElectricMotorVoltageLevel() { + VoltageLevel = 1e9.SI<Volt>(), + ContinuousTorque = Body.GetEx<double>("ContinuousTorque").SI<NewtonMeter>(), + ContinuousTorqueSpeed = Body.GetEx<double>("ContinuousTorqueSpeed").RPMtoRad(), + OverloadTorque = Body.GetEx<double>("OverloadTorque").SI<NewtonMeter>(), + OverloadTestSpeed = Body.GetEx<double>("OverloadTorqueSpeed").RPMtoRad(), + OverloadTime = Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + }, + // DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") + }, + }; + } - public override PerSecond OverloadTestSpeed => Body.GetEx<double>("OverloadTorqueSpeed").RPMtoRad(); } @@ -76,14 +161,34 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return new List<IElectricMotorVoltageLevel>() { new ElectricMotorVoltageLevel() { VoltageLevel = 0.SI<Volt>(), - EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - //DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + ContinuousTorque = (Body.GetValueOrDefault<double>("ContinuousPower")?.SI<Watt>() ?? 1e12.SI<Watt>()) / (Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 1.SI<PerSecond>()), + ContinuousTorqueSpeed = Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 0.RPMtoRad(), + OverloadTorque = null, + OverloadTestSpeed = null, + OverloadTime = Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + }, + // DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }, new ElectricMotorVoltageLevel() { VoltageLevel = 1e9.SI<Volt>(), - EfficiencyMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"), - //DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), + ContinuousTorque = (Body.GetValueOrDefault<double>("ContinuousPower")?.SI<Watt>() ?? 1e12.SI<Watt>()) / (Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 1.SI<PerSecond>()), + ContinuousTorqueSpeed = Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 0.RPMtoRad(), + OverloadTorque = null, + OverloadTestSpeed = null, + OverloadTime = Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(), + PowerMap = new List<IElectricMotorPowerMap>() { + new JSONElectricMotorPowerMap() { + Gear = 0, + PowerMap = ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map") + } + }, + // DragCurve = ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"), FullLoadCurve = ReadTableData(Body.GetEx<string>("FullLoadCurve"), "ElectricMotor FullLoadCurve") }, }; @@ -95,22 +200,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual TableData DragCurve => ReadTableData(Body.GetEx<string>("DragCurve"), "ElectricMotor DragCurve"); - //public virtual TableData EfficiencyMap => ReadTableData(Body.GetEx<string>("EfficiencyMap"), "ElectricMotor Map"); + public virtual TableData Conditioning => + ReadTableData(Body.GetEx<string>("Conditioning"), "ElectricMotor Conditioning", false); + + public ElectricMachineType ElectricMachineType { get; } + public Watt R85RatedPower => null; public virtual KilogramSquareMeter Inertia => Body.GetEx<double>("Inertia").SI<KilogramSquareMeter>(); //public virtual Joule OverloadBuffer => Body.GetValueOrDefault<double>("ThermalOverloadBuffer")?.SI(Unit.SI.Mega.Joule).Cast<Joule>() ?? 1e18.SI<Joule>(); + public string IHPCType => null; public virtual double OverloadRecoveryFactor => Body.GetValueOrDefault<double>("ThermalOverloadRecoveryFactor") ?? 0.9; - public virtual NewtonMeter ContinuousTorque => (Body.GetValueOrDefault<double>("ContinuousPower")?.SI<Watt>() ?? 1e12.SI<Watt>()) / (Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 1.SI<PerSecond>()); - - public virtual PerSecond ContinuousTorqueSpeed => Body.GetValueOrDefault<double>("ContinuousPowerSpeed")?.RPMtoRad() ?? 0.RPMtoRad(); - - public virtual NewtonMeter OverloadTorque => null; - - public virtual PerSecond OverloadTestSpeed => null; - - public virtual Second OverloadTime => Body.GetValueOrDefault<double>("OverloadTime")?.SI<Second>() ?? 0.SI<Second>(); + public bool DcDcConverterIncluded { get; } } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs index ca85ead7b68a461a9f879513e333f1b921acc0e8..979c23b4d93a9bbb43fae8a487923020fb68d36a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputData.cs @@ -1107,21 +1107,29 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } - public class JSONInputDataV10_PrimaryAndStageInputBus : JSONFile, IInputDataProvider + public class JSONInputDataV10_PrimaryAndStageInputBus : JSONFile, IInputDataProvider, IMultistagePrimaryAndStageInputDataProvider { private readonly IXMLInputDataReader _xmlInputReader; - private string _primaryVehicleInputDataPath; - private IVehicleDeclarationInputData _primaryVehicleInputData; - public IVehicleDeclarationInputData PrimaryVehicle => - _primaryVehicleInputData ?? (_primaryVehicleInputData = - _xmlInputReader.CreateDeclaration(_primaryVehicleInputDataPath).JobInputData.Vehicle); - - private string _stageInputDataPath; + private readonly string _primaryVehicleInputDataPath; + private readonly string _stageInputDataPath; private IVehicleDeclarationInputData _stageInputData; + private IDeclarationInputDataProvider _primaryVehicle; + + public string PrimaryVehicleInputDataPath => _primaryVehicleInputDataPath; + public string StageInputDataPath => _stageInputDataPath; + public IDeclarationInputDataProvider PrimaryVehicle => + _primaryVehicle ?? (_primaryVehicle = + _xmlInputReader.CreateDeclaration(_primaryVehicleInputDataPath)); + + public IVehicleDeclarationInputData StageInputData => + _stageInputDataPath != null + ? + _stageInputData ?? (_stageInputData = + _xmlInputReader.CreateDeclaration(_stageInputDataPath).JobInputData.Vehicle) + : + null; + - public IVehicleDeclarationInputData StageInputData => - _stageInputData ?? (_stageInputData = - _xmlInputReader.CreateDeclaration(_stageInputDataPath).JobInputData.Vehicle); private bool? _completed; @@ -1140,7 +1148,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON _primaryVehicleInputDataPath = Body.GetEx<string>(JsonKeys.PrimaryVehicle); - _stageInputDataPath = Body.GetEx<string>(JsonKeys.InterimStage); + _primaryVehicleInputDataPath = PathHelper.GetAbsolutePath(filename, _primaryVehicleInputDataPath); + _stageInputDataPath = Body.GetEx<string>(JsonKeys.InterimStep); + _stageInputDataPath = PathHelper.GetAbsolutePath(filename, _stageInputDataPath); _completed = Body.GetValueOrDefault<bool>(JsonKeys.Completed); } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs index 08573d70a716091588bfaf761a7373bb440cde39..7977d7b8b17fc5598490b29548883045ed9d935c 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONInputDataFactory.cs @@ -216,6 +216,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return new JSONElectricMotorV3(json, filename, tolerateMissing); case 4: return new JSONElectricMotorV4(json, filename, tolerateMissing); + case 5: + return new JSONElectricMotorV5(json, filename, tolerateMissing); default: throw new VectoException("ElectricMotor-File: Unsupported FileVersion. Got {0}", version); } diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs index 81235ad3e9c7742b0346315ec42a3b35702a33c9..27a5c7422897a0e9c49b1441e21e365431837ae4 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONSubComponent.cs @@ -354,6 +354,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } } + #endregion } @@ -474,6 +475,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } } + public bool ESSupplyFromHEVREESS { get; } + public IList<IBusAuxElectricStorageDeclarationInputData> ElectricStorage { get { @@ -535,10 +538,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON #region Implementation of IHVACBusAuxiliariesDeclarationData public virtual BusHVACSystemConfiguration? SystemConfiguration { get; set; } - public virtual HeatPumpType? HeatPumpTypeDriverCompartment => null; - public virtual HeatPumpMode? HeatPumpModeDriverCompartment => null; + public virtual HeatPumpType? HeatPumpTypeCoolingDriverCompartment => null; + + public virtual HeatPumpType? HeatPumpTypeHeatingDriverCompartment => null; + + public virtual HeatPumpType? HeatPumpTypeCoolingPassengerCompartment => null; + public virtual HeatPumpType? HeatPumpTypeHeatingPassengerCompartment => null; - public virtual IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments => null; public virtual Watt AuxHeaterPower => null; public virtual bool? DoubleGlazing => false; public virtual bool HeatPump => false; diff --git a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs index 9922998637a82a99273c158c91f524e15e3f1bd7..d34603e5d125066ad7be1861f811bc63d45d820d 100644 --- a/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/JSON/JSONVehicleData.cs @@ -151,13 +151,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON return new JSONElectricStorageSystemEngineeringInputData(entries); } - public override TableData ElectricMotorTorqueLimits => + //public override Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => + // throw new NotImplementedException(); + public override Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => Body["EMTorqueLimits"] == null ? null - : ReadTableData(Path.Combine(BasePath, Body.GetEx<string>("EMTorqueLimits")), - "ElectricMotorTorqueLimits"); + : new Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>>() { + { + GetElectricMachines().Entries.First().Position, + new List<Tuple<Volt, TableData>>() { + Tuple.Create((Volt)null, ReadTableData( + Path.Combine(BasePath, Body.GetEx<string>("EMTorqueLimits")), + "ElectricMotorTorqueLimits")) + } + } + }; - public override TableData MaxPropulsionTorque => + public override TableData BoostingLimitations => Body["MaxPropulsionTorque"] == null ? null : ReadTableData(Path.Combine(BasePath, Body.GetEx<string>("MaxPropulsionTorque")), @@ -283,12 +293,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual bool Articulated => false; public virtual Meter Height => Body["VehicleHeight"] == null ? null : Body.GetEx<double>("VehicleHeight").SI<Meter>(); - - public virtual TableData ElectricMotorTorqueLimits => null; - - public virtual TableData MaxPropulsionTorque => null; - - + + public virtual Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => null; + + public virtual TableData BoostingLimitations => null; + public virtual Meter Length => null; public virtual Meter Width => null; @@ -297,10 +306,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual ConsumerTechnology? DoorDriveTechnology => ConsumerTechnology.Unknown; public virtual VehicleDeclarationType VehicleDeclarationType { get; } - IVehicleComponentsEngineering IVehicleEngineeringInputData.Components => this; XmlNode IVehicleDeclarationInputData.XMLSource => null; + public virtual string VehicleTypeApprovalNumber { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } public GearshiftPosition PTO_DriveGear => Body["GearDuringPTODrive"] != null ? new GearshiftPosition(Body["GearDuringPTODrive"].Value<uint>()) : null; @@ -410,6 +422,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON } IElectricMachinesEngineeringInputData IVehicleComponentsEngineering.ElectricMachines => GetElectricMachines(); + public IIEPCDeclarationInputData IEPC => null; protected virtual IElectricMachinesEngineeringInputData GetElectricMachines() { @@ -428,7 +441,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.JSON public virtual bool? SleeperCab => DeclarationData.Vehicle.SleeperCabDefault; - public virtual bool? AirdragModifiedMultistage { get; } + public virtual bool? AirdragModifiedMultistep { get; } public virtual TankSystem? TankSystem => DeclarationData.Vehicle.TankSystemDefault; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs index c1f56eba06a93c8d8fff85d1246d42a0c1c6d800..1f3453cb4c4ac65f38d76c34e5726b6f1d5b9c66 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLAuxiliaryDeclarationDataProvider.cs @@ -93,17 +93,26 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider auxNode, vehicle) { } } + // ============================= - public class XMLAuxiliaryDeclarationDataProviderV23 : XMLAuxiliaryDeclarationDataProviderV10 + public class XMLAuxiliaryDeclarationDataProviderV24_Lorry : XMLAuxiliaryDeclarationDataProviderV20 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "AuxiliariesComponentDeclarationType"; + public new const string XSD_TYPE = "AUX_Component_Conventional_Lorry_Type"; + public const string XSD_HEV_P_TYPE = "AUX_Component_HEV-P_Lorry_Type"; + public const string XSD_HEV_S_TYPE = "AUX_Component_HEV-S_Lorry_Type"; + public const string XSD_PEV_E2_TYPE = "AUX_Component_PEV_Lorry_Type"; + public const string XSD_IEPC_TYPE = "AUX_Component_IEPC_Lorry_Type"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_HEV_P_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_P_TYPE); + public static readonly string QUALIFIED_XSD_HEV_S_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S_TYPE); + public static readonly string QUALIFIED_XSD_PEV_E2_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_PEV_E2_TYPE); + public static readonly string QUALIFIED_XSD_IEPC_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_IEPC_TYPE); - public XMLAuxiliaryDeclarationDataProviderV23(XmlNode auxNode, IXMLDeclarationVehicleData vehicle) : base( + public XMLAuxiliaryDeclarationDataProviderV24_Lorry(XmlNode auxNode, IXMLDeclarationVehicleData vehicle) : base( auxNode, vehicle) { } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs index 41a8b121a6ab2305593a38642e34e9f1d367a9e7..6b5e959ff9d6f3e1df59245b8019b385aa1a9963 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationADASDataProvider.cs @@ -100,39 +100,129 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationADASDataProviderV23 : XMLDeclarationADASDataProviderV21 + public class XMLDeclarationADASDataConventionalProviderV24 : XMLDeclarationADASDataProviderV21 + { + /* + * new field added in version 2.4 + */ + + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "ADAS_Conventional_Type"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationADASDataConventionalProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationADASDataProviderV10 + + public override bool? ATEcoRollReleaseLockupClutch => + ElementExists(XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch) + ? XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch)) + : (bool?)null; + + #endregion + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationADASDataHEVProviderV24 : XMLDeclarationADASDataProviderV21 { /* * new field added in version 2.3 */ - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "AdvancedDriverAssistantSystemsType"; + public new const string XSD_TYPE = "ADAS_HEV_Type"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationADASDataHEVProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationADASDataProviderV10 + + public override bool? ATEcoRollReleaseLockupClutch => null; + + public override EcoRollType EcoRoll => EcoRollType.WithEngineStop; + #endregion + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationADASDataPEVProviderV24 : XMLDeclarationADASDataProviderV21 + { + + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "ADAS_PEV_Type"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLDeclarationADASDataProviderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + public XMLDeclarationADASDataPEVProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } #region Overrides of XMLDeclarationADASDataProviderV10 - public override bool? ATEcoRollReleaseLockupClutch - { - get { - var node = GetNode(XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, required:false); - var busNode = GetNode(XMLNames.Bus_ADAS_APTEcoRollReleaseLockupClutch, required: false); - if (node == null && busNode == null) { - return null; - } - - var innerText = node == null ? busNode.InnerText : node.InnerText; - return XmlConvert.ToBoolean(innerText); - } - } + public override bool? ATEcoRollReleaseLockupClutch => null; + + public override EcoRollType EcoRoll => EcoRollType.None; + + public override bool EngineStopStart => false; #endregion protected override XNamespace SchemaNamespace => NAMESPACE_URI; } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationADASDataIEPCProviderV24 : XMLDeclarationADASDataProviderV21 + { + + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "ADAS_IEPC_Type"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationADASDataIEPCProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationADASDataProviderV10 + + public override bool? ATEcoRollReleaseLockupClutch => null; + + public override EcoRollType EcoRoll => EcoRollType.None; + + public override bool EngineStopStart => false; + + #endregion + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + } + + // --------------------------------------------------------------------------------------- + + + public static class ADASDataProviderExtensions + { + public static bool EcoRollWithEngineStop(this IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + return adas.EcoRoll == EcoRollType.WithEngineStop; + } + + public static bool? EcoRollWithOutEngineStop(this IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + return adas.EcoRoll == EcoRollType.WithoutEngineStop; + } + + } + } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAirdragDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAirdragDataProvider.cs index 64c48bc78944c78321a5c8d12a1e7b851d627337..3a45d6bb8c2fdb2cc814242572cd6a58046d50b4 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAirdragDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAirdragDataProvider.cs @@ -106,15 +106,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationAirdragDataProviderV28 : XMLDeclarationAirdragDataProviderV10 + public class XMLDeclarationAirdragDataProviderV24 : XMLDeclarationAirdragDataProviderV10 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; public new const string XSD_TYPE = "AirDragModifiedUseStandardValueType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLDeclarationAirdragDataProviderV28(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, + public XMLDeclarationAirdragDataProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } protected override XNamespace SchemaNamespace => NAMESPACE_URI; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs index 3613e72919411f6fae4a69ab8a386f45bf79eb63..96c07c2897d86aa8aefffc159820806ab0079357 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationAuxiliariesDataProvider.cs @@ -106,21 +106,28 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider vehicle, componentNode, sourceFile) { } } + // --------------------------------------------------------------------------------------- - public class XMLDeclarationAuxiliariesDataProviderV23 : XMLDeclarationAuxiliariesDataProviderV10 + + public class XMLDeclarationAuxiliariesDataProviderV24_Lorry: XMLDeclarationAuxiliariesDataProviderV20 { - public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "AuxiliariesDataDeclarationType"; + public new const string XSD_TYPE = "AUX_Conventional_LorryDataType"; + public const string XSD_HEV_P_TYPE = "AUX_HEV-P_LorryDataType"; + public const string XSD_HEV_S_TYPE = "AUX_HEV-S_LorryDataType"; + public const string XSD_PEV_TYPE = "AUX_PEV_LorryDataType"; + public const string XSD_IEPC_TYPE = "AUX_IEPC_LorryDataType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationAuxiliariesDataProviderV23( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( - vehicle, componentNode, sourceFile) - { } + public static readonly string QUALIFIED_XSD_HEV_P_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_P_TYPE); + public static readonly string QUALIFIED_XSD_HEV_S_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S_TYPE); + public static readonly string QUALIFIED_XSD_PEV_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_PEV_TYPE); + public static readonly string QUALIFIED_XSD_IEPC_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_IEPC_TYPE); + + public XMLDeclarationAuxiliariesDataProviderV24_Lorry( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } } - - // --------------------------------------------------------------------------------------- } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs index 999d4316004638823f1a45ff0ba980732626bd53..9cc9f3406cf956cc3d3864b47568988c59b886fa 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationBusAuxiliariesDataProvider.cs @@ -15,19 +15,14 @@ using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { - public class XMLDeclarationPrimaryBusAuxiliariesDataProviderV26 : AbstractXMLType, IXMLBusAuxiliariesDeclarationData, + public abstract class AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 : AbstractXMLType, IXMLBusAuxiliariesDeclarationData, IElectricSupplyDeclarationData, IPneumaticConsumersDeclarationData, IPneumaticSupplyDeclarationData, IHVACBusAuxiliariesDeclarationData { - public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public const string XSD_TYPE = "PrimaryVehicleAuxiliaryDataDeclarationType"; - - public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - - public XMLDeclarationPrimaryBusAuxiliariesDataProviderV26( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } + public AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24( + XmlNode componentNode) : base(componentNode) { } #region Implementation of IBusAuxiliariesDeclarationData @@ -85,6 +80,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } + public virtual bool ESSupplyFromHEVREESS => ElementExists("SupplyFromHEVPossible") + ? XmlConvert.ToBoolean(GetString("SupplyFromHEVPossible")) + : false; + public IList<IBusAuxElectricStorageDeclarationInputData> ElectricStorage { get @@ -183,11 +182,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #region Implementation of IHVACBusAuxiliariesDeclarationData public virtual BusHVACSystemConfiguration? SystemConfiguration => BusHVACSystemConfiguration.Unknown; - - public virtual HeatPumpType? HeatPumpTypeDriverCompartment => null; - public virtual HeatPumpMode? HeatPumpModeDriverCompartment => null; - - public virtual IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments => null; + public virtual HeatPumpType? HeatPumpTypeCoolingDriverCompartment => null; + public virtual HeatPumpType? HeatPumpTypeHeatingDriverCompartment => null; + public virtual HeatPumpType? HeatPumpTypeCoolingPassengerCompartment => null; + public virtual HeatPumpType? HeatPumpTypeHeatingPassengerCompartment => null; public virtual Watt AuxHeaterPower => 0.SI<Watt>(); @@ -218,99 +216,156 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider #endregion } - public class XMLDeclarationPrimaryBusAuxiliariesDataProviderV01 : XMLDeclarationPrimaryBusAuxiliariesDataProviderV26 + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusAuxiliariesConventionalDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 { - public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; + + public const string XSD_TYPE = "AUX_Conventional_PrimaryBusType"; + + public static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + + public XMLDeclarationPrimaryBusAuxiliariesConventionalDataProviderV24( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } - public new const string XSD_TYPE = "AuxiliaryDataPIFType"; + public override bool ESSupplyFromHEVREESS => false; + } - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + // --------------------------------------------------------------------------------------- - public XMLDeclarationPrimaryBusAuxiliariesDataProviderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) - : base(vehicle, componentNode, sourceFile) { } + public class XMLDeclarationPrimaryBusAuxiliariesHEVPDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 + { + + public const string XSD_TYPE = "AUX_HEV-P_PrimaryBusType"; + public static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public override XmlNode XMLSource => BaseNode; + public XMLDeclarationPrimaryBusAuxiliariesHEVPDataProviderV24( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } } - public class XMLDeclarationCompleteBusAuxiliariesDataProviderV26 : XMLDeclarationPrimaryBusAuxiliariesDataProviderV26, IElectricConsumersDeclarationData + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusAuxiliariesHEVSDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 { - public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public const string XSD_TYPE = "AUX_HEV-S_PrimaryBusType"; + + public static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public new const string XSD_TYPE = "CompletedVehicleAuxiliaryDataDeclarationType"; + public XMLDeclarationPrimaryBusAuxiliariesHEVSDataProviderV24( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public override bool SmartElectrics => false; - public XMLDeclarationCompleteBusAuxiliariesDataProviderV26( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + public override bool SmartAirCompression => false; - #region Implementation of IBusAuxiliariesDeclarationData + } + // --------------------------------------------------------------------------------------- + public class XMLDeclarationPrimaryBusAuxiliariesPEVDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 + { + + public const string XSD_TYPE = "AUX_PEV_PrimaryBusType"; + + public static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public override IList<string> SteeringPumpTechnology => null; + public XMLDeclarationPrimaryBusAuxiliariesPEVDataProviderV24( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } + public override string FanTechnology => null; + + public override bool ESSupplyFromHEVREESS => true; - public override IElectricConsumersDeclarationData ElectricConsumers => this; + public override bool SmartElectrics => false; + public override bool SmartAirCompression => false; - public override IPneumaticSupplyDeclarationData PneumaticSupply => null; + public override string CompressorSize => null; - //public override IPneumaticConsumersDeclarationData PneumaticConsumers { get { return null; } } + public override string Clutch => null; - public override BusHVACSystemConfiguration? SystemConfiguration => BusHVACSystemConfigurationHelper.Parse(GetString(XMLNames.Bus_SystemConfiguration)); + public override double Ratio => double.NaN; + } - public override Watt AuxHeaterPower => GetDouble(XMLNames.Bus_AuxiliaryHeaterPower).SI<Watt>(); + // --------------------------------------------------------------------------------------- - public override bool? DoubleGlazing => GetBool(XMLNames.Bus_DoubleGlazing); + public class XMLDeclarationPrimaryBusAuxiliariesIEPCDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 + { + public const string XSD_TYPE = "AUX_IEPC_PrimaryBusType"; - public override bool HeatPump => GetBool(XMLNames.Bus_HeatPump); + public static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public override bool? AdjustableCoolantThermostat - { - get { return GetBool(new[] { "HVAC", XMLNames.Bus_AdjustableCoolantThermostat }); } - } + public XMLDeclarationPrimaryBusAuxiliariesIEPCDataProviderV24( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(componentNode) { } - public override bool? AdjustableAuxiliaryHeater => GetBool(XMLNames.Bus_AdjustableAuxiliaryHeater); + public override string FanTechnology => null; + public override bool ESSupplyFromHEVREESS => true; + public override bool SmartElectrics => false; + public override bool SmartAirCompression => false; - public override bool EngineWasteGasHeatExchanger => false; + public override string CompressorSize => null; - public override bool? SeparateAirDistributionDucts => GetBool(XMLNames.Bus_SeparateAirDistributionDucts); + public override string Clutch => null; - #endregion + public override double Ratio => double.NaN; + } + + // --------------------------------------------------------------------------------------- - #region Implementation of IElectricConsumersDeclarationData - public virtual bool? InteriorLightsLED { get { return GetBool(new[] { "LEDLights", XMLNames.Bus_Interiorlights }); } } + public class XMLDeclarationPrimaryBusAuxiliariesDataProviderV01 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24 + { + public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public virtual bool? DayrunninglightsLED { get { return GetBool(new[] { "LEDLights", XMLNames.Bus_Dayrunninglights }); } } + public const string XSD_TYPE = "AuxiliaryDataPIFType"; - public virtual bool? PositionlightsLED { get { return GetBool(new[] { "LEDLights", XMLNames.Bus_Positionlights }); } } + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public virtual bool? HeadlightsLED { get { return GetBool(new[] { "LEDLights", XMLNames.Bus_Headlights }); } } + public XMLDeclarationPrimaryBusAuxiliariesDataProviderV01(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(componentNode) { } - public virtual bool? BrakelightsLED { get { return GetBool(new[] { "LEDLights", XMLNames.Bus_Brakelights }); } } - #endregion + public override XmlNode XMLSource => BaseNode; } - public class XMLDeclarationCompleteBusAuxiliariesDataProviderV28 : XMLDeclarationCompleteBusAuxiliariesDataProviderV26 + // --------------------------------------------------------------------------------------- + + + public class XMLDeclarationCompletedBusAuxiliariesDataProviderV24 : AbstractXMLDeclarationPrimaryBusAuxiliariesDataProviderV24, IElectricConsumersDeclarationData { - public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; + public new static XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "CompletedVehicleAuxiliaryDataDeclarationType"; + public const string XSD_TYPE_CONVENTIONAL = "AUX_Conventional_CompletedBusType"; + public const string XSD_TYPE_xEV = "AUX_xEV_CompletedBusType"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_TYPE_CONVENTIONAL = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_CONVENTIONAL); + public static readonly string QUALIFIED_XSD_TYPE_xEV = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_xEV); - public XMLDeclarationCompleteBusAuxiliariesDataProviderV28(IXMLDeclarationVehicleData vehicle, + + public XMLDeclarationCompletedBusAuxiliariesDataProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) - : base(vehicle, componentNode, sourceFile) {} + : base(componentNode) {} private bool IsBusHVACTagEmpty() { - return SystemConfiguration == null && HeatPumpTypeDriverCompartment == null && HeatPumpModeDriverCompartment == null && - HeatPumpPassengerCompartments?.Any() != true && AuxHeaterPower == null && DoubleGlazing == null && - AdjustableAuxiliaryHeater == null && SeparateAirDistributionDucts == null && WaterElectricHeater == null && - AirElectricHeater == null && OtherHeatingTechnology == null ; + return SystemConfiguration == null && + HeatPumpTypeCoolingPassengerCompartment == null && + HeatPumpTypeHeatingPassengerCompartment == null && + HeatPumpTypeCoolingDriverCompartment == null && + HeatPumpTypeHeatingDriverCompartment == null && + AuxHeaterPower == null && + DoubleGlazing == null && + AdjustableAuxiliaryHeater == null && + SeparateAirDistributionDucts == null && + WaterElectricHeater == null && + AirElectricHeater == null && + OtherHeatingTechnology == null ; } public override XmlNode XMLSource => BaseNode; @@ -322,49 +377,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider ElementExists(XMLNames.Bus_SystemConfiguration) ? BusHVACSystemConfigurationHelper.Parse(GetString(XMLNames.Bus_SystemConfiguration)) : null; - public override HeatPumpType? HeatPumpTypeDriverCompartment => + public override HeatPumpType? HeatPumpTypeCoolingDriverCompartment => ElementExists(XMLNames.Bus_HeatPumpTypeDriver) - ? HeatPumpTypeHelper.Parse(GetString(XMLNames.Bus_HeatPumpTypeDriver)) : (HeatPumpType?)null; - - public override HeatPumpMode? HeatPumpModeDriverCompartment - { - get - { - if (HeatPumpTypeDriverCompartment == HeatPumpType.none && !ElementExists(XMLNames.Bus_HeatPumpModeDriver)) - return HeatPumpMode.N_A; - - return ElementExists(XMLNames.Bus_HeatPumpModeDriver) - ? (HeatPumpMode?)HeatPumpModeHelper.Parse(GetString(XMLNames.Bus_HeatPumpModeDriver)) : null; - } - } + ? HeatPumpTypeHelper.Parse(GetString(new [] {XMLNames.Bus_HeatPumpTypeDriver, "Cooling"})) : (HeatPumpType?)null; - - - public override IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments => - ElementExists(XMLNames.Bus_HeatPumpTypePassenger) - && ElementExists(XMLNames.Bus_HeatPumpModePassenger) - ? GetHeatPumpPassengerCompartments() : null; - - private IList<Tuple<HeatPumpType, HeatPumpMode>> GetHeatPumpPassengerCompartments() - { - var pumpTypeNodes = GetNodes(XMLNames.Bus_HeatPumpTypePassenger); - var pumpModeNodes = GetNodes(XMLNames.Bus_HeatPumpModePassenger); - - if (pumpTypeNodes == null || pumpModeNodes == null) - return null; - if (pumpTypeNodes.Count != pumpModeNodes.Count ) - return null; - - var heatPumps = new List<Tuple<HeatPumpType, HeatPumpMode>>(); - - for (int i = 0; i < pumpTypeNodes.Count; i++) { - var pumpType = HeatPumpTypeHelper.Parse(pumpTypeNodes[i]?.InnerText); - var pumpMode = HeatPumpModeHelper.Parse(pumpModeNodes[i]?.InnerText); - heatPumps.Add(new Tuple<HeatPumpType, HeatPumpMode>(pumpType, pumpMode)); - } - - return heatPumps.Any() != true ? null : heatPumps; - } + public override HeatPumpType? HeatPumpTypeHeatingDriverCompartment => ElementExists(XMLNames.Bus_HeatPumpTypeDriver) + ? HeatPumpTypeHelper.Parse(GetString(new[] { XMLNames.Bus_HeatPumpTypeDriver, "Heating" })) : (HeatPumpType?)null; + public override HeatPumpType? HeatPumpTypeCoolingPassengerCompartment => ElementExists(XMLNames.Bus_HeatPumpTypePassenger) + ? HeatPumpTypeHelper.Parse(GetString(new[] { XMLNames.Bus_HeatPumpTypePassenger, "Cooling" })) : (HeatPumpType?)null; + public override HeatPumpType? HeatPumpTypeHeatingPassengerCompartment => ElementExists(XMLNames.Bus_HeatPumpTypePassenger) + ? HeatPumpTypeHelper.Parse(GetString(new[] { XMLNames.Bus_HeatPumpTypePassenger, "Heating" })) : (HeatPumpType?)null; public override Watt AuxHeaterPower => ElementExists(XMLNames.Bus_AuxiliaryHeaterPower) @@ -404,7 +426,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override IElectricConsumersDeclarationData ElectricConsumers => IsElectricConsumersTagEmpty() ? null : this; - public override bool? InteriorLightsLED + public virtual bool? InteriorLightsLED { get { @@ -414,7 +436,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - public override bool? DayrunninglightsLED + public virtual bool? DayrunninglightsLED { get { @@ -424,7 +446,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - public override bool? PositionlightsLED + public virtual bool? PositionlightsLED { get { @@ -434,7 +456,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - public override bool? HeadlightsLED + public virtual bool? HeadlightsLED { get { @@ -444,7 +466,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider } } - public override bool? BrakelightsLED + public virtual bool? BrakelightsLED { get { diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs index f22381ccb63ee31edd3db59215627562f8dad042..3745b6890a286380d31cff94acdf5529a524f1b4 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationComponentsDataProvider.cs @@ -59,6 +59,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider protected IPTOTransmissionInputData _ptoInputData; protected IXMLDeclarationVehicleData _vehicle; protected ITorqueConverterDeclarationInputData _torqueconverterInputData; + protected IElectricMachinesDeclarationInputData _electricMachinesInputData; + protected IElectricStorageSystemDeclarationInputData _electricStorageSystemInputData; + protected IIEPCDeclarationInputData _iepcInputData; + public XMLDeclarationComponentsDataProviderV10( @@ -93,8 +97,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual IAxlesDeclarationInputData AxleWheels => _axleWheels ?? (_axleWheels = ComponentReader.AxlesDeclarationInputData); public virtual IBusAuxiliariesDeclarationData BusAuxiliaries => null; - public virtual IElectricStorageSystemDeclarationInputData ElectricStorage => null; - public virtual IElectricMachinesDeclarationInputData ElectricMachines => null; + public virtual IElectricStorageSystemDeclarationInputData ElectricStorage => _electricStorageSystemInputData ?? (_electricStorageSystemInputData = ComponentReader.ElectricStorageSystem); + public virtual IElectricMachinesDeclarationInputData ElectricMachines => _electricMachinesInputData ?? (_electricMachinesInputData = ComponentReader.ElectricMachines); + public virtual IIEPCDeclarationInputData IEPC => _iepcInputData ?? (_iepcInputData = ComponentReader.IEPCInputData); #endregion @@ -134,82 +139,73 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationPrimaryBusComponentsDataProviderV26 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration + public class XMLDeclarationComponentsDataProviderV24_Lorry : XMLDeclarationComponentsDataProviderV10 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "PrimaryVehicleComponentsDeclarationType"; + public new const string XSD_TYPE = "Components_Conventional_LorryType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - private IBusAuxiliariesDeclarationData _busAuxiliaries; - - public XMLDeclarationPrimaryBusComponentsDataProviderV26( + public XMLDeclarationComponentsDataProviderV24_Lorry( IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( vehicle, componentNode, sourceFile) { } - - IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData => null; - - public override IBusAuxiliariesDeclarationData BusAuxiliaries => _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - } - - // --------------------------------------------------------------------------------------- - - public class XMLDeclarationComponentsDataProviderNoAxlegearV26 : XMLDeclarationComponentsDataProviderV10 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V20; - public new const string XSD_TYPE = "VehicleComponentsNoAxlegearType"; + #region Overrides of XMLDeclarationComponentsDataProviderV10 - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public override IAngledriveInputData AngledriveInputData + => ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; - public XMLDeclarationComponentsDataProviderNoAxlegearV26( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( - vehicle, componentNode, sourceFile) - { } + public override IRetarderInputData RetarderInputData + => ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; - #region Overrides of XMLDeclarationComponentsDataProviderV10 - - public override IAxleGearInputData AxleGearInputData => null; - //throw new NotSupportedException("No Axlegeardata available"); + public override IAirdragDeclarationInputData AirdragInputData + => ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; #endregion - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; } // --------------------------------------------------------------------------------------- - - public class XMLDeclarationCompleteBusComponentsDataProviderV26 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration + public class XMLDeclarationPrimaryBusComponentsDataProviderV24 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; + public new const string XSD_TYPE = "Components_Conventional_PrimaryBusType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); private IBusAuxiliariesDeclarationData _busAuxiliaries; - public XMLDeclarationCompleteBusComponentsDataProviderV26( + public XMLDeclarationPrimaryBusComponentsDataProviderV24( IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( vehicle, componentNode, sourceFile) { } - IGearboxDeclarationInputData IVehicleComponentsDeclaration.GearboxInputData => null; + public override IAirdragDeclarationInputData AirdragInputData => null; + IAuxiliariesDeclarationInputData IVehicleComponentsDeclaration.AuxiliaryInputData => null; - public override IBusAuxiliariesDeclarationData BusAuxiliaries => _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IAngledriveInputData AngledriveInputData => + ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + #endregion + + public override IBusAuxiliariesDeclarationData BusAuxiliaries => + _busAuxiliaries ?? (_busAuxiliaries = ComponentReader.BusAuxiliariesInputData); protected override XNamespace SchemaNamespace => NAMESPACE_URI; } - // --------------------------------------------------------------------------------------- @@ -250,20 +246,23 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationInterimStageBusComponentsDataProviderV28 : XMLDeclarationComponentsDataProviderV10, + public class XMLDeclarationCompletedBusComponentsDataProviderV24 : XMLDeclarationComponentsDataProviderV10, IXMLVehicleComponentsDeclaration { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; + public const string XSD_TYPE_CONVENTIONAL = "Components_Conventional_CompletedBusType"; + public const string XSD_TYPE_xEV = "Components_xEV_CompletedBusType"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public static readonly string QUALIFIED_XSD_TYPE_CONVENTIONAL = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_CONVENTIONAL); + public static readonly string QUALIFIED_XSD_TYPE_xEV = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_xEV); private IBusAuxiliariesDeclarationData _busAuxiliaries; - public XMLDeclarationInterimStageBusComponentsDataProviderV28(IXMLDeclarationVehicleData vehicle, + public XMLDeclarationCompletedBusComponentsDataProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } @@ -319,4 +318,318 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider return busAux; } } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHEVPxLorryComponentsDataProviderV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-Px_LorryType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHEVPxLorryComponentsDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IAngledriveInputData AngledriveInputData => + ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData => + ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevs2LorryComponentsDataProviderV24 : XMLDeclarationHEVPxLorryComponentsDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S2_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHevs2LorryComponentsDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IIEPCDeclarationInputData IEPC => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHEVSXLorryComponentsDataProviderV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_HEV_S3_TYPE = "Components_HEV-S3_LorryType"; + public const string XSD_HEV_S4_TYPE = "Components_HEV-S4_LorryType"; + + public static readonly string QUALIFIED_HEV_S3_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S3_TYPE); + public static readonly string QUALIFIED_HEV_S4_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S4_TYPE); + + public XMLDeclarationHEVSXLorryComponentsDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IIEPCDeclarationInputData IEPC => null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData => + ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusHEVPxComponentsDataProviderV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-Px_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + protected IBusAuxiliariesDeclarationData _busAuxiliariesDeclarationInputData; + + public XMLDeclarationPrimaryBusHEVPxComponentsDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IBusAuxiliariesDeclarationData BusAuxiliaries => _busAuxiliariesDeclarationInputData ?? + (_busAuxiliariesDeclarationInputData = ComponentReader.BusAuxiliariesInputData); + + public override IAirdragDeclarationInputData AirdragInputData => null; + + public override IIEPCDeclarationInputData IEPC => null; + + public override IAngledriveInputData AngledriveInputData => + ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV24 : XMLDeclarationPrimaryBusHEVPxComponentsDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S2_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24 : XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_HEV_S3_TYPE = "Components_HEV-S3_PrimaryBusType"; + public const string XSD_HEV_S4_TYPE = "Components_HEV-S4_PrimaryBusType"; + public static readonly string QUALIFIED_HEV_S3_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S3_TYPE); + public static readonly string QUALIFIED_HEV_S4_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_S4_TYPE); + + public XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeavyLorryHEVIEPCSComponentDataV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-IEPC-S_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHeavyLorryHEVIEPCSComponentDataV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAxleGearInputData AxleGearInputData => + ElementExists(XMLNames.Component_Axlegear) ? base.AxleGearInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData => + ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusHEVIEPCSComponentDataV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-IEPC-S_PrimaryBus"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + protected IBusAuxiliariesDeclarationData _busAuxiliariesDeclarationInputData; + + public XMLDeclarationPrimaryBusHEVIEPCSComponentDataV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IAirdragDeclarationInputData AirdragInputData => null; + + public override IBusAuxiliariesDeclarationData BusAuxiliaries => _busAuxiliariesDeclarationInputData ?? + (_busAuxiliariesDeclarationInputData = ComponentReader.BusAuxiliariesInputData); + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAxleGearInputData AxleGearInputData => + ElementExists(XMLNames.Component_Axlegear) ? base.AxleGearInputData : null; + #endregion + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeavyLorryPEVE2ComponentDataV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E2_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHeavyLorryPEVE2ComponentDataV24(IXMLDeclarationVehicleData vehicle, + XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IAngledriveInputData AngledriveInputData => + ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData => + ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeavyLorryPevExComponentDataV24 : XMLDeclarationHeavyLorryPEVE2ComponentDataV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E3_LorryType"; + public const string XSD_PEV_E4_TYPE = "Components_PEV-E4_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_PEV_E4_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_PEV_E4_TYPE); + public XMLDeclarationHeavyLorryPevExComponentDataV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusPEVE2ComponentDataV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E2_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IBusAuxiliariesDeclarationData _busAuxiliariesDeclarationInputData; + + public XMLDeclarationPrimaryBusPEVE2ComponentDataV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IEngineDeclarationInputData EngineInputData => null; + + public override IIEPCDeclarationInputData IEPC => null; + + public override IBusAuxiliariesDeclarationData BusAuxiliaries => _busAuxiliariesDeclarationInputData ?? + (_busAuxiliariesDeclarationInputData = ComponentReader.BusAuxiliariesInputData); + + public override IAngledriveInputData AngledriveInputData => + ElementExists(XMLNames.Component_Angledrive) ? base.AngledriveInputData : null; + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPrimaryBusPevExComponentDataV24 : XMLDeclarationPrimaryBusPEVE2ComponentDataV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E3_PrimaryBusType"; + public const string XSD_PEV_E4_TYPE = "Components_PEV-E4_PrimaryBusType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_PEV_E4_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_PEV_E4_TYPE); + + public XMLDeclarationPrimaryBusPevExComponentDataV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, + string sourceFile) : base(vehicle, componentNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIEPCHeavyLorryComponentDataV24 : XMLDeclarationComponentsDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_IEPC_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationIEPCHeavyLorryComponentDataV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAxleGearInputData AxleGearInputData => + ElementExists(XMLNames.Component_Axlegear) ? base.AxleGearInputData : null; + + public override IAirdragDeclarationInputData AirdragInputData => + ElementExists(XMLNames.Component_AirDrag) ? base.AirdragInputData : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIEPCPrimaryBusComponentDataV24 : XMLDeclarationPrimaryBusComponentsDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_IEPC_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationIEPCPrimaryBusComponentDataV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + #region Overrides of XMLDeclarationComponentsDataProviderV10 + + public override IRetarderInputData RetarderInputData => + ElementExists(XMLNames.Component_Retarder) ? base.RetarderInputData : null; + + public override IAxleGearInputData AxleGearInputData => + ElementExists(XMLNames.Component_Axlegear) ? base.AxleGearInputData : null; + + #endregion + } } \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs index 58160826488a24e72aadd2fbbda5fa1a0164eaeb..6942da549bdfdef277fe86ff247a503935448dda 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationGearboxDataProvider.cs @@ -84,6 +84,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider case "AMT": return GearboxType.AMT; case "APT-S": case "AT - Serial": return GearboxType.ATSerial; + case "APT-N": case "APT-P": case "AT - PowerSplit": return GearboxType.ATPowerSplit; } @@ -147,27 +148,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationGearboxDataProviderV26 : XMLDeclarationGearboxDataProviderV10 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + //public class XMLDeclarationGearboxDataProviderV26 : XMLDeclarationGearboxDataProviderV10 + //{ + // public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V210_JOBS; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + // public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLDeclarationGearboxDataProviderV26( - IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( - vehicle, componentNode, sourceFile) - { } + // public XMLDeclarationGearboxDataProviderV26( + // IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base( + // vehicle, componentNode, sourceFile) + // { } - #region Overrides of XMLDeclarationGearboxDataProviderV10 + // #region Overrides of XMLDeclarationGearboxDataProviderV10 - public override bool DifferentialIncluded => GetBool(XMLNames.Gearbox_DifferentialIncluded); + // public override bool DifferentialIncluded => GetBool(XMLNames.Gearbox_DifferentialIncluded); - public override double AxlegearRatio => DifferentialIncluded ? GetDouble(XMLNames.Gearbox_AxlegearRatio) : double.NaN; + // public override double AxlegearRatio => DifferentialIncluded ? GetDouble(XMLNames.Gearbox_AxlegearRatio) : double.NaN; - #endregion + // #endregion - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - } + // protected override XNamespace SchemaNamespace => NAMESPACE_URI; + //} // --------------------------------------------------------------------------------------- @@ -190,4 +191,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider protected override XNamespace SchemaNamespace => NAMESPACE_URI; } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationGearboxDataProviderV23 : XMLDeclarationGearboxDataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new const string XSD_TYPE = "GearboxDataDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationGearboxDataProviderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationIEPCDataProviderV2101.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationIEPCDataProviderV2101.cs new file mode 100644 index 0000000000000000000000000000000000000000..c188c697b9f9327510990da19330d04547d57b58 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationIEPCDataProviderV2101.cs @@ -0,0 +1,183 @@ +using System; +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using Castle.Core.Internal; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider +{ + public class XMLDeclarationIEPCDataProviderV2101 : AbstractCommonComponentType, IXMLIEPCInputData, IElectricMotorVoltageLevel, IGearEntry + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V2101_JOBS; + public const string XSD_TYPE = "IEPCMeasuredDataDeclarationType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IXMLDeclarationVehicleData _vehicle; + private IList<IElectricMotorVoltageLevel> _voltageLevels; + private IList<IGearEntry> _gears; + + public XMLDeclarationIEPCDataProviderV2101(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + _vehicle = vehicle; + SourceType = DataSourceType.XMLEmbedded; + } + + #region Overrides of AbstractCommonComponentType + + public override CertificationMethod CertificationMethod + { + get + { + var certMethod = GetString(XMLNames.Component_Gearbox_CertificationMethod, required: false) ?? + GetString(XMLNames.Component_CertificationMethod, required: false); + + if(certMethod != null && certMethod == "Measured for complete component") + return CertificationMethod.Measured; + + return certMethod != null + ? EnumHelper.ParseEnum<CertificationMethod>(certMethod) + : CertificationMethod.Measured; + } + } + + #endregion + + + #region Implementation of IPowerRatingInputData + + public virtual ElectricMachineType ElectricMachineType => + GetString(XMLNames.ElectricMachine_ElectricMachineType).ParseEnum<ElectricMachineType>(); + + public virtual Watt R85RatedPower => + GetDouble(XMLNames.ElectricMachine_R85RatedPower).SI<Watt>(); + + public virtual KilogramSquareMeter Inertia => + GetDouble(XMLNames.ElectricMachine_RotationalInertia).SI<KilogramSquareMeter>(); + + public virtual NewtonMeter ContinuousTorque => + GetDouble(XMLNames.ElectricMachine_ContinuousTorque).SI<NewtonMeter>(); + + public virtual PerSecond ContinuousTorqueSpeed => + GetDouble(XMLNames.ElectricMachine_TestSpeedContinuousTorque).SI<PerSecond>(); + + public virtual NewtonMeter OverloadTorque => + GetDouble(XMLNames.ElectricMachine_OverloadTorque).SI<NewtonMeter>(); + + public virtual PerSecond OverloadTestSpeed => + GetDouble(XMLNames.ElectricMachine_TestSpeedOverloadTorque).SI<PerSecond>(); + + public virtual Second OverloadTime => + GetDouble(XMLNames.ElectricMachine_OverloadDuration).SI<Second>(); + + #endregion + + #region Implementation of IIEPCDeclarationInputData + + public virtual Volt TestVoltageOverload => + GetDouble(XMLNames.ElectricMachine_TestVoltageOverload).SI<Volt>(); + + public virtual bool DifferentialIncluded => GetBool(XMLNames.IEPC_DifferentialIncluded); + + public virtual bool DesignTypeWheelMotor => GetBool(XMLNames.IEPC_DesignTypeWheelMotor); + + public virtual int? NrOfDesignTypeWheelMotorMeasured => ElementExists(XMLNames.IEPC_NrOfDesignTypeWheelMotorMeasured) ? + (int?) Convert.ToInt32(GetString(XMLNames.IEPC_NrOfDesignTypeWheelMotorMeasured)) : null; + + public IList<IGearEntry> Gears => + _gears ?? (_gears = GetGearEntries()); + + + public virtual IList<IElectricMotorVoltageLevel> VoltageLevels => + _voltageLevels ?? (_voltageLevels = GetVoltageLevels()); + + public TableData DragCurve => + ReadTableData(XMLNames.DragCurve, XMLNames.DragCurve_Entry, new Dictionary<string, string> + { + {XMLNames.DragCurve_OutShaftSpeed, XMLNames.DragCurve_OutShaftSpeed}, + {XMLNames.DragCurve_DragTorque, XMLNames.DragCurve_DragTorque} + }); + + #endregion + + #region Implementation of IElectricMotorVoltageLevel + + public Volt VoltageLevel => GetDouble(XMLNames.VoltageLevel_Voltage).SI<Volt>(); + + public TableData FullLoadCurve => ReadTableData(XMLNames.MaxTorqueCurve, XMLNames.MaxTorqueCurve_Entry, new Dictionary<string, string> { + {XMLNames.MaxTorqueCurve_OutShaftSpeed, XMLNames.MaxTorqueCurve_OutShaftSpeed}, + {XMLNames.MaxTorqueCurve_MaxTorque, XMLNames.MaxTorqueCurve_MaxTorque}, + {XMLNames.MaxTorqueCurve_MinTorque, XMLNames.MaxTorqueCurve_MinTorque} + }); + + public TableData EfficiencyMap => ReadTableData(XMLNames.PowerMap, XMLNames.PowerMap_Entry, new Dictionary<string, string> { + { XMLNames.PowerMap_OutShaftSpeed, XMLNames.PowerMap_OutShaftSpeed }, + { XMLNames.PowerMap_Torque, XMLNames.PowerMap_Torque }, + { XMLNames.PowerMap_ElectricPower, XMLNames.PowerMap_ElectricPower } + }); + + #endregion + + private IList<IElectricMotorVoltageLevel> GetVoltageLevels() + { + var voltageLevelNodes = GetNodes(XMLNames.ElectricMachine_VoltageLevel); + if (voltageLevelNodes.IsNullOrEmpty()) + return null; + + var voltageLevels = new List<IElectricMotorVoltageLevel>(); + + foreach (XmlNode voltageLevelNode in voltageLevelNodes) + { + voltageLevels.Add(new XMLDeclarationIEPCDataProviderV2101(null, voltageLevelNode, null)); + } + + return voltageLevels; + } + + #region Implementation of IGearEntry + + public int GearNumber => Convert.ToInt32(GetAttribute(BaseNode, XMLNames.Gear_GearNumber_Attr)); + + public double Ratio => GetDouble(XMLNames.Gear_Ratio); + + public NewtonMeter MaxOutputShaftTorque => ElementExists(XMLNames.Gear_MaxOutputShaftTorque) + ? GetDouble(XMLNames.Gear_MaxOutputShaftTorque).SI<NewtonMeter>() + : null; + + public PerSecond MaxOutputShaftSpeed => ElementExists(XMLNames.Gear_MaxOutputShaftSpeed) + ? GetDouble(XMLNames.Gear_MaxOutputShaftSpeed).SI<PerSecond>() + : null; + + #endregion + + private IList<IGearEntry> GetGearEntries() + { + var gearNodes = GetNodes(XMLNames.Gear_EntryName); + if (gearNodes.IsNullOrEmpty()) + return null; + + var gears = new List<IGearEntry>(); + foreach (XmlNode gearNode in gearNodes) { + gears.Add(new XMLDeclarationIEPCDataProviderV2101(null, gearNode, null)); + } + + return gears; + } + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + + + + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs index e65ddef508ad1f130fa9d3a3b00ecb82d12257c0..14c1eaecd0480908eab71bb61be8e7b0ad856c92 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationMultistageInputData.cs @@ -20,7 +20,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "VectoOutputMultistageType"; + public const string XSD_TYPE = "VectoOutputMultistepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); @@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "VectoOutputMultistageType"; + public const string XSD_TYPE = "VectoOutputMultistepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); @@ -176,14 +176,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider { public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "ManufacturingStageType"; + public const string XSD_TYPE = "ManufacturingStepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); private readonly XmlNode _signatureXmlNode; private IVehicleDeclarationInputData _vehicle; private IApplicationInformation _applicationInformation; - private DigestData _hashPreviousStage; + private DigestData _hashPreviousStep; private DigestData _signature; @@ -197,11 +197,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider protected override DataSourceType SourceType => DataSourceType.XMLFile; - public DigestData HashPreviousStage => - _hashPreviousStage ?? - (_hashPreviousStage = Reader.GetDigestData(GetNode("HashPreviousStage"))); + public DigestData HashPreviousStep => + _hashPreviousStep ?? + (_hashPreviousStep = Reader.GetDigestData(GetNode(XMLNames.ManufacturingStep_HashPreviousStep))); - public int StageCount => Convert.ToInt32(GetAttribute(BaseNode, XMLNames.ManufacturingStage_StageCount)); + public int StepCount => Convert.ToInt32(GetAttribute(BaseNode, XMLNames.ManufacturingStep_StepCount)); public IVehicleDeclarationInputData Vehicle => _vehicle ?? (_vehicle = Reader.Vehicle); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs index 4d6bb336ca74b8905224e32044647b0fc5634ffa..2bed1ed38f724d1e4cc89f6acbe4f914e92ec872 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationPTODataProvider.cs @@ -84,7 +84,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual TableData PTOCycleDuringStop => null; public TableData PTOCycleWhileDriving => null; - + #endregion } @@ -97,9 +97,25 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public new const string XSD_TYPE = "PTOType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public XMLDeclarationPTODataProviderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) : base(vehicle, componentNode, sourceFile) { } + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPTODataProviderV24 : XMLDeclarationPTODataProviderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "PTOType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationPTODataProviderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs index f02cc722c86efd6e4c66493cdaf04b6197b3188d..7b2dfa10639d032fbf52ba1bf731bff6b92c2252 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationTyreDataProvider.cs @@ -116,7 +116,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public class XMLDeclarationTyreDataProviderV23 : XMLDeclarationTyreDataProviderV10 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; //public new const string XSD_TYPE = "TyreComponentDeclarationType"; diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs index b0bad7b3a01506a3cb64c4f43217f1b171fdc2fe..1b8b21484fc5d433a1ee801be8e2c7e5a7bae194 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLDeclarationVehicleDataProvider.cs @@ -34,6 +34,7 @@ using System.Collections.Generic; using System.Linq; using System.Xml; using System.Xml.Linq; +using Castle.Core.Internal; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; @@ -159,22 +160,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual IPTOTransmissionInputData PTOTransmissionInputData => _ptoData ?? (_ptoData = PTOReader.PTOInputData); - public virtual RetarderType RetarderType - { - get { - var value = GetString(XMLNames.Vehicle_RetarderType); //.ParseEnum<RetarderType>(); - switch (value) { - case "None": return RetarderType.None; - case "Losses included in Gearbox": return RetarderType.LossesIncludedInTransmission; - case "Engine Retarder": return RetarderType.EngineRetarder; - case "Transmission Input Retarder": return RetarderType.TransmissionInputRetarder; - case "Transmission Output Retarder": return RetarderType.TransmissionOutputRetarder; - } - - throw new ArgumentOutOfRangeException("RetarderType", value); - } - } - + public virtual RetarderType RetarderType => RetarderTypeHelper.Parse(GetString(XMLNames.Vehicle_RetarderType)); + public virtual AngledriveType AngledriveType => GetString(XMLNames.Vehicle_AngledriveType).ParseEnum<AngledriveType>(); public virtual bool VocationalVehicle => XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_VocationalVehicle)); @@ -183,7 +170,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider ? XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_SleeperCab)) : (bool?)null; - public virtual bool? AirdragModifiedMultistage { get; } + public virtual bool? AirdragModifiedMultistep { get; } public virtual TankSystem? TankSystem => ElementExists(XMLNames.Vehicle_NgTankSystem) @@ -220,7 +207,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual int? NumberPassengersStandingUpperDeck => 0; - public virtual CubicMeter CargoVolume => 0.SI<CubicMeter>(); + public virtual CubicMeter CargoVolume => + ElementExists(XMLNames.Vehicle_CargoVolume) + ? GetDouble(XMLNames.Vehicle_CargoVolume).SI<CubicMeter>() : null; public virtual VehicleCode? VehicleCode => VectoCommon.Models.VehicleCode.NOT_APPLICABLE; @@ -238,9 +227,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual ConsumerTechnology? DoorDriveTechnology => ConsumerTechnology.Unknown; public virtual VehicleDeclarationType VehicleDeclarationType { get; } + public virtual Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => null; + public virtual TableData BoostingLimitations => null; public virtual IVehicleComponentsDeclaration Components => _components ?? (_components = ComponentReader.ComponentInputData); + + public virtual string VehicleTypeApprovalNumber => ElementExists(XMLNames.VehicleTypeApprovalNumber) ? GetString(XMLNames.Vehicle_TypeApprovalNumber) : null; + public virtual ArchitectureID ArchitectureID => ArchitectureIDHelper.Parse(GetString(XMLNames.Vehicle_ArchitectureID)); + public virtual bool OvcHev => GetBool(XMLNames.Vehicle_OvcHev); + public virtual Watt MaxChargingPower => ElementExists(XMLNames.Vehicle_MaxChargingPower) ? + XmlConvert.ToInt32(GetString(XMLNames.Vehicle_MaxChargingPower)).SI<Watt>() : null; #region Implementation of IAdvancedDriverAssistantSystemDeclarationInputData @@ -454,266 +451,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider // --------------------------------------------------------------------------------------- - public class XMLDeclarationPrimaryBusVehicleDataProviderV26 : XMLDeclarationVehicleDataProviderV20 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - - public new const string XSD_TYPE = "PrimaryVehicleDeclarationType"; - - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationPrimaryBusVehicleDataProviderV26( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) - { - SourceType = DataSourceType.XMLEmbedded; - - } - - - #region Overrides of XMLDeclarationVehicleDataProviderV10 - - public override bool? SleeperCab => false; - - public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => ADASReader.ADASInputData; - - public override XmlElement PTONode => null; - - #region Overrides of XMLDeclarationVehicleDataProviderV10 - - public override LegislativeClass? LegislativeClass => VectoCommon.Models.LegislativeClass.M3; - - #endregion - - public override IPTOTransmissionInputData PTOTransmissionInputData => null; - - public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusPrimaryVehicle; - - public override bool Articulated => GetBool(XMLNames.Vehicle_Articulated); - - public override Kilogram CurbMassChassis => null; - - public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); - - public override Meter EntranceHeight => null; - - #endregion - - #region Overrides of AbstractXMLResource - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - - protected override DataSourceType SourceType { get; } - - #endregion - } - - public class XMLDeclarationExemptedPrimaryBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - - public new const string XSD_TYPE = "ExemptedPrimaryHeavyBusType"; - - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationExemptedPrimaryBusDataProviderV26( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) - { - SourceType = DataSourceType.XMLEmbedded; - - } - - #region Overrides of AbstractXMLResource - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - - protected override DataSourceType SourceType { get; } - - #endregion - - public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusPrimaryVehicle; - - public override bool ExemptedVehicle => true; - - public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); - - public override LegislativeClass? LegislativeClass => GetString(XMLNames.Bus_LegislativeCategory)?.ParseEnum<LegislativeClass>(); - - - public override IList<ITorqueLimitInputData> TorqueLimits => new List<ITorqueLimitInputData>(); - - public override PerSecond EngineIdleSpeed => null; - - public override bool VocationalVehicle => false; - - public override bool? SleeperCab => false; - - public override TankSystem? TankSystem => null; - - public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => null; - - public override bool ZeroEmissionVehicle => XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ZeroEmissionVehicle)); - - public override bool HybridElectricHDV => false; - - public override bool DualFuelVehicle => false; - - public override Watt MaxNetPower1 => GetDouble("SumNetPower").SI<Watt>(); - - public override Watt MaxNetPower2 => null; - - public override string ExemptedTechnology => GetString("Technology"); - - public override IVehicleComponentsDeclaration Components => null; - - public override XmlElement ComponentNode => null; - - public override XmlElement PTONode => null; - - public override XmlElement ADASNode => null; - - public override AngledriveType AngledriveType => AngledriveType.None; - - public override RetarderType RetarderType => RetarderType.None; - - public override double RetarderRatio => 0; - - public override IPTOTransmissionInputData PTOTransmissionInputData => null; - } - - public class XMLDeclarationMediumLorryVehicleDataProviderV26 : XMLDeclarationVehicleDataProviderV21 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - - public new const string XSD_TYPE = "VehicleMediumLorryDeclarationType"; - - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationMediumLorryVehicleDataProviderV26( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } - - #region Overrides of XMLDeclarationVehicleDataProviderV10 - - public override bool? SleeperCab => false; - - public override bool VocationalVehicle => false; - - public override IPTOTransmissionInputData PTOTransmissionInputData => null; - - public override XmlElement PTONode => null; - - public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); - - public override CubicMeter CargoVolume - { - get - { - if (VehicleCategory == VehicleCategory.Van && !ElementExists(XMLNames.Vehicle_CargoVolume)) { - throw new VectoException("Medium lorries with type Van require the input parameter cargo volume!"); - } - return ElementExists(XMLNames.Vehicle_CargoVolume) ? GetDouble(XMLNames.Vehicle_CargoVolume).SI<CubicMeter>() - : 0.SI<CubicMeter>(); - } - } - - #endregion - - #region Overrides of AbstractXMLResource - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - - protected override DataSourceType SourceType { get; } - - #endregion - - public override AngledriveType AngledriveType => AngledriveType.None; - - public override RetarderType RetarderType => RetarderType.None; - - public override double RetarderRatio => 0; - } - - public class XMLDeclarationCompletedBusDataProviderV26 : XMLDeclarationVehicleDataProviderV20 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - - public new const string XSD_TYPE = "CompletedVehicleDeclarationType"; - - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - public XMLDeclarationCompletedBusDataProviderV26( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) - { - SourceType = DataSourceType.XMLEmbedded; - } - - - #region Overrides of XMLDeclarationVehicleDataProviderV10 - - public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusCompletedVehicle; - - public override RegistrationClass? RegisteredClass => RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First(); - - public override VehicleCode? VehicleCode => GetString(XMLNames.Vehicle_VehicleCode).ParseEnum<VehicleCode>(); - - //TechnicalPermissibleMaximumLadenMass - public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>(); - - public override TankSystem? TankSystem => - ElementExists(XMLNames.Vehicle_NgTankSystem) - ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) - : (TankSystem?)null; - - public override int? NumberPassengerSeatsLowerDeck - { - get { - var node = GetNode(XMLNames.Bus_LowerDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - public override int? NumberPassengerSeatsUpperDeck - { - get { - var node = GetNode(XMLNames.Bus_UpperDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - //HeightIntegratedBody - public override Meter Height => GetDouble(XMLNames.Bus_HeighIntegratedBody).SI<Meter>(); - - //VehicleLength - public override Meter Length => GetDouble(XMLNames.Bus_VehicleLength).SI<Meter>(); - - //VehicleWidth - public override Meter Width => GetDouble(XMLNames.Bus_VehicleWidth).SI<Meter>(); - - public override XmlElement PTONode => null; - - #endregion - - - public override bool? LowEntry => GetBool(XMLNames.Bus_LowEntry); - - public override Meter EntranceHeight => GetDouble(XMLNames.Bus_EntranceHeight).SI<Meter>(); - - public override ConsumerTechnology? DoorDriveTechnology => ConsumerTechnologyHelper.Parse(GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)); - - - #region Overrides of AbstractXMLResource - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - - protected override DataSourceType SourceType { get; } - - #endregion - } - - public class XMLDeclarationMultistagePrimaryVehicleBusDataProviderV01 : AbstractCommonComponentType, IXMLDeclarationVehicleData { @@ -749,7 +486,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public string VIN => GetString(XMLNames.Vehicle_VIN); - public virtual LegislativeClass? LegislativeClass => GetString(XMLNames.Bus_LegislativeCategory)?.ParseEnum<LegislativeClass>(); + public virtual LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeCategory)?.ParseEnum<LegislativeClass>(); public virtual VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString("ChassisConfiguration")); @@ -762,7 +499,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual PerSecond EngineIdleSpeed => GetDouble(XMLNames.Engine_IdlingSpeed).RPMtoRad(); - public virtual RetarderType RetarderType => GetString(XMLNames.Vehicle_RetarderType).ParseEnum<RetarderType>(); + public virtual RetarderType RetarderType => RetarderTypeHelper.Parse(GetString(XMLNames.Vehicle_RetarderType)); public virtual double RetarderRatio => GetDouble(XMLNames.Vehicle_RetarderRatio); @@ -778,7 +515,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual IXMLADASReader ADASReader { get; set; } - public virtual IAdvancedDriverAssistantSystemDeclarationInputData ADAS => _adas ?? (_adas = ADASReader.ADASInputData); + public virtual IAdvancedDriverAssistantSystemDeclarationInputData ADAS => ExemptedVehicle ? null : (_adas ?? (_adas = ADASReader?.ADASInputData)); public virtual IList<ITorqueLimitInputData> TorqueLimits => ReadTorqueLimits(); @@ -803,9 +540,16 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public virtual ConsumerTechnology? DoorDriveTechnology => ConsumerTechnology.Unknown; public virtual VehicleDeclarationType VehicleDeclarationType { get; } + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + public TableData BoostingLimitations { get; } + + public virtual string VehicleTypeApprovalNumber { get; } public virtual IVehicleComponentsDeclaration Components => _components ?? (_components = ComponentReader.ComponentInputData); + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } #region Non seeded Properties @@ -821,7 +565,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public Kilogram CurbMassChassis { get; } public bool VocationalVehicle { get; } public bool? SleeperCab { get; } - public bool? AirdragModifiedMultistage { get; } + public bool? AirdragModifiedMultistep { get; } public TankSystem? TankSystem { get; } public bool HybridElectricHDV { get; } @@ -900,324 +644,111 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider public override Watt MaxNetPower1 => GetDouble("SumNetPower").SI<Watt>(); + #endregion } // --------------------------------------------------------------------------------------- - public class XMLDeclarationInterimStageBusDataProviderV28 : XMLDeclarationVehicleDataProviderV20 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; - public new const string XSD_TYPE = "InterimStageInputType"; - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - - private IAdvancedDriverAssistantSystemDeclarationInputData _adas; - - public XMLDeclarationInterimStageBusDataProviderV28( - IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) - : base(jobData, xmlNode, sourceFile) { } - - public override string Model - { - get - { - if (BaseNode.LocalName == XMLNames.Component_Vehicle) { - return BaseNode.SelectSingleNode($"./*[local-name()='{XMLNames.Component_Model}']")?.InnerText; - } - return ElementExists(new [] { XMLNames.Component_Vehicle, XMLNames.Component_Model}) - ? GetString(new[] { XMLNames.Component_Vehicle, XMLNames.Component_Model }) : null; - } - } - - public override LegislativeClass? LegislativeClass => - ElementExists(XMLNames.Bus_LegislativeCategory) - ? GetString(XMLNames.Bus_LegislativeCategory).ParseEnum<LegislativeClass>() - : (LegislativeClass?)null; - - public override Kilogram CurbMassChassis => - ElementExists(XMLNames.Bus_CorrectedActualMass) - ? GetDouble(XMLNames.Bus_CorrectedActualMass).SI<Kilogram>() - : null; - - public override Kilogram GrossVehicleMassRating => - ElementExists(XMLNames.Vehicle_TPMLM) - ? GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>() - : null; - - public override bool? AirdragModifiedMultistage => - ElementExists(XMLNames.Bus_AirdragModifiedMultistage) - ? GetBool(XMLNames.Bus_AirdragModifiedMultistage) - : (bool?)null; - public override RegistrationClass? RegisteredClass => - ElementExists(XMLNames.Vehicle_RegisteredClass) - ? RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First() - : null; - - public override TankSystem? TankSystem => - ElementExists(XMLNames.Vehicle_NgTankSystem) - ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) - : (TankSystem?)null; - - - public override int? NumberPassengerSeatsLowerDeck - { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsLowerDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengerSeatsLowerDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - public override int? NumberPassengerSeatsUpperDeck - { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsUpperDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengerSeatsUpperDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - public override int? NumberPassengersStandingLowerDeck - { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengersStandingLowerDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengersStandingLowerDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - public override int? NumberPassengersStandingUpperDeck - { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengersStandingUpperDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengersStandingUpperDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } - - - - public override VehicleCode? VehicleCode => - ElementExists(XMLNames.Vehicle_BodyworkCode) - ? GetString(XMLNames.Vehicle_BodyworkCode).ParseEnum<VehicleCode>() - : (VehicleCode?)null; + public abstract class AbstractXMLVehicleDataProviderV24 : XMLDeclarationVehicleDataProviderV20 + { + public virtual string PowertrainPositionPrefix => "P"; - public override bool? LowEntry => - ElementExists(XMLNames.Bus_LowEntry) - ? GetBool(XMLNames.Bus_LowEntry) - : (bool?)null; + protected IAdvancedDriverAssistantSystemDeclarationInputData _adas; - public override Meter Height => - ElementExists(XMLNames.Bus_HeighIntegratedBody) - ? GetDouble(XMLNames.Bus_HeighIntegratedBody).SI(Unit.SI.Milli.Meter).Cast<Meter>() - : null; + protected AbstractXMLVehicleDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + - public override Meter Length => - ElementExists(XMLNames.Bus_VehicleLength) - ? GetDouble(XMLNames.Bus_VehicleLength).SI(Unit.SI.Milli.Meter).Cast<Meter>() - : null; + #region Overrides of XMLDeclarationVehicleDataProviderV10 - public override Meter Width => - ElementExists(XMLNames.Bus_VehicleWidth) - ? GetDouble(XMLNames.Bus_VehicleWidth).SI(Unit.SI.Milli.Meter).Cast<Meter>() - : null; + public override bool ZeroEmissionVehicle => GetBool(XMLNames.Vehicle_ZeroEmissionVehicle); - public override Meter EntranceHeight => - ElementExists(XMLNames.Bus_EntranceHeight) - ? GetDouble(XMLNames.Bus_EntranceHeight).SI(Unit.SI.Milli.Meter).Cast<Meter>() - : null; + public override bool VocationalVehicle => GetBool(XMLNames.Vehicle_VocationalVehicle); - public override ConsumerTechnology? DoorDriveTechnology => - ElementExists(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology) - ? ConsumerTechnologyHelper.Parse(GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)) - : (ConsumerTechnology?)null; + public override VehicleCategory VehicleCategory => + VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration)); - public override VehicleDeclarationType VehicleDeclarationType => VehicleDeclarationTypeHelper.Parse(GetString(XMLNames.Bus_VehicleDeclarationType)); + public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>(); + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>(); - public override XmlElement ADASNode => _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement); + public override bool Articulated => GetBool(XMLNames.Vehicle_Articulated); + public override LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeCategory).ParseEnum<LegislativeClass>(); + //get { return GetString("LegislativeCategory").ParseEnum<LegislativeClass>(); } - public override XmlElement ComponentNode - { - get - { - if (ExemptedVehicle) - return null; + public override TankSystem? TankSystem => ElementExists(XMLNames.Vehicle_NgTankSystem) + ? GetString(XMLNames.Vehicle_NgTankSystem).ParseEnum<TankSystem>() + : (TankSystem?) null; + #endregion - return _componentNode ?? (_componentNode = GetNode(XMLNames.Vehicle_Components, required:false) as XmlElement); - } - } + #region Overrides of XMLDeclarationVehicleDataProviderV20 + public override bool? SleeperCab => GetBool(XMLNames.Vehicle_SleeperCab); - public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS - { - get - { + public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS { + get { if (ADASNode == null) return null; return _adas ?? (_adas = ADASReader.ADASInputData); } } - - - public override IVehicleComponentsDeclaration Components - { - get - { - if (ComponentNode == null) - return null; - - if(_components == null) - _components = ComponentReader.ComponentInputData; - - if (_components.BusAuxiliaries == null && _components.AirdragInputData == null) - return null; - - return _components; - } - } - - public override XmlElement PTONode => null; - - - #region Overrides of AbstractXMLResource - - protected override DataSourceType SourceType => DataSourceType.XMLFile; - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - #endregion - } - - // --------------------------------------------------------------------------------------- - - public class XMLDeclarationExemptedInterimStageBusDataProviderV28 : XMLDeclarationVehicleDataProviderV20 - { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; - public new const string XSD_TYPE = "ExemptedInterimStageInputType"; - public new static readonly string QUALIFIED_XSD_TYPE = - XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public override Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits + => ElementExists(XMLNames.ElectricMotorTorqueLimits) ? ReadElectricMotorTorqueLimits() : null; - public XMLDeclarationExemptedInterimStageBusDataProviderV28(IXMLDeclarationJobInputData jobData, - XmlNode xmlNode, string sourceFile) - : base(jobData, xmlNode, sourceFile) {} - - - public override string Model => - ElementExists(XMLNames.Component_Model) - ? GetString(XMLNames.Component_Model) : null; - - public override LegislativeClass? LegislativeClass => - ElementExists(XMLNames.Bus_LegislativeCategory) - ? GetString(XMLNames.Bus_LegislativeCategory).ParseEnum<LegislativeClass>() - : (LegislativeClass?)null; - - public override Kilogram CurbMassChassis => - ElementExists(XMLNames.Bus_CorrectedActualMass) - ? GetDouble(XMLNames.Bus_CorrectedActualMass).SI<Kilogram>() - : null; - - public override Kilogram GrossVehicleMassRating => - ElementExists(XMLNames.Vehicle_TPMLM) - ? GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>() - : null; - - public override RegistrationClass? RegisteredClass => - ElementExists(XMLNames.Vehicle_RegisteredClass) - ? RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First() - : null; - - public override int? NumberPassengerSeatsLowerDeck + private Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ReadElectricMotorTorqueLimits() { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsLowerDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengerSeatsLowerDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } + var torqueLimitNodes = GetNodes(XMLNames.ElectricMotorTorqueLimits); + var motorTorqueLimits = new Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>>(); - public override int? NumberPassengerSeatsUpperDeck - { - get + foreach (XmlNode torqueLimitNode in torqueLimitNodes) { - if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsUpperDeck)) + var electricMachineNodes = GetNodes(XMLNames.ElectricMotorTorqueLimit_ElectricMachine, torqueLimitNode); + if (electricMachineNodes == null || electricMachineNodes.Count == 0) return null; - var node = GetNode(XMLNames.Bus_NumberPassengerSeatsUpperDeck); - return XmlConvert.ToInt32(node.InnerText); - } - } + + foreach (XmlNode electricMachineNode in electricMachineNodes) + { + var powertrainPosition = + PowertrainPositionHelper.Parse(PowertrainPositionPrefix + GetString(XMLNames.ElectricMachine_Position, electricMachineNode)); + if (!motorTorqueLimits.ContainsKey(powertrainPosition)) + motorTorqueLimits.Add(powertrainPosition, new List<Tuple<Volt, TableData>>()); - public override int? NumberPassengersStandingLowerDeck - { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengersStandingLowerDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengersStandingLowerDeck); - return XmlConvert.ToInt32(node.InnerText); + var voltageLevelNodes = GetNodes(XMLNames.ElectricMachine_VoltageLevel, electricMachineNode); + foreach (XmlNode voltageLevelNode in voltageLevelNodes) + { + var voltageLevel = ReadVoltageLevelNode(voltageLevelNode); + motorTorqueLimits[powertrainPosition].Add(voltageLevel); + } + } } + + return motorTorqueLimits.IsNullOrEmpty() ? null : motorTorqueLimits; } - public override int? NumberPassengersStandingUpperDeck + private Tuple<Volt, TableData> ReadVoltageLevelNode(XmlNode voltageLevelNode) { - get - { - if (!ElementExists(XMLNames.Bus_NumberPassengersStandingUpperDeck)) - return null; - var node = GetNode(XMLNames.Bus_NumberPassengersStandingUpperDeck); - return XmlConvert.ToInt32(node.InnerText); - } + var voltage = GetString(XMLNames.VoltageLevel_Voltage, voltageLevelNode).ToDouble().SI<Volt>(); + var entries = voltageLevelNode.SelectNodes(XMLHelper.QueryLocalName(XMLNames.MaxTorqueCurve, XMLNames.MaxTorqueCurve_Entry)); + var mapping = new Dictionary<string, string> { + { XMLNames.MaxTorqueCurve_OutShaftSpeed, XMLNames.MaxTorqueCurve_OutShaftSpeed}, + { XMLNames.MaxTorqueCurve_MaxTorque, XMLNames.MaxTorqueCurve_MaxTorque }, + { XMLNames.MaxTorqueCurve_MinTorque, XMLNames.MaxTorqueCurve_MinTorque} + }; + var maxTorqueCurve = XMLHelper.ReadTableData(mapping, entries); + return new Tuple<Volt, TableData>(voltage, maxTorqueCurve); } + } - public override VehicleCode? VehicleCode => - ElementExists(XMLNames.Vehicle_BodyworkCode) - ? GetString(XMLNames.Vehicle_BodyworkCode).ParseEnum<VehicleCode>() - : (VehicleCode?)null; - - public override bool? LowEntry => - ElementExists(XMLNames.Bus_LowEntry) - ? GetBool(XMLNames.Bus_LowEntry) - : (bool?)null; - - public override Meter Height => - ElementExists(XMLNames.Bus_HeighIntegratedBody) - ? GetDouble(XMLNames.Bus_HeighIntegratedBody).SI(Unit.SI.Milli.Meter).Cast<Meter>() - : null; - - public override XmlElement PTONode => null; - - public override XmlElement ComponentNode => null; - - public override IVehicleComponentsDeclaration Components => null; - - - public override bool ExemptedVehicle => true; - - #region Overrides of AbstractXMLResource - - protected override XNamespace SchemaNamespace => NAMESPACE_URI; - - protected override DataSourceType SourceType => DataSourceType.XMLFile; - - #endregion - } -} + // --------------------------------------------------------------------------------------- + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..40cf76cbc845c6e77bab131449927be9eb071130 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMachinesDeclarationInputDataProvider.cs @@ -0,0 +1,138 @@ +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using Castle.Core.Internal; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider +{ + public class XMLElectricMachinesDeclarationInputDataProvider : AbstractCommonComponentType, IXMLElectricMachinesDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "ElectricMachineType"; + public const string XSD_GEN_TYPE = "ElectricMachineGENType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_GEN_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_GEN_TYPE); + + private IXMLDeclarationVehicleData _vehicle; + private IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> _entries; + + public XMLElectricMachinesDeclarationInputDataProvider( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + _vehicle = vehicle; + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IElectricMachinesDeclarationInputData + + public virtual IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> Entries => + _entries ?? (_entries = GetEntries()); + + #endregion + + private List<ElectricMachineEntry<IElectricMotorDeclarationInputData>> GetEntries() + { + var machineEntry = new ElectricMachineEntry<IElectricMotorDeclarationInputData> { + Position = PowertrainPositionHelper.Parse(((AbstractXMLVehicleDataProviderV24)_vehicle).PowertrainPositionPrefix + + GetString(XMLNames.ElectricMachine_PowertrainPosition)), + Count = XmlConvert.ToInt32(GetString(XMLNames.ElectricMachine_Count)), + ElectricMachine = ElectricMachineSystemReader.CreateElectricMachineSystem(GetNode(XMLNames.ElectricMachineSystem)), + }; + + if (ElementExists("ADC")) + machineEntry.ADC = ElectricMachineSystemReader.ADCInputData; + + if(ElementExists(XMLNames.ElectricMachine_P2_5GearRatios)) + SetGearRatios(machineEntry); + + return new List<ElectricMachineEntry<IElectricMotorDeclarationInputData>>{machineEntry}; + } + + private void SetGearRatios(ElectricMachineEntry<IElectricMotorDeclarationInputData> machineEntry) + { + var gearRatios = GetNode(XMLNames.ElectricMachine_P2_5GearRatios, null, false); + if (gearRatios != null) { + var gears = GetNodes(XMLNames.GearRatio_Ratio, gearRatios); + if (gears.IsNullOrEmpty()) + return; + + machineEntry.RatioPerGear = new double[gears.Count]; + for (int i = 0; i < gears.Count; i++) { + machineEntry.RatioPerGear[i] = XmlConvert.ToDouble(gears[i].InnerText); + } + } + } + + + + + + #region Implementation of IXMLElectricMachinesDeclarationInputData + + public IXMLElectricMachineSystemReader ElectricMachineSystemReader { protected get; set; } + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } + + public class XMLElectricMachinesDeclarationData : IElectricMachinesDeclarationInputData + { + private readonly IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> _entries; + + public XMLElectricMachinesDeclarationData( + IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> entries) + { + _entries = entries; + } + + #region Implementation of IElectricMachinesDeclarationInputData + + public IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> Entries => _entries; + + #endregion + } + + public class XMLADCDeclarationInputDataV23 : AbstractCommonComponentType, IXMLADCDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public const string XSD_TYPE = "ADCDataDeclarationType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLADCDeclarationInputDataV23(XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + + #region Implementation of IADCDeclarationInputData + + public double Ratio => GetDouble(XMLNames.ADC_Ratio); + + public TableData LossMap => ReadTableData(XMLNames.ADC_TorqueLossMap, XMLNames.ADC_TorqueLossMap_Entry, + new Dictionary<string, string> { + { XMLNames.ADC_TorqueLossMap_InputSpeed, XMLNames.ADC_TorqueLossMap_InputSpeed }, + { XMLNames.ADC_TorqueLossMap_InputTorque, XMLNames.ADC_TorqueLossMap_InputTorque }, + { XMLNames.ADC_TorqueLossMap_TorqueLoss, XMLNames.ADC_TorqueLossMap_TorqueLoss }, + }); + + #endregion + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..cd9cd3e799c1bf1d76b467ff2c5d7d5cf86719ca --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricMotorDeclarationInputDataProvider.cs @@ -0,0 +1,468 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using Castle.Core.Internal; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Common; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider +{ + public abstract class XMLCommonElectricMotorDeclarationInputData : AbstractCommonComponentType, IComponentInputData, + IElectricMotorVoltageLevel + { + + protected XMLCommonElectricMotorDeclarationInputData(XmlNode node, string source) : base(node, source) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IPowerRatingInputData + + public virtual ElectricMachineType ElectricMachineType => + GetString(XMLNames.ElectricMachine_ElectricMachineType).ParseEnum<ElectricMachineType>(); + + public virtual Watt R85RatedPower => + GetDouble(XMLNames.ElectricMachine_R85RatedPower).SI<Watt>(); + + public virtual KilogramSquareMeter Inertia => + GetDouble(XMLNames.ElectricMachine_RotationalInertia).SI<KilogramSquareMeter>(); + + public virtual NewtonMeter ContinuousTorque => + GetDouble(XMLNames.ElectricMachine_ContinuousTorque).SI<NewtonMeter>(); + + public virtual PerSecond ContinuousTorqueSpeed => + GetDouble(XMLNames.ElectricMachine_TestSpeedContinuousTorque).SI<PerSecond>(); + + public virtual NewtonMeter OverloadTorque => + GetDouble(XMLNames.ElectricMachine_OverloadTorque).SI<NewtonMeter>(); + + public virtual PerSecond OverloadTestSpeed => + GetDouble(XMLNames.ElectricMachine_TestSpeedOverloadTorque).SI<PerSecond>(); + + public virtual Second OverloadTime => + GetDouble(XMLNames.ElectricMachine_OverloadDuration).SI<Second>(); + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace { get; } + protected override DataSourceType SourceType { get; } + + #endregion + + #region Implementation of IElectricMotorVoltageLevel + + public virtual Volt VoltageLevel => ElementExists(XMLNames.VoltageLevel_Voltage) ? + GetDouble(XMLNames.VoltageLevel_Voltage).SI<Volt>() : null ; + + public virtual TableData FullLoadCurve => ReadFullLoadCurve(); + + + public virtual IList<IElectricMotorPowerMap> PowerMap => GetPowerMaps(); + + #endregion + + protected virtual TableData ReadFullLoadCurve() + { + return ReadTableData(XMLNames.MaxTorqueCurve, XMLNames.MaxTorqueCurve_Entry, new Dictionary<string, string> { + { XMLNames.MaxTorqueCurve_OutShaftSpeed, XMLNames.MaxTorqueCurve_OutShaftSpeed }, + { XMLNames.MaxTorqueCurve_MaxTorque, XMLNames.MaxTorqueCurve_MaxTorque }, + { XMLNames.MaxTorqueCurve_MinTorque, XMLNames.MaxTorqueCurve_MinTorque } + }); + } + + protected virtual TableData ReadDragCurve() + { + return ReadTableData(XMLNames.DragCurve, XMLNames.DragCurve_Entry, new Dictionary<string, string> + { + {XMLNames.DragCurve_OutShaftSpeed, XMLNames.DragCurve_OutShaftSpeed}, + {XMLNames.DragCurve_DragTorque, XMLNames.DragCurve_DragTorque} + }); + } + + protected virtual TableData ReadConditioning() + { + return ReadTableData(XMLNames.Conditioning, XMLNames.Conditioning_Entry, new Dictionary<string, string> { + { XMLNames.Conditioning_CoolantTempInlet, XMLNames.Conditioning_CoolantTempInlet }, + { XMLNames.Conditioning_CoolingPower, XMLNames.Conditioning_CoolingPower } + }); + } + + protected virtual IList<IElectricMotorVoltageLevel> GetVoltageLevels() + { + var voltageLevelNodes = GetNodes(XMLNames.ElectricMachine_VoltageLevel, BaseNode); + if (voltageLevelNodes.IsNullOrEmpty()) + return null; + + var voltageLevels = new List<IElectricMotorVoltageLevel>(); + + foreach (XmlNode voltageLevelNode in voltageLevelNodes) { + voltageLevels.Add(new XMLElectricMotorIEPCIInputDataProviderV23(null, voltageLevelNode, null)); + } + + return voltageLevels; + } + + + private IList<IElectricMotorPowerMap> GetPowerMaps() + { + var powerMapNodes = GetNodes(XMLNames.PowerMap); + if (powerMapNodes.IsNullOrEmpty()) + return null; + + var powerMaps = new List<IElectricMotorPowerMap>(); + foreach (XmlNode powerMapNode in powerMapNodes) + { + powerMaps.Add(new ElectricMotorPowerMap(powerMapNode)); + } + + return powerMaps; + } + + + public class ElectricMotorPowerMap : AbstractXMLType, IElectricMotorPowerMap + { + private Dictionary<string, string> powerMapMapping = new Dictionary<string, string> { + { XMLNames.PowerMap_OutShaftSpeed, XMLNames.PowerMap_OutShaftSpeed }, + { XMLNames.PowerMap_Torque, XMLNames.PowerMap_Torque }, + { XMLNames.PowerMap_ElectricPower, XMLNames.PowerMap_ElectricPower } + }; + + public ElectricMotorPowerMap(XmlNode xmlNode) : base(xmlNode) { } + + #region Implementation of IElectricMotorPowerMap + + public virtual int Gear => Convert.ToInt32(GetAttribute(BaseNode, XMLNames.PowerMap_Gear)); + public virtual TableData PowerMap => ReadPowerMap(); + + private TableData ReadPowerMap() + { + var powerMapEntryNodes = GetNodes(XMLNames.PowerMap_Entry); + return XMLHelper.ReadTableData(powerMapMapping, powerMapEntryNodes); + } + + #endregion + } + } + + + // --------------------------------------------------------------------------------------- + + + public class XMLElectricMotorDeclarationInputDataProviderV23 : XMLCommonElectricMotorDeclarationInputData, + IXMLElectricMotorDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public const string XSD_TYPE = "ElectricMachineSystemMeasuredDataDeclarationType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IList<IElectricMotorVoltageLevel> _voltageLevels; + + public XMLElectricMotorDeclarationInputDataProviderV23( + XmlNode componentNode, string sourceFile) : base(componentNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IElectricMotorDeclarationInputData + + public virtual bool DcDcConverterIncluded => GetBool(XMLNames.ElectricMachine_DcDcConverterIncluded); + + public virtual string IHPCType => GetString(XMLNames.ElectricMachine_IHPCType); + + public virtual IList<IElectricMotorVoltageLevel> VoltageLevels => + _voltageLevels ?? (_voltageLevels = GetVoltageLevels()); + + public virtual TableData DragCurve => ReadDragCurve(); + + + public virtual TableData Conditioning => ElementExists(XMLNames.Conditioning) + ? ReadConditioning() : null; + + public virtual double OverloadRecoveryFactor { get; } + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMotorSystemStandardDeclarationInputDataProviderV23 : + XMLElectricMotorDeclarationInputDataProviderV23 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new const string XSD_TYPE = "ElectricMachineSystemStandardValuesDataDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public XMLElectricMotorSystemStandardDeclarationInputDataProviderV23(XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) { } + + + #region Overrides of XMLElectricMotorDeclarationInputDataProviderV23 + + public override TableData Conditioning => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMotorIhpcDeclarationInputDataProviderV23 : XMLElectricMotorDeclarationInputDataProviderV23 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new const string XSD_TYPE = "ElectricMachineSystemIHPCMeasuredDataDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLElectricMotorIhpcDeclarationInputDataProviderV23(XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMotorIEPCIInputDataProviderV23 : XMLCommonElectricMotorDeclarationInputData, IXMLIEPCInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public const string XSD_TYPE = "IEPCMeasuredDataDeclarationType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IXMLDeclarationVehicleData _vehicle; + private IList<IElectricMotorVoltageLevel> _voltageLevels; + private IList<IGearEntry> _gears; + private IList<IDragCurve> _dragCurves; + + + public XMLElectricMotorIEPCIInputDataProviderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + _vehicle = vehicle; + SourceType = DataSourceType.XMLEmbedded; + ValidateGearCount(); + } + + #region Overrides of AbstractCommonComponentType + + public override CertificationMethod CertificationMethod + { + get + { + var certMethod = GetString(XMLNames.Component_Gearbox_CertificationMethod, required: false) ?? + GetString(XMLNames.Component_CertificationMethod, required: false); + + if (certMethod != null) { + switch (certMethod) { + case "Measured for complete component": + case "Measured for EM and standard values for other components": + return CertificationMethod.Measured; + case "Standard values for all components": + return CertificationMethod.StandardValues; + } + } + + return certMethod != null + ? EnumHelper.ParseEnum<CertificationMethod>(certMethod) + : CertificationMethod.Measured; + } + } + + #endregion + + + #region Implementation of IIEPCDeclarationInputData + + public virtual bool DifferentialIncluded => GetBool(XMLNames.IEPC_DifferentialIncluded); + + public virtual bool DesignTypeWheelMotor => GetBool(XMLNames.IEPC_DesignTypeWheelMotor); + + public virtual int? NrOfDesignTypeWheelMotorMeasured => ElementExists(XMLNames.IEPC_NrOfDesignTypeWheelMotorMeasured) ? + (int?)Convert.ToInt32(GetString(XMLNames.IEPC_NrOfDesignTypeWheelMotorMeasured)) : null; + + public virtual IList<IGearEntry> Gears => + _gears ?? (_gears = GetGearEntries()); + + public virtual IList<IElectricMotorVoltageLevel> VoltageLevels => + _voltageLevels ?? (_voltageLevels = GetVoltageLevels()); + + public IList<IDragCurve> DragCurves => _dragCurves ?? (_dragCurves = GetDragCurves()); + + public virtual TableData Conditioning => ElementExists(XMLNames.Conditioning) + ? ReadConditioning() : null; + + #endregion + + protected virtual void ValidateGearCount() + { + if (Gears == null) + return; + + var currentGears = new Dictionary<int, bool>(); + foreach (var gear in Gears) { + currentGears.Add(gear.GearNumber, false); + } + + foreach (var voltageLevel in VoltageLevels) { + foreach (var powerMap in voltageLevel.PowerMap) { + if(powerMap.Gear <= 0) + continue; + + if (currentGears.ContainsKey(powerMap.Gear)) + currentGears[powerMap.Gear] = true; + else + throw new ArgumentException("The PowerMaps contains a gear which was not specified under gears"); + } + if(AnyMissingGear(currentGears)) + throw new ArgumentException("The PowerMaps contains a gear which was not specified under gears"); + } + + foreach (var dragCurve in DragCurves) { + if(dragCurve.Gear == null) + continue; + + if (currentGears.ContainsKey((int)dragCurve.Gear)) + currentGears[(int)dragCurve.Gear] = true; + else + throw new ArgumentException("The DragCurve contains a gear which was not specified under gears"); + } + + if (AnyMissingGear(currentGears)) + throw new ArgumentException("The DragCurve contains a gear which was not specified under gears"); + } + + private bool AnyMissingGear(Dictionary<int, bool> foundedGears) + { + var keys = foundedGears.Keys.ToList(); + foreach (var key in keys) { + if(!foundedGears[key]) + return true; + foundedGears[key] = false; + } + + return false; + } + + private IList<IDragCurve> GetDragCurves() + { + var dragCurveNodes = GetNodes(XMLNames.DragCurve, BaseNode); + if (dragCurveNodes.IsNullOrEmpty()) + return null; + + var dragCurves = new List<IDragCurve>(); + foreach (XmlNode dragCurve in dragCurveNodes) { + dragCurves.Add(new DragCurveEntry(dragCurve)); + } + return dragCurves; + } + + + private IList<IGearEntry> GetGearEntries() + { + var gearNodes = GetNodes(XMLNames.Gear_EntryName); + if (gearNodes.IsNullOrEmpty()) + return null; + + var gears = new List<IGearEntry>(); + foreach (XmlNode gearNode in gearNodes) { + gears.Add(new GearEntry(gearNode)); + } + return gears; + } + + public class GearEntry : AbstractXMLType, IGearEntry + { + public GearEntry(XmlNode node) : base(node) { } + + #region Implementation of IGearEntry + + public virtual int GearNumber => Convert.ToInt32(GetAttribute(BaseNode, XMLNames.Gear_GearNumber_Attr)); + + public virtual double Ratio => GetDouble(XMLNames.Gear_Ratio); + + public virtual NewtonMeter MaxOutputShaftTorque => ElementExists(XMLNames.Gear_MaxOutputShaftTorque) + ? GetDouble(XMLNames.Gear_MaxOutputShaftTorque).SI<NewtonMeter>() + : null; + + public virtual PerSecond MaxOutputShaftSpeed => ElementExists(XMLNames.Gear_MaxOutputShaftSpeed) + ? GetDouble(XMLNames.Gear_MaxOutputShaftSpeed).SI<PerSecond>() + : null; + + #endregion + } + + public class DragCurveEntry : AbstractXMLType, IDragCurve + { + private Dictionary<string, string> dargCurveMapping = new Dictionary<string, string> { + {XMLNames.DragCurve_OutShaftSpeed, XMLNames.DragCurve_OutShaftSpeed }, + {XMLNames.DragCurve_DragTorque, XMLNames.DragCurve_DragTorque } + }; + + public DragCurveEntry(XmlNode node) : base(node) { } + + #region Implementation of IDragCurve + + public int? Gear + { + get + { + var gear = GetAttribute(BaseNode, XMLNames.DragCurve_Gear); + return gear != null ? Convert.ToInt32(gear) : (int?)null; + } + } + + public TableData DragCurve + { + get + { + var dragCurveEntryNodes = GetNodes(XMLNames.DragCurve_Entry); + return XMLHelper.ReadTableData(dargCurveMapping, dragCurveEntryNodes); + } + } + + #endregion + } + + + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } + + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMotorIepciStandardInputDataProviderV23 : XMLElectricMotorIEPCIInputDataProviderV23 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new const string XSD_TYPE = "IEPCStandardValuesDataDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLElectricMotorIepciStandardInputDataProviderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(vehicle, componentNode, sourceFile) { } + + protected override void ValidateGearCount() + { + return; + } + + #region Overrides of XMLElectricMotorIEPCIInputDataProviderV23 + + public override TableData Conditioning => null; + + #endregion + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..745d4549541d54165c5fa1edbb724bf901432023 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/XMLElectricStorageSystemDeclarationInputData.cs @@ -0,0 +1,196 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider +{ + public class XMLElectricStorageSystemDeclarationInputData : AbstractCommonComponentType, + IXMLElectricStorageSystemDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "ElectricEnergyStorageType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IList<IElectricStorageDeclarationInputData> _electricStorageElements; + private IXMLDeclarationVehicleData _vehicle; + + public XMLElectricStorageSystemDeclarationInputData( + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + _vehicle = vehicle; + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IElectricStorageSystemDeclarationInputData + + public virtual IList<IElectricStorageDeclarationInputData> ElectricStorageElements => + _electricStorageElements ?? (_electricStorageElements = GetElectricStorages()); + + #endregion + + private IList<IElectricStorageDeclarationInputData> GetElectricStorages() + { + var electricStorages = new List<IElectricStorageDeclarationInputData>(); + if (ElementExists(XMLNames.ElectricEnergyStorage_Capacitor)) { + var capacitor = GetNode(XMLNames.ElectricEnergyStorage_Capacitor); + electricStorages.Add(new XMLElectricStorageDeclaration { + REESSPack = StorageTypeReader.CreateREESSInputData(capacitor, REESSType.SuperCap) + }); + }else if (ElementExists(XMLNames.ElectricEnergyStorage_Battery)) { + var batteries = GetNodes(XMLNames.ElectricEnergyStorage_Battery); + foreach (XmlNode battery in batteries) + { + electricStorages.Add(new XMLElectricStorageDeclaration { + REESSPack = StorageTypeReader.CreateREESSInputData(battery, REESSType.Battery), + StringId = XmlConvert.ToInt32(GetString(XMLNames.Battery_StringID, battery)) + }); + } + } + + return electricStorages.Any() ? electricStorages : null; + } + + #region Implementation of IXMLElectricStorageSystemDeclarationInputData + + public virtual IXMLREESSReader StorageTypeReader { protected get; set; } + + #endregion + + #region Implementation of IXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + + public class XMLElectricStorageDeclaration : IElectricStorageDeclarationInputData + { + #region Implementation of IElectricStorageDeclarationInputData + public IREESSPackInputData REESSPack { get; set; } + public int Count { get; set; } + public int StringId { get; set; } + + #endregion + } + } + + // --------------------------------------------------------------------------------------- + + public class XMLBatteryPackDeclarationDeclarationInputData : AbstractCommonComponentType, + IXMLBatteryPackDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "REESSBatteryType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLBatteryPackDeclarationDeclarationInputData(XmlNode componentNode, string sourceFile) + : base(componentNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IREESSPackInputData + + public REESSType StorageType => REESSType.Battery; + + #endregion + + #region Implementation of IBatteryPackDeclarationInputData + + public virtual double? MinSOC => + ElementExists(XMLNames.Battery_SOCmin) ? GetDouble(XMLNames.Battery_SOCmin) : (double?)null; + + public virtual double? MaxSOC => + ElementExists(XMLNames.Battery_SOCmax) ? GetDouble(XMLNames.Battery_SOCmax) : (double?)null; + + public virtual BatteryType BatteryType => GetString(XMLNames.REESS_BatteryType).ParseEnum<BatteryType>(); + public virtual AmpereSecond Capacity => GetDouble(XMLNames.REESS_RatedCapacity).SI<AmpereSecond>() * 3600; + public virtual bool ConnectorsSubsystemsIncluded => GetBool(XMLNames.REESS_ConnectorsSubsystemsIncluded); + public virtual bool JunctionboxIncluded => GetBool(XMLNames.REESS_JunctionboxIncluded); + + public virtual Kelvin TestingTemperature => + ElementExists(XMLNames.REESS_TestingTemperature) + ? GetDouble(XMLNames.REESS_TestingTemperature).DegCelsiusToKelvin() : null; + + public virtual TableData InternalResistanceCurve => ReadTableData(XMLNames.REESS_InternalResistanceCurve, XMLNames.REESS_MapEntry, + new Dictionary<string, string> { + {XMLNames.REESS_InternalResistanceCurve_SoC, XMLNames.REESS_InternalResistanceCurve_SoC}, + {XMLNames.REESS_InternalResistanceCurve_R2, XMLNames.REESS_InternalResistanceCurve_R2}, + {XMLNames.REESS_InternalResistanceCurve_R10, XMLNames.REESS_InternalResistanceCurve_R10}, + {XMLNames.REESS_InternalResistanceCurve_R20, XMLNames.REESS_InternalResistanceCurve_R20}, + {XMLNames.REESS_InternalResistanceCurve_R120, XMLNames.REESS_InternalResistanceCurve_R120} + }); + + public virtual TableData VoltageCurve => ReadTableData(XMLNames.REESS_OCV, XMLNames.REESS_MapEntry, + new Dictionary<string, string> { + {XMLNames.REESS_OCV_SoC, XMLNames.REESS_OCV_SoC}, + {XMLNames.REESS_OCV_OCV, XMLNames.REESS_OCV_OCV} + }); + + public virtual TableData MaxCurrentMap => ReadTableData(XMLNames.REESS_CurrentLimits, XMLNames.REESS_MapEntry, + new Dictionary<string, string> { + {XMLNames.REESS_CurrentLimits_SoC, XMLNames.REESS_CurrentLimits_SoC}, + {XMLNames.REESS_CurrentLimits_MaxChargingCurrent, XMLNames.REESS_CurrentLimits_MaxChargingCurrent}, + {XMLNames.REESS_CurrentLimits_MaxDischargingCurrent, XMLNames.REESS_CurrentLimits_MaxDischargingCurrent} + }); + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLSuperCapDeclarationInputData : AbstractCommonComponentType, IXMLSuperCapDeclarationInputData + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "REESSCapacitorType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLSuperCapDeclarationInputData(XmlNode componentNode, string sourceFile) : base(componentNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + } + + #region Implementation of IREESSPackInputData + + public REESSType StorageType => REESSType.SuperCap; + + #endregion + + #region Implementation of ISuperCapDeclarationInputData + + public Farad Capacity => GetDouble(XMLNames.Capacitor_Capacitance).SI<Farad>(); + public Ohm InternalResistance => GetDouble(XMLNames.Capacitor_InternalResistance).SI<Ohm>() / 1000; + public Volt MinVoltage => GetDouble(XMLNames.Capacitor_MinVoltage).SI<Volt>(); + public Volt MaxVoltage => GetDouble(XMLNames.Capacitor_MaxVoltage).SI<Volt>(); + public Ampere MaxCurrentCharge => GetDouble(XMLNames.Capacitor_MaxChargingCurrent).SI<Ampere>(); + public Ampere MaxCurrentDischarge => GetDouble(XMLNames.Capacitor_MaxDischargingCurrent).SI<Ampere>(); + + public Kelvin TestingTemperature => + ElementExists(XMLNames.REESS_TestingTemperature) + ? GetDouble(XMLNames.REESS_TestingTemperature).DegCelsiusToKelvin() : null; + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + protected override DataSourceType SourceType { get; } + + #endregion + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..11204f01839578431c2017c4d3239517e9271415 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationCompletedBusVehicleDataProvider.cs @@ -0,0 +1,231 @@ +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 +{ + + public abstract class AbstractXMLDeclarationCompletedBusDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public AbstractXMLDeclarationCompletedBusDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + public override string Model { + get { + if (BaseNode.LocalName == XMLNames.Component_Vehicle) { + return BaseNode.SelectSingleNode($"./*[local-name()='{XMLNames.Component_Model}']")?.InnerText; + } + return ElementExists(new[] { XMLNames.Component_Vehicle, XMLNames.Component_Model }) + ? GetString(new[] { XMLNames.Component_Vehicle, XMLNames.Component_Model }) : null; + } + } + + public override LegislativeClass? LegislativeClass => + ElementExists(XMLNames.Vehicle_LegislativeCategory) + ? GetString(XMLNames.Vehicle_LegislativeCategory).ParseEnum<LegislativeClass>() + : (LegislativeClass?)null; + + public override Kilogram CurbMassChassis => + ElementExists(XMLNames.CorrectedActualMass) + ? GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>() + : null; + + public override Kilogram GrossVehicleMassRating => + ElementExists(XMLNames.Vehicle_TPMLM) + ? GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>() + : null; + + public override bool? AirdragModifiedMultistep => + ElementExists(XMLNames.Bus_AirdragModifiedMultistep) + ? GetBool(XMLNames.Bus_AirdragModifiedMultistep) + : (bool?)null; + + public override RegistrationClass? RegisteredClass => + ElementExists(XMLNames.Vehicle_RegisteredClass) + ? RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First() + : null; + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)null; + + + public override int? NumberPassengerSeatsLowerDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsLowerDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengerSeatsLowerDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int? NumberPassengerSeatsUpperDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsUpperDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengerSeatsUpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int? NumberPassengersStandingLowerDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengersStandingLowerDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengersStandingLowerDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int? NumberPassengersStandingUpperDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengersStandingUpperDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengersStandingUpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + + + public override VehicleCode? VehicleCode => + ElementExists(XMLNames.Vehicle_BodyworkCode) + ? GetString(XMLNames.Vehicle_BodyworkCode).ParseEnum<VehicleCode>() + : (VehicleCode?)null; + + public override bool? LowEntry => + ElementExists(XMLNames.Bus_LowEntry) + ? GetBool(XMLNames.Bus_LowEntry) + : (bool?)null; + + public override Meter Height => + ElementExists(XMLNames.Bus_HeightIntegratedBody) + ? GetDouble(XMLNames.Bus_HeightIntegratedBody).SI(Unit.SI.Milli.Meter).Cast<Meter>() + : null; + + public override Meter Length => + ElementExists(XMLNames.Bus_VehicleLength) + ? GetDouble(XMLNames.Bus_VehicleLength).SI(Unit.SI.Milli.Meter).Cast<Meter>() + : null; + + public override Meter Width => + ElementExists(XMLNames.Bus_VehicleWidth) + ? GetDouble(XMLNames.Bus_VehicleWidth).SI(Unit.SI.Milli.Meter).Cast<Meter>() + : null; + + public override Meter EntranceHeight => + ElementExists(XMLNames.Bus_EntranceHeight) + ? GetDouble(XMLNames.Bus_EntranceHeight).SI(Unit.SI.Milli.Meter).Cast<Meter>() + : null; + + public override ConsumerTechnology? DoorDriveTechnology => + ElementExists(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology) + ? ConsumerTechnologyHelper.Parse(GetString(XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology)) + : (ConsumerTechnology?)null; + + public override VehicleDeclarationType VehicleDeclarationType => VehicleDeclarationTypeHelper.Parse(GetString(XMLNames.Bus_VehicleDeclarationType)); + + + public override XmlElement ADASNode => _adasNode ?? (_adasNode = GetNode(XMLNames.Vehicle_ADAS, required: false) as XmlElement); + + + public override XmlElement ComponentNode { + get { + if (ExemptedVehicle) + return null; + + return _componentNode ?? (_componentNode = GetNode(XMLNames.Vehicle_Components, required: false) as XmlElement); + } + } + + + public override IVehicleComponentsDeclaration Components { + get { + if (ComponentNode == null) + return null; + + if (_components == null) + _components = ComponentReader.ComponentInputData; + + if (_components.BusAuxiliaries == null && _components.AirdragInputData == null) + return null; + + return _components; + } + } + + public override XmlElement PTONode => null; + + + #region Overrides of AbstractXMLResource + + protected override DataSourceType SourceType => DataSourceType.XMLFile; + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + #endregion + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationConventionalCompletedBusDataProviderV24 : AbstractXMLDeclarationCompletedBusDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_Conventional_CompletedBusDeclarationType"; + + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationConventionalCompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevCompletedBusDataProviderV24 : AbstractXMLDeclarationCompletedBusDataProviderV24 + { + public new const string XSD_TYPE = "Vehicle_HEV_CompletedBusDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHevCompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPeVompletedBusDataProviderV24 : AbstractXMLDeclarationCompletedBusDataProviderV24 + { + public new const string XSD_TYPE = "Vehicle_PEV_CompletedBusDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationPeVompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIepcCompletedBusDataProviderV24 : AbstractXMLDeclarationCompletedBusDataProviderV24 + { + public new const string XSD_TYPE = "Vehicle_IEPC_CompletedBusDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationIepcCompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..7c0fa3eaa48be948c1fa0d6e4163fd96d32af9d8 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationExemptedVehicleDataProvider.cs @@ -0,0 +1,237 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 +{ + public abstract class AbtractXMLDeclarationExemptedVehicleDataProviderV24 : XMLDeclarationVehicleDataProviderV20 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public AbtractXMLDeclarationExemptedVehicleDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + + } + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + protected override DataSourceType SourceType { get; } + + #endregion + + public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusPrimaryVehicle; + + public override bool ExemptedVehicle => true; + + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); + + public override LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeCategory)?.ParseEnum<LegislativeClass>(); + + + public override IList<ITorqueLimitInputData> TorqueLimits => new List<ITorqueLimitInputData>(); + + public override PerSecond EngineIdleSpeed => null; + + public override bool VocationalVehicle => false; + + public override bool? SleeperCab => false; + + public override TankSystem? TankSystem => null; + + public override IAdvancedDriverAssistantSystemDeclarationInputData ADAS => null; + + public override bool ZeroEmissionVehicle => XmlConvert.ToBoolean(GetString(XMLNames.Vehicle_ZeroEmissionVehicle)); + + public override bool HybridElectricHDV => false; + + public override bool DualFuelVehicle => false; + + public override Watt MaxNetPower1 => GetDouble("SumNetPower").SI<Watt>(); + + public override Watt MaxNetPower2 => null; + + public override string ExemptedTechnology => GetString("Technology"); + + public override IVehicleComponentsDeclaration Components => null; + + public override XmlElement ComponentNode => null; + + public override XmlElement PTONode => null; + + public override XmlElement ADASNode => null; + + public override AngledriveType AngledriveType => AngledriveType.None; + + public override RetarderType RetarderType => RetarderType.None; + + public override double RetarderRatio => 0; + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + } + + // --------------------------------------------------------------------------------------- + public class XMLDeclarationExemptedHeavyLorryDataProviderV24 : AbtractXMLDeclarationExemptedVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Vehicle_Exempted_HeavyLorryDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationExemptedHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationExemptedMediumLorryDataProviderV24 : AbtractXMLDeclarationExemptedVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Vehicle_Exempted_MediumLorryDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationExemptedMediumLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationExemptedPrimaryBusDataProviderV24 : AbtractXMLDeclarationExemptedVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Vehicle_Exempted_PrimaryBusDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationExemptedPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationExemptedCompletedBusDataProviderV24 : AbtractXMLDeclarationExemptedVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_Exempted_CompletedBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationExemptedCompletedBusDataProviderV24(IXMLDeclarationJobInputData jobData, + XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + public override string Model => + ElementExists(XMLNames.Component_Model) + ? GetString(XMLNames.Component_Model) : null; + + public override LegislativeClass? LegislativeClass => + ElementExists(XMLNames.Vehicle_LegislativeCategory) + ? GetString(XMLNames.Vehicle_LegislativeCategory).ParseEnum<LegislativeClass>() + : (LegislativeClass?)null; + + public override Kilogram CurbMassChassis => + ElementExists(XMLNames.CorrectedActualMass) + ? GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>() + : null; + + public override Kilogram GrossVehicleMassRating => + ElementExists(XMLNames.Vehicle_TPMLM) + ? GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>() + : null; + + public override RegistrationClass? RegisteredClass => + ElementExists(XMLNames.Vehicle_RegisteredClass) + ? RegistrationClassHelper.Parse(GetString(XMLNames.Vehicle_RegisteredClass)).First() + : null; + + public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusCompletedVehicle; + + public override int? NumberPassengerSeatsLowerDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsLowerDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengerSeatsLowerDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int? NumberPassengerSeatsUpperDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengerSeatsUpperDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengerSeatsUpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + + public override int? NumberPassengersStandingLowerDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengersStandingLowerDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengersStandingLowerDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + public override int? NumberPassengersStandingUpperDeck { + get { + if (!ElementExists(XMLNames.Bus_NumberPassengersStandingUpperDeck)) + return null; + var node = GetNode(XMLNames.Bus_NumberPassengersStandingUpperDeck); + return XmlConvert.ToInt32(node.InnerText); + } + } + + + public override VehicleCode? VehicleCode => + ElementExists(XMLNames.Vehicle_BodyworkCode) + ? GetString(XMLNames.Vehicle_BodyworkCode).ParseEnum<VehicleCode>() + : (VehicleCode?)null; + + public override bool? LowEntry => + ElementExists(XMLNames.Bus_LowEntry) + ? GetBool(XMLNames.Bus_LowEntry) + : (bool?)null; + + public override Meter Height => + ElementExists(XMLNames.Bus_HeightIntegratedBody) + ? GetDouble(XMLNames.Bus_HeightIntegratedBody).SI(Unit.SI.Milli.Meter).Cast<Meter>() + : null; + + public override XmlElement PTONode => null; + + public override XmlElement ComponentNode => null; + + public override IVehicleComponentsDeclaration Components => null; + + + public override bool ExemptedVehicle => true; + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + protected override DataSourceType SourceType => DataSourceType.XMLFile; + + #endregion + } + + // --------------------------------------------------------------------------------------- + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationHeavyLorryVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationHeavyLorryVehicleDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..22c2952d5112733b45e0da7b96b5760a58e7e678 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationHeavyLorryVehicleDataProvider.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 +{ + + public class XMLDeclarationConventionalHeavyLorryDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_Conventional_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationConventionalHeavyLorryDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + public override VehicleCategory VehicleCategory => + VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration)); + + public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>(); + + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>(); + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevPxHeavyLorryDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Px_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of VehicleDataProviderHelper + + public override string PowertrainPositionPrefix => "P"; + + #endregion + + public XMLDeclarationHevPxHeavyLorryDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV20 + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)null; + + #endregion + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override TableData BoostingLimitations + => ElementExists(XMLNames.Vehicle_BoostingLimitation) + ? ReadTableData(XMLNames.Vehicle_BoostingLimitation, XMLNames.BoostingLimitation_Entry, + new Dictionary<string, string> { + {XMLNames.BoostingLimitation_RotationalSpeed, XMLNames.BoostingLimitation_RotationalSpeed}, + {XMLNames.BoostingLimitation_BoostingTorque, XMLNames.BoostingLimitation_BoostingTorque} + }) + : null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevSxHeavyLorryDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Sx_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHevSxHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override TableData BoostingLimitations => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPevHeavyLorryE2DataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_PEV_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationPevHeavyLorryE2DataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override TableData BoostingLimitations => null; + + #endregion + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override CubicMeter CargoVolume => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIepcHeavyLorryDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_IEPC_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationIepcHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override CubicMeter CargoVolume => null; + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + + + + #endregion + + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeviepcsHeavyLorryDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-IEPC-S_HeavyLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of VehicleDataProviderHelper + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHeviepcsHeavyLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV20 + + public override TankSystem? TankSystem => + ElementExists(XMLNames.Vehicle_NgTankSystem) + ? EnumHelper.ParseEnum<TankSystem>(GetString(XMLNames.Vehicle_NgTankSystem)) + : (TankSystem?)null; + + #endregion + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override CubicMeter CargoVolume => null; + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + public override Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => null; + public override TableData BoostingLimitations => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationMediumLorryVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationMediumLorryVehicleDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..681cb57152da05a97ba8fd606b9857b844a83756 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationMediumLorryVehicleDataProvider.cs @@ -0,0 +1,234 @@ +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 +{ + + public abstract class AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + public AbstractXMLDeclarationMediumLorryVehicleDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override VehicleCategory VehicleCategory => VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration)); + + public override LegislativeClass? LegislativeClass => GetString(XMLNames.Vehicle_LegislativeCategory)?.ParseEnum<LegislativeClass>(); + + public override bool? SleeperCab => false; + + public override bool VocationalVehicle => false; + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + + public override XmlElement PTONode => null; + + public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>(); + + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); + + public override CubicMeter CargoVolume { + get { + if (VehicleCategory == VehicleCategory.Van && !ElementExists(XMLNames.Vehicle_CargoVolume)) { + throw new VectoException("Medium lorries with type Van require the input parameter cargo volume!"); + } + return ElementExists(XMLNames.Vehicle_CargoVolume) ? GetDouble(XMLNames.Vehicle_CargoVolume).SI<CubicMeter>() + : null; + } + } + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + protected override DataSourceType SourceType { get; } + + #endregion + + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationConventionalMediumLorryVehicleDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = + XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Vehicle_Conventional_MediumLorryDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationConventionalMediumLorryVehicleDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, + sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevPxMediumLorryDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Px_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationHevPxMediumLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "P"; + + public override TableData BoostingLimitations + => ElementExists(XMLNames.Vehicle_BoostingLimitation) + ? ReadTableData(XMLNames.Vehicle_BoostingLimitation, XMLNames.BoostingLimitation_Entry, + new Dictionary<string, string> { + {XMLNames.BoostingLimitation_RotationalSpeed, XMLNames.BoostingLimitation_RotationalSpeed}, + {XMLNames.BoostingLimitation_BoostingTorque, XMLNames.BoostingLimitation_BoostingTorque} + }) + : null; + + #endregion + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + public override XmlElement PTONode => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevSxMediumLorryDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Sx_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevSxHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHevSxMediumLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + public override XmlElement PTONode => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPevMediumLorryExDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_PEV_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationPevMediumLorryExDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + public override XmlElement PTONode => null; + + #endregion + + #region Overrides of XMLDeclarationHevPxHeavyLorryDataProviderV24 + + public override TableData BoostingLimitations => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIepcMediumLorryDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_IEPC_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + + public XMLDeclarationIepcMediumLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + public override XmlElement PTONode => null; + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + public override VehicleCategory VehicleCategory => + VehicleCategoryHelper.Parse(GetString(XMLNames.ChassisConfiguration)); + + public override Kilogram CurbMassChassis => GetDouble(XMLNames.CorrectedActualMass).SI<Kilogram>(); + + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.TPMLM).SI<Kilogram>(); + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeviepcsMediumLorryDataProviderV24 : AbstractXMLDeclarationMediumLorryVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-IEPC-S_MediumLorryDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHeviepcsHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHeviepcsMediumLorryDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override CubicMeter CargoVolume => + ElementExists(XMLNames.Vehicle_CargoVolume) + ? GetDouble(XMLNames.Vehicle_CargoVolume).SI<CubicMeter>() : null; + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + + public override XmlElement PTONode => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationPrimaryBusVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationPrimaryBusVehicleDataProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..def6b94c50f2894e72a3eb6f7593e8a9805dda3a --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/DataProvider/v24/XMLDeclarationPrimaryBusVehicleDataProvider.cs @@ -0,0 +1,209 @@ +using System.Collections.Generic; +using System.Xml; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24 +{ + + public abstract class AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 : AbstractXMLVehicleDataProviderV24 + { + + public AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24( + IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) + { + SourceType = DataSourceType.XMLEmbedded; + + } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override bool? SleeperCab => false; + + public override CubicMeter CargoVolume => null; + public override XmlElement PTONode => null; + + public override IPTOTransmissionInputData PTOTransmissionInputData => null; + + public override LegislativeClass? LegislativeClass => VectoCommon.Models.LegislativeClass.M3; + + public override VehicleCategory VehicleCategory => VehicleCategory.HeavyBusPrimaryVehicle; + + public override bool Articulated => GetBool(XMLNames.Vehicle_Articulated); + + public override Kilogram CurbMassChassis => null; + + public override Kilogram GrossVehicleMassRating => GetDouble(XMLNames.Vehicle_TPMLM).SI<Kilogram>(); + + public override Meter EntranceHeight => null; + + public override TankSystem? TankSystem => VectoCommon.InputData.TankSystem.Compressed; + + public override bool VocationalVehicle => false; + + #region Overrides of XMLDeclarationVehicleDataProviderV20 + + public override bool ZeroEmissionVehicle => GetBool(XMLNames.Vehicle_ZeroEmissionVehicle); + + #endregion + + #endregion + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + protected override DataSourceType SourceType { get; } + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationConventionalPrimaryBusVehicleDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Vehicle_Conventional_PrimaryBusDeclarationType"; + + public new static readonly string QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationConventionalPrimaryBusVehicleDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of AbstractXMLResource + + protected override XNamespace SchemaNamespace => NAMESPACE_URI; + + protected override DataSourceType SourceType { get; } + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevPxPrimaryBusDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Px_PrimaryBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevPxMediumLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "P"; + + public override TableData BoostingLimitations + => ElementExists(XMLNames.Vehicle_BoostingLimitation) + ? ReadTableData(XMLNames.Vehicle_BoostingLimitation, XMLNames.BoostingLimitation_Entry, + new Dictionary<string, string> { + {XMLNames.BoostingLimitation_RotationalSpeed, XMLNames.BoostingLimitation_RotationalSpeed}, + {XMLNames.BoostingLimitation_BoostingTorque, XMLNames.BoostingLimitation_BoostingTorque} + }) + : null; + + #endregion + + public XMLDeclarationHevPxPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHevSxPrimaryBusDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-Sx_PrimaryBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHevPxMediumLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHevSxPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationPevPrimaryBusDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_PEV_PrimaryBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationPevMediumLorryExDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationPevPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + + + #endregion + } + + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationIepcPrimaryBusDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_IEPC_PrimaryBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLDeclarationIepcPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + public override bool Articulated => GetBool(XMLNames.Vehicle_Articulated); + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLDeclarationHeviepcsPrimaryBusDataProviderV24 : AbstractXMLDeclarationPrimaryBusVehicleDataProviderV24 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Vehicle_HEV-IEPC-S_PrimaryBusDeclarationType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + #region Overrides of XMLDeclarationHeviepcsHeavyLorryDataProviderV24 + + public override string PowertrainPositionPrefix => "E"; + + #endregion + + public XMLDeclarationHeviepcsPrimaryBusDataProviderV24(IXMLDeclarationJobInputData jobData, XmlNode xmlNode, string sourceFile) + : base(jobData, xmlNode, sourceFile) { } + + #region Overrides of XMLDeclarationVehicleDataProviderV10 + + public override IList<ITorqueLimitInputData> TorqueLimits => null; + + + #endregion + } + + + // --------------------------------------------------------------------------------------- + +} \ No newline at end of file diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs index bf0643c332da71999615be7bb29b2a17502d4134..79bf96b22538f03cb1d18838e959597a7157c9ec 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Factory/IDeclarationInjectFactory.cs @@ -88,6 +88,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory IXMLGearData CreateGearData(string version, XmlNode gearNode, string sourceFile); + IXMLElectricMotorDeclarationInputData CreateElectricMotorDeclarationInputData( + string version, XmlNode componentNode, string sourceFile); + + IXMLBatteryPackDeclarationInputData CreateBatteryPackDeclarationInputData( + string version, XmlNode componentNode, string sourceFile); + + IXMLSuperCapDeclarationInputData CreateSuperCapDeclarationInputData( + string version, XmlNode componentNode, string sourceFile); + + IXMLADCDeclarationInputData CreateADCDeclarationInputData( + string version, XmlNode componentNode, string sourceFile); IXMLTorqueConverterDeclarationInputData CreateTorqueconverterData( string version, IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); @@ -122,6 +133,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Factory IXMLBusAuxiliariesDeclarationData CreateBusAuxiliaires(string version, IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); + IXMLElectricMachinesDeclarationInputData CreateElectricMachinesData(string version, + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); + + IXMLElectricMachineSystemReader CreateElectricMotorReader(string version, + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); + + IXMLElectricStorageSystemDeclarationInputData CreateElectricStorageSystemData(string version, + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); + + IXMLREESSReader CreateStorageTypeReader(string version, + IXMLDeclarationVehicleData vehicle, XmlNode componentNode, string sourceFile); + + + IXMLIEPCInputData CreateIEPCData(string version, IXMLDeclarationVehicleData vehicle, XmlNode componentNode, + string sourceFile); // --------------------------------------------------------------------------------------------- diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLADCDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLADCDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..f29b57a943a5d8dfa782d71996d9a4789261ade4 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLADCDeclarationInputData.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLADCDeclarationInputData : IADCDeclarationInputData, IXMLResource + { + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLBatteryPackDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLBatteryPackDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..ee563656beb13bdb0960115b0647de6c0f1c2057 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLBatteryPackDeclarationInputData.cs @@ -0,0 +1,8 @@ +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLBatteryPackDeclarationInputData : IBatteryPackDeclarationInputData, IXMLResource + { + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMachinesDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMachinesDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..31678db114fc4a2d2732b65965395d83f785f2e7 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMachinesDeclarationInputData.cs @@ -0,0 +1,10 @@ +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLElectricMachinesDeclarationInputData : IElectricMachinesDeclarationInputData, IXMLResource + { + IXMLElectricMachineSystemReader ElectricMachineSystemReader { set; } + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMotorDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMotorDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..d2452fe4729116a21eb1ed524fcd9ca9547acd5c --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricMotorDeclarationInputData.cs @@ -0,0 +1,8 @@ +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLElectricMotorDeclarationInputData : IElectricMotorDeclarationInputData, IXMLResource + { + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricStorageSystemDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricStorageSystemDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..acf8421703e89ea90fbe0020f9b28831df5ef08a --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLElectricStorageSystemDeclarationInputData.cs @@ -0,0 +1,10 @@ +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLElectricStorageSystemDeclarationInputData : IElectricStorageSystemDeclarationInputData, IXMLResource + { + IXMLREESSReader StorageTypeReader { set; } + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLIEPCInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLIEPCInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..392fc0d3c339f2b5eec95aeda97d638d15acc279 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLIEPCInputData.cs @@ -0,0 +1,8 @@ +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLIEPCInputData : IIEPCDeclarationInputData, IXMLResource + { + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLSuperCapDeclarationInputData.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLSuperCapDeclarationInputData.cs new file mode 100644 index 0000000000000000000000000000000000000000..319cdb8f16af0fc4d2ae3722e0905d61ab6b77fd --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Interfaces/IXMLSuperCapDeclarationInputData.cs @@ -0,0 +1,8 @@ +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces +{ + public interface IXMLSuperCapDeclarationInputData : ISuperCapDeclarationInputData, IXMLResource + { + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs index 6cb9cdd4999937ff45c6f6aa42df029f0bf42da0..957369b9ee4eaca146424c12610b1fd1d48fd565 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV23InjectModule.cs @@ -15,22 +15,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules Bind<IXMLEngineDeclarationInputData>().To<XMLDeclarationEngineDataProviderV23>() .Named(XMLDeclarationEngineDataProviderV23.QUALIFIED_XSD_TYPE); - Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>() - .To<XMLDeclarationADASDataProviderV23>().Named(XMLDeclarationADASDataProviderV23.QUALIFIED_XSD_TYPE); - - Bind<IXMLADASReader>() - .To<XMLADASReaderV23>().Named(XMLADASReaderV23.QUALIFIED_XSD_TYPE); - - - Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV23>() - .Named(XMLDeclarationAuxiliariesDataProviderV23.QUALIFIED_XSD_TYPE); - - Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV23>() - .Named(XMLAuxiliaryDeclarationDataProviderV23.QUALIFIED_XSD_TYPE); - - Bind<IXMLAuxiliaryReader>().To<XMLAuxiliaryReaderV23>().Named(XMLAuxiliaryReaderV23.QUALIFIED_XSD_TYPE); - - Bind<IXMLTyreDeclarationInputData>().To<XMLDeclarationTyreDataProviderV23>().Named( XMLDeclarationTyreDataProviderV23.QUALIFIED_XSD_TYPE); } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV24InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV24InjectModule.cs new file mode 100644 index 0000000000000000000000000000000000000000..6d3098666294a5f40584badcc167690c1dbea1c8 --- /dev/null +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV24InjectModule.cs @@ -0,0 +1,363 @@ +using Ninject.Modules; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider.v24; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl; + +namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules +{ + public class XMLDeclarationInputDataV24InjectModule : NinjectModule + { + #region Overrides of NinjectModlue + + public override void Load() + { + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationComponentsDataProviderV24_Lorry>().Named( + XMLDeclarationComponentsDataProviderV24_Lorry.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalCompletedBusDataProviderV24>() + .Named(XMLDeclarationConventionalCompletedBusDataProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalCompletedBusDataProviderV24>() + .Named(XMLDeclarationHevCompletedBusDataProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalCompletedBusDataProviderV24>() + .Named(XMLDeclarationPeVompletedBusDataProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalCompletedBusDataProviderV24>() + .Named(XMLDeclarationIepcCompletedBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedCompletedBusDataProviderV24>() + .Named(XMLDeclarationExemptedCompletedBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalHeavyLorryDataProviderV24>() + .Named(XMLDeclarationConventionalHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevPxHeavyLorryDataProviderV24>() + .Named(XMLDeclarationHevPxHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevSxHeavyLorryDataProviderV24>() + .Named(XMLDeclarationHevSxHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevSxMediumLorryDataProviderV24>() + .Named(XMLDeclarationHevSxMediumLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevPxMediumLorryDataProviderV24>() + .Named(XMLDeclarationHevPxMediumLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevPxPrimaryBusDataProviderV24>() + .Named(XMLDeclarationHevPxPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHevSxPrimaryBusDataProviderV24>() + .Named(XMLDeclarationHevSxPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHeviepcsHeavyLorryDataProviderV24>() + .Named(XMLDeclarationHeviepcsHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHeviepcsMediumLorryDataProviderV24>() + .Named(XMLDeclarationHeviepcsMediumLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationHeviepcsPrimaryBusDataProviderV24>() + .Named(XMLDeclarationHeviepcsPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPevHeavyLorryE2DataProviderV24>() + .Named(XMLDeclarationPevHeavyLorryE2DataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPevMediumLorryExDataProviderV24>() + .Named(XMLDeclarationPevMediumLorryExDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPevPrimaryBusDataProviderV24>() + .Named(XMLDeclarationPevPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationIepcHeavyLorryDataProviderV24>() + .Named(XMLDeclarationIepcHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationIepcMediumLorryDataProviderV24>() + .Named(XMLDeclarationIepcMediumLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationIepcPrimaryBusDataProviderV24>() + .Named(XMLDeclarationIepcPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompletedBusComponentsDataProviderV24>() + .Named(XMLDeclarationCompletedBusComponentsDataProviderV24.QUALIFIED_XSD_TYPE_CONVENTIONAL); + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompletedBusComponentsDataProviderV24>() + .Named(XMLDeclarationCompletedBusComponentsDataProviderV24.QUALIFIED_XSD_TYPE_xEV); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHEVPxLorryComponentsDataProviderV24>() + .Named(XMLDeclarationHEVPxLorryComponentsDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHevs2LorryComponentsDataProviderV24>() + .Named(XMLDeclarationHevs2LorryComponentsDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHEVSXLorryComponentsDataProviderV24>() + .Named(XMLDeclarationHEVSXLorryComponentsDataProviderV24.QUALIFIED_HEV_S3_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHEVSXLorryComponentsDataProviderV24>() + .Named(XMLDeclarationHEVSXLorryComponentsDataProviderV24.QUALIFIED_HEV_S4_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVPxComponentsDataProviderV24>() + .Named(XMLDeclarationPrimaryBusHEVPxComponentsDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV24>() + .Named(XMLDeclarationPrimaryBusHEVS2ComponentDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24>() + .Named(XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24.QUALIFIED_HEV_S3_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24>() + .Named(XMLDeclarationPrimaryBusHEVSxComponentDataProviderV24.QUALIFIED_HEV_S4_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryHEVIEPCSComponentDataV24>() + .Named(XMLDeclarationHeavyLorryHEVIEPCSComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusHEVIEPCSComponentDataV24>() + .Named(XMLDeclarationPrimaryBusHEVIEPCSComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPEVE2ComponentDataV24>() + .Named(XMLDeclarationHeavyLorryPEVE2ComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPevExComponentDataV24>() + .Named(XMLDeclarationHeavyLorryPevExComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationHeavyLorryPevExComponentDataV24>() + .Named(XMLDeclarationHeavyLorryPevExComponentDataV24.QUALIFIED_XSD_PEV_E4_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusPEVE2ComponentDataV24>() + .Named(XMLDeclarationPrimaryBusPEVE2ComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusPevExComponentDataV24>() + .Named(XMLDeclarationPrimaryBusPevExComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusPevExComponentDataV24>() + .Named(XMLDeclarationPrimaryBusPevExComponentDataV24.QUALIFIED_XSD_PEV_E4_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationIEPCHeavyLorryComponentDataV24>() + .Named(XMLDeclarationIEPCHeavyLorryComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationIEPCPrimaryBusComponentDataV24>() + .Named(XMLDeclarationIEPCPrimaryBusComponentDataV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLComponentReaderV24_CompletedBus>().Named(XMLComponentReaderV24_CompletedBus.QUALIFIED_XSD_TYPE_CONVENTIONAL); + Bind<IXMLComponentReader>().To<XMLComponentReaderV24_CompletedBus>().Named(XMLComponentReaderV24_CompletedBus.QUALIFIED_XSD_TYPE_xEV); + + Bind<IXMLComponentReader>().To<XMLComponentReaderV24_HEV_PxHeavyLorry>() + .Named(XMLComponentReaderV24_HEV_PxHeavyLorry.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLComponentReaderV24_HEV_PxHeavyLorry>() + .Named(XMLComponentReaderV24_HEV_PxHeavyLorry.QUALIFIED_XSD_HEV_Px_TYPE); + + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVPxDeclarationComponentReaderV201>() + .Named(XMLPrimaryBusHEVPxDeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVS2DeclarationComponentReaderV201>() + .Named(XMLPrimaryBusHEVS2DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVS3DeclarationComponentReaderV201>() + .Named(XMLPrimaryBusHEVS3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVS4DeclarationComponentReaderV201>() + .Named(XMLPrimaryBusHEVS4DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVS2DeclartionComponentReaderV201>().Named(XMLHeavyLorryHEVS2DeclartionComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVS3DeclarationComponentReaderV201>().Named(XMLHeavyLorryHEVS3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVS4DeclarationComponentReaderV201>().Named(XMLHeavyLorryHEVS4DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLHeavyLorryHEVIEPCSDeclarationComponentReaderV201>() + .Named(XMLHeavyLorryHEVIEPCSDeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPrimaryBusHEVIEPCSDeclarationComponentReaderV201>() + .Named(XMLPrimaryBusHEVIEPCSDeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVHeavyLorryE2DeclarationComponentReaderV201>() + .Named(XMLPEVHeavyLorryE2DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVHeavyLorryE3DeclarationComponentReaderV201>() + .Named(XMLPEVHeavyLorryE3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVHeavyLorryE4DeclarationComponentReaderV201>() + .Named(XMLPEVHeavyLorryE4DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVPrimaryBusE2DeclarationComponentReaderV201>() + .Named(XMLPEVPrimaryBusE2DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVPrimaryBusE3DeclarationComponentReaderV201>() + .Named(XMLPEVPrimaryBusE3DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLPEVPrimaryBusE4DeclarationComponentReaderV201>() + .Named(XMLPEVPrimaryBusE4DeclarationComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLIEPCHeavyLorryComponentReaderV201>() + .Named(XMLIEPCHeavyLorryComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>().To<XMLIEPCPrimaryBusComponentReaderV201>() + .Named(XMLIEPCPrimaryBusComponentReaderV201.QUALIFIED_XSD_TYPE); + + Bind<IXMLGearboxReader>().To<XMLGearboxDeclarationComponentReaderV201>() + .Named(XMLGearboxDeclarationComponentReaderV201.GEARBOX_READER_QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLAuxiliaryDeclarationComponentReaderV201>() + .Named(XMLAuxiliaryDeclarationComponentReaderV201.AUXILIARIES_READER_QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLAuxiliaryDeclarationComponentReaderV201>() + .Named(XMLAuxiliaryDeclarationComponentReaderV201.AUXILIARIES_READER_IEPC_PRIMARY_QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricMachineSystemReader>().To<XMLElectricMachineSystemReaderV24>().Named(XMLElectricMachineSystemReaderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLElectricMachineSystemReader>().To<XMLElectricMachineSystemReaderV24>().Named(XMLElectricMachineSystemReaderV24.QUALIFIED_GEN_XSD_TYPE); + + Bind<IXMLREESSReader>().To<XMLREESSReaderV24>().Named(XMLREESSReaderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLPTOReader>().To<XMLPTOReaderV24>().Named(XMLPTOReaderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompletedBusAuxiliariesDataProviderV24>() + .Named(XMLDeclarationCompletedBusAuxiliariesDataProviderV24.QUALIFIED_XSD_TYPE_CONVENTIONAL); + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompletedBusAuxiliariesDataProviderV24>() + .Named(XMLDeclarationCompletedBusAuxiliariesDataProviderV24.QUALIFIED_XSD_TYPE_xEV); + + Bind<IXMLAirdragDeclarationInputData>().To<XMLDeclarationAirdragDataProviderV24>().Named( + XMLDeclarationAirdragDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV24_Lorry>().Named( + XMLDeclarationAuxiliariesDataProviderV24_Lorry.QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV24_Lorry>().Named( + XMLDeclarationAuxiliariesDataProviderV24_Lorry.QUALIFIED_XSD_HEV_P_TYPE); + + Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV24_Lorry>().Named( + XMLDeclarationAuxiliariesDataProviderV24_Lorry.QUALIFIED_XSD_HEV_S_TYPE); + + Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV24_Lorry>().Named( + XMLDeclarationAuxiliariesDataProviderV24_Lorry.QUALIFIED_XSD_PEV_TYPE); + + Bind<IXMLAuxiliariesDeclarationInputData>().To<XMLDeclarationAuxiliariesDataProviderV24_Lorry>().Named( + XMLDeclarationAuxiliariesDataProviderV24_Lorry.QUALIFIED_XSD_IEPC_TYPE); + + Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV24_Lorry>() + .Named(XMLAuxiliaryDeclarationDataProviderV24_Lorry.QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV24_Lorry>() + .Named(XMLAuxiliaryDeclarationDataProviderV24_Lorry.QUALIFIED_XSD_HEV_P_TYPE); + + Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV24_Lorry>() + .Named(XMLAuxiliaryDeclarationDataProviderV24_Lorry.QUALIFIED_XSD_HEV_S_TYPE); + + Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV24_Lorry>() + .Named(XMLAuxiliaryDeclarationDataProviderV24_Lorry.QUALIFIED_XSD_PEV_E2_TYPE); + + Bind<IXMLAuxiliaryDeclarationInputData>().To<XMLAuxiliaryDeclarationDataProviderV24_Lorry>() + .Named(XMLAuxiliaryDeclarationDataProviderV24_Lorry.QUALIFIED_XSD_IEPC_TYPE); + + Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>() + .To<XMLDeclarationADASDataConventionalProviderV24>().Named(XMLDeclarationADASDataConventionalProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>() + .To<XMLDeclarationADASDataHEVProviderV24>().Named(XMLDeclarationADASDataHEVProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>() + .To<XMLDeclarationADASDataPEVProviderV24>().Named(XMLDeclarationADASDataPEVProviderV24.QUALIFIED_XSD_TYPE); + Bind<IXMLAdvancedDriverAssistantSystemDeclarationInputData>() + .To<XMLDeclarationADASDataIEPCProviderV24>().Named(XMLDeclarationADASDataIEPCProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLPTOTransmissionInputData>() + .To<XMLDeclarationPTODataProviderV24>().Named(XMLDeclarationPTODataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalPrimaryBusVehicleDataProviderV24>() + .Named(XMLDeclarationConventionalPrimaryBusVehicleDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedHeavyLorryDataProviderV24>() + .Named(XMLDeclarationExemptedHeavyLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedMediumLorryDataProviderV24>() + .Named(XMLDeclarationExemptedMediumLorryDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedPrimaryBusDataProviderV24>() + .Named(XMLDeclarationExemptedPrimaryBusDataProviderV24.QUALIFIED_XSD_TYPE); + + + Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV24>() + .Named(XMLDeclarationPrimaryBusComponentsDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesConventionalDataProviderV24>() + .Named(XMLDeclarationPrimaryBusAuxiliariesConventionalDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesHEVPDataProviderV24>() + .Named(XMLDeclarationPrimaryBusAuxiliariesHEVPDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesHEVSDataProviderV24>() + .Named(XMLDeclarationPrimaryBusAuxiliariesHEVSDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesPEVDataProviderV24>() + .Named(XMLDeclarationPrimaryBusAuxiliariesPEVDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesIEPCDataProviderV24>() + .Named(XMLDeclarationPrimaryBusAuxiliariesIEPCDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationConventionalMediumLorryVehicleDataProviderV24>() + .Named(XMLDeclarationConventionalMediumLorryVehicleDataProviderV24.QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricMachinesDeclarationInputData>().To<XMLElectricMachinesDeclarationInputDataProvider>() + .Named(XMLElectricMachinesDeclarationInputDataProvider.QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricMachinesDeclarationInputData>().To<XMLElectricMachinesDeclarationInputDataProvider>() + .Named(XMLElectricMachinesDeclarationInputDataProvider.QUALIFIED_GEN_XSD_TYPE); + + Bind<IXMLElectricMotorDeclarationInputData>().To<XMLElectricMotorDeclarationInputDataProviderV23>() + .Named(XMLElectricMotorDeclarationInputDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricMotorDeclarationInputData>().To<XMLElectricMotorSystemStandardDeclarationInputDataProviderV23>() + .Named(XMLElectricMotorSystemStandardDeclarationInputDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricMotorDeclarationInputData>().To<XMLElectricMotorIhpcDeclarationInputDataProviderV23>() + .Named(XMLElectricMotorIhpcDeclarationInputDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLIEPCInputData>().To<XMLElectricMotorIEPCIInputDataProviderV23>() + .Named(XMLElectricMotorIEPCIInputDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLIEPCInputData>().To<XMLElectricMotorIepciStandardInputDataProviderV23>() + .Named(XMLElectricMotorIepciStandardInputDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLElectricStorageSystemDeclarationInputData>().To<XMLElectricStorageSystemDeclarationInputData>() + .Named(XMLElectricStorageSystemDeclarationInputData.QUALIFIED_XSD_TYPE); + + Bind<IXMLBatteryPackDeclarationInputData>().To<XMLBatteryPackDeclarationDeclarationInputData>() + .Named(XMLBatteryPackDeclarationDeclarationInputData.QUALIFIED_XSD_TYPE); + + Bind<IXMLSuperCapDeclarationInputData>().To<XMLSuperCapDeclarationInputData>() + .Named(XMLSuperCapDeclarationInputData.QUALIFIED_XSD_TYPE); + + Bind<IXMLADCDeclarationInputData>().To<XMLADCDeclarationInputDataV23>() + .Named(XMLADCDeclarationInputDataV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLComponentReaderV24_Lorry>() + .Named(XMLComponentReaderV24_Lorry.AUXILIARIES_READER_QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLComponentReaderV24_Lorry>() + .Named(XMLComponentReaderV24_Lorry.AUXILIARIES_READER_HEV_P_QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLComponentReaderV24_Lorry>() + .Named(XMLComponentReaderV24_Lorry.AUXILIARIES_READER_HEV_S2_QUALIFIED_XSD_TYPE); + + Bind<IXMLAuxiliaryReader>().To<XMLComponentReaderV24_Lorry>() + .Named(XMLComponentReaderV24_Lorry.AUXILIARIES_READER_PEV_E2_QUALIFIED_XSD_TYPE); + + Bind<IXMLGearboxDeclarationInputData>().To<XMLDeclarationGearboxDataProviderV23>() + .Named(XMLDeclarationGearboxDataProviderV23.QUALIFIED_XSD_TYPE); + + Bind<IXMLComponentReader>() + .To<XMLComponentReaderV24_PrimaryBus>().Named(XMLComponentReaderV24_PrimaryBus.QUALIFIED_XSD_TYPE); + + Bind<IXMLADASReader>() + .To<XMLADASReaderV24>().Named(XMLADASReaderV24.QUALIFIED_XSD_TYPE_CONVENTIONAL); + Bind<IXMLADASReader>() + .To<XMLADASReaderV24>().Named(XMLADASReaderV24.QUALIFIED_XSD_TYPE_HEV); + Bind<IXMLADASReader>() + .To<XMLADASReaderV24>().Named(XMLADASReaderV24.QUALIFIED_XSD_TYPE_PEV); + Bind<IXMLADASReader>() + .To<XMLADASReaderV24>().Named(XMLADASReaderV24.QUALIFIED_XSD_TYPE_IEPC); + + } + + #endregion + + + } +} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs index ab7b6e506f1d8f1e309a108317c953ea8937663d..228888aa42a97cd10366bc0f4517e962434b795e 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV26InjectModule.cs @@ -12,45 +12,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules { public override void Load() { - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationPrimaryBusVehicleDataProviderV26>() - .Named(XMLDeclarationPrimaryBusVehicleDataProviderV26.QUALIFIED_XSD_TYPE); + - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationCompletedBusDataProviderV26>() - .Named(XMLDeclarationCompletedBusDataProviderV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedPrimaryBusDataProviderV26>() - .Named(XMLDeclarationExemptedPrimaryBusDataProviderV26.QUALIFIED_XSD_TYPE); - - - Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationPrimaryBusComponentsDataProviderV26>() - .Named(XMLDeclarationPrimaryBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationPrimaryBusAuxiliariesDataProviderV26>() - .Named(XMLDeclarationPrimaryBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE); - Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationCompleteBusComponentsDataProviderV26>() - .Named(XMLDeclarationCompleteBusComponentsDataProviderV26.QUALIFIED_XSD_TYPE); - - - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationMediumLorryVehicleDataProviderV26>() - .Named(XMLDeclarationMediumLorryVehicleDataProviderV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationComponentsDataProviderNoAxlegearV26>() - .Named(XMLComponentReaderNoAxlegearV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLGearboxDeclarationInputData>().To<XMLDeclarationGearboxDataProviderV26>() - .Named(XMLDeclarationGearboxDataProviderV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompleteBusAuxiliariesDataProviderV26>() - .Named(XMLDeclarationCompleteBusAuxiliariesDataProviderV26.QUALIFIED_XSD_TYPE); - - - Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLComponentReader>().To<XMLComponentReaderV26>().Named(XMLComponentReaderV26.QUALIFIED_COMPLETE_XSD_TYPE); - - Bind<IXMLComponentReader>().To<XMLComponentReaderNoAxlegearV26>().Named(XMLComponentReaderNoAxlegearV26.QUALIFIED_XSD_TYPE); - - Bind<IXMLGearboxReader>().To<XMLGearboxReaderV26>().Named(XMLGearboxReaderV26.QUALIFIED_XSD_TYPE); } #endregion diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs deleted file mode 100644 index d9a3f39dd9b48b5fc4fa579cfdda6333266fd3c4..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationInputDataV28InjectModule.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Ninject.Modules; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader; -using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl; - -namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.NinjectModules -{ - public class XMLDeclarationInputDataV28InjectModule : NinjectModule - { - #region Overrides of NinjectModlue - - public override void Load() - { - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationInterimStageBusDataProviderV28>() - .Named(XMLDeclarationInterimStageBusDataProviderV28.QUALIFIED_XSD_TYPE); - - Bind<IXMLDeclarationVehicleData>().To<XMLDeclarationExemptedInterimStageBusDataProviderV28>() - .Named(XMLDeclarationExemptedInterimStageBusDataProviderV28.QUALIFIED_XSD_TYPE); - - Bind<IXMLVehicleComponentsDeclaration>().To<XMLDeclarationInterimStageBusComponentsDataProviderV28>() - .Named(XMLDeclarationInterimStageBusComponentsDataProviderV28.QUALIFIED_XSD_TYPE); - - Bind<IXMLComponentReader>().To<XMLComponentReaderV28>().Named(XMLComponentReaderV28.QUALIFIED_XSD_TYPE); - - Bind<IXMLBusAuxiliariesDeclarationData>().To<XMLDeclarationCompleteBusAuxiliariesDataProviderV28>() - .Named(XMLDeclarationCompleteBusAuxiliariesDataProviderV28.QUALIFIED_XSD_TYPE); - - Bind<IXMLAirdragDeclarationInputData>().To<XMLDeclarationAirdragDataProviderV28>().Named( - XMLDeclarationAirdragDataProviderV28.QUALIFIED_XSD_TYPE); - } - - #endregion - - - } -} diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs index af306e13e9d838018cfaebdb00ff1cd378ae31f6..cc6f795b7e7f2509428bda2e85fca9b4e41a896a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/NinjectModules/XMLDeclarationReaderInjectModule.cs @@ -53,7 +53,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration new XMLDeclarationInputDataV221InjectModule(), new XMLDeclarationInputDataV23InjectModule(), new XMLDeclarationInputDataV26InjectModule(), - new XMLDeclarationInputDataV28InjectModule(), + new XMLDeclarationInputDataV24InjectModule(), new XMLDeclarationInputDataMultistageV01InjectModule(), }); diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/IXMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/IXMLComponentReader.cs index f3341d8ad1f56b0a13ea81088a51d435d209f2a9..c5693d8fe46ce23b57d9fb1ea640d29f2dac7b35 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/IXMLComponentReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/IXMLComponentReader.cs @@ -37,7 +37,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader public interface IXMLComponentReader { IVehicleComponentsDeclaration ComponentInputData { get; } - IAirdragDeclarationInputData AirdragInputData { get; } IGearboxDeclarationInputData GearboxInputData { get; } IAxleGearInputData AxleGearInputData { get; } @@ -46,10 +45,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader IAuxiliariesDeclarationInputData AuxiliaryData { get; } IRetarderInputData RetarderInputData { get; } IAxlesDeclarationInputData AxlesDeclarationInputData { get; } - ITorqueConverterDeclarationInputData TorqueConverterInputData { get; } - IBusAuxiliariesDeclarationData BusAuxiliariesInputData { get; } + IElectricMachinesDeclarationInputData ElectricMachines { get; } + IElectricStorageSystemDeclarationInputData ElectricStorageSystem { get; } + IIEPCDeclarationInputData IEPCInputData { get; } } public interface IXMLAxlesReader @@ -72,4 +72,17 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader IAuxiliaryDeclarationInputData CreateAuxiliary(XmlNode auxNode); } + + public interface IXMLElectricMachineSystemReader + { + IElectricMotorDeclarationInputData CreateElectricMachineSystem(XmlNode electricMachineSystem); + IADCDeclarationInputData ADCInputData { get; } + } + + public interface IXMLREESSReader + { + IREESSPackInputData CreateREESSInputData(XmlNode storageNode, REESSType reessType); + } + + } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLADASReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLADASReader.cs index 056042ee81e2209d64c64081500ec5059b83a58a..4dea8c8e99f281897d2349273fe7c401cae3188c 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLADASReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLADASReader.cs @@ -116,18 +116,28 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl // --------------------------------------------------------------------------------------- - public class XMLADASReaderV23 : XMLADASReaderV21 + public class XMLADASReaderV24 : XMLADASReaderV21 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "AdvancedDriverAssistantSystemsType"; + public const string XSD_TYPE_CONVENTIONAL = "ADAS_Conventional_Type"; + public const string XSD_TYPE_HEV = "ADAS_HEV_Type"; + public const string XSD_TYPE_PEV = "ADAS_PEV_Type"; + public const string XSD_TYPE_IEPC = "ADAS_IEPC_Type"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_TYPE_CONVENTIONAL = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_CONVENTIONAL); + + public static readonly string QUALIFIED_XSD_TYPE_HEV = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_HEV); - public XMLADASReaderV23(IXMLDeclarationVehicleData vehicle, XmlNode vehicleNode) : base( + public static readonly string QUALIFIED_XSD_TYPE_PEV = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_PEV); + + public static readonly string QUALIFIED_XSD_TYPE_IEPC = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_IEPC); + + public XMLADASReaderV24(IXMLDeclarationVehicleData vehicle, XmlNode vehicleNode) : base( vehicle, vehicleNode) { } public override XNamespace SchemaNamespace => NAMESPACE_URI; } + } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs index a533e17847522120fbc05311db4ad8e9d45b6b33..1718297bc6925d871ae745363c36d3c9637407a9 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLComponentReader.cs @@ -30,8 +30,8 @@ */ using System; -using System.Runtime.Remoting.Messaging; -using System.Windows.Forms.VisualStyles; +using System.Collections.Generic; +using System.Linq; using System.Xml; using System.Xml.Linq; using Ninject; @@ -73,7 +73,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl protected IAirdragDeclarationInputData _airdragInputData; protected IAuxiliariesDeclarationInputData _auxiliaryInputData; protected ITorqueConverterDeclarationInputData _torqueConverterInputData; - + protected IElectricMachinesDeclarationInputData _electricMachinesInputData; + protected IElectricStorageSystemDeclarationInputData _electricStorageSystemInputData; + protected IIEPCDeclarationInputData _iepcDeclarationInputData; [Inject] public IDeclarationInjectFactory Factory { protected get; set; } @@ -112,6 +114,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public virtual IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; + public virtual IElectricMachinesDeclarationInputData ElectricMachines => _electricMachinesInputData ?? + (_electricMachinesInputData = GetElectricMachineEntries()); + public virtual IElectricStorageSystemDeclarationInputData ElectricStorageSystem => _electricStorageSystemInputData ?? + (_electricStorageSystemInputData = GetElectricEnergyStorageEntries()); + + public virtual IIEPCDeclarationInputData IEPCInputData => _iepcDeclarationInputData ?? + (_iepcDeclarationInputData = CreateComponent( XMLNames.IEPC_Component, IEPCCreator)); + public virtual ITransmissionInputData CreateGear(XmlNode gearNode) { var version = XMLHelper.GetXsdType(gearNode.SchemaInfo.SchemaType); @@ -275,6 +285,59 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl components.ComponentReader = Factory.CreateComponentReader(version, Vehicle, componentNode); return components; } + + protected virtual IElectricMachinesDeclarationInputData GetElectricMachineEntries() + { + var electricMachines = new List<ElectricMachineEntry<IElectricMotorDeclarationInputData>>(); + var electricMachine = CreateComponent(XMLNames.Component_ElectricMachine, ElectricMachinesCreator, true); + if(electricMachine?.Entries?.Any() == true) + electricMachines.AddRange(electricMachine.Entries); + + var electricMachineGEN = CreateComponent(XMLNames.Component_ElectricMachineGEN, ElectricMachinesCreator, true); + if(electricMachineGEN?.Entries?.Any() == true) + electricMachines.AddRange(electricMachineGEN.Entries); + + return electricMachines.Any() ? new XMLElectricMachinesDeclarationData(electricMachines) : null; + } + + protected virtual IElectricMachinesDeclarationInputData ElectricMachinesCreator(string version, + XmlNode componentNode, string sourcefile) + { + if (componentNode == null) + return null; + + var electricMachine = Factory.CreateElectricMachinesData(version, Vehicle, componentNode, sourcefile); + electricMachine.ElectricMachineSystemReader = Factory.CreateElectricMotorReader(version, Vehicle, componentNode, sourcefile); + return electricMachine; + } + + protected virtual IElectricStorageSystemDeclarationInputData GetElectricEnergyStorageEntries() + { + return CreateComponent(XMLNames.Component_ElectricEnergyStorage, ElectricEnergyStorageCreator, true); + } + + protected virtual IElectricStorageSystemDeclarationInputData ElectricEnergyStorageCreator(string version, + XmlNode componentNode, string sourcefile) + { + if (componentNode == null) + return null; + + var electricStorage = Factory.CreateElectricStorageSystemData(version, Vehicle, componentNode, sourcefile); + electricStorage.StorageTypeReader = + Factory.CreateStorageTypeReader(version, Vehicle, componentNode, sourcefile); + + + return electricStorage; + } + + protected virtual IIEPCDeclarationInputData IEPCCreator(string version, XmlNode componentNode, + string sourceFile) + { + if (componentNode == null) + return null; + + return Factory.CreateIEPCData(version, Vehicle, componentNode, sourceFile); + } } // --------------------------------------------------------------------------------------- @@ -301,16 +364,27 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl // --------------------------------------------------------------------------------------- - public class XMLAuxiliaryReaderV23 : XMLComponentReaderV20 + public class XMLComponentReaderV24_Lorry : XMLComponentReaderV10 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string AUX_READER_TYPE = "AuxiliariesDataDeclarationType"; + //public new const string AXLE_READER_TYPE = "AxleDataDeclarationType"; + public new const string AUX_READER_TYPE = "AUX_Conventional_LorryDataType"; + public const string AUX_HEV_P_READER_TYPE = "AUX_HEV-P_LorryDataType"; + public const string AUX_HEV_S2_READER_TYPE = "AUX_HEV-S_LorryDataType"; + public const string AUX_PEV_E2_READER_TYPE = "AUX_PEV_LorryDataType"; - public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, AUX_READER_TYPE); - - public XMLAuxiliaryReaderV23(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( + //public new static readonly string AXLES_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AXLES_READER_TYPE); + //public new static readonly string AXLE_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AXLE_READER_TYPE); + //public new static readonly string GEARBOX_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, GEARBOX_READER_TYPE); + public new static readonly string AUXILIARIES_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_READER_TYPE); + public static readonly string AUXILIARIES_READER_HEV_P_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_HEV_P_READER_TYPE); + public static readonly string AUXILIARIES_READER_HEV_S2_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_HEV_S2_READER_TYPE); + public static readonly string AUXILIARIES_READER_PEV_E2_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_PEV_E2_READER_TYPE); + + + public XMLComponentReaderV24_Lorry(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( vehicle, componentsNode) { } } @@ -318,30 +392,215 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl // --------------------------------------------------------------------------------------- - public class XMLComponentReaderV26 : XMLComponentReaderV20 + public class XMLComponentReaderV24_PrimaryBus : XMLComponentReaderV20 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; - public new const string XSD_TYPE = "PrimaryVehicleComponentsDeclarationType"; + public new const string XSD_TYPE = "Components_Conventional_PrimaryBusType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public const string COMPLETE_XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; - public static readonly string QUALIFIED_COMPLETE_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, COMPLETE_XSD_TYPE); - - protected IBusAuxiliariesDeclarationData _busAuxInputData; - public XMLComponentReaderV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( + public XMLComponentReaderV24_PrimaryBus(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( vehicle, componentsNode) { } + #region Overrides of XMLComponentReaderV10 + + public override IAirdragDeclarationInputData AirdragInputData => + _airdragInputData ?? (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreaor)); + + protected virtual IAirdragDeclarationInputData AirdragCreaor(string version, XmlNode componentNode, + string sourceFile) + { + + return Factory.CreateAirdragData(version, Vehicle, componentNode, sourceFile); + } + + public override IIEPCDeclarationInputData IEPCInputData => null; + + #endregion + + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); + + protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) + { + return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); + } + } + + // --------------------------------------------------------------------------------------- + + public class XMLComponentReaderV24_CompletedBus : XMLComponentReaderV20 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public const string XSD_TYPE_CONVENTIONAL = "Components_Conventional_CompletedBusType"; + public const string XSD_TYPE_xEV = "Components_xEV_CompletedBusType"; + + + public static readonly string QUALIFIED_XSD_TYPE_CONVENTIONAL = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_CONVENTIONAL); + public static readonly string QUALIFIED_XSD_TYPE_xEV = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE_xEV); + + protected IBusAuxiliariesDeclarationData _busAuxInputData; + + + public XMLComponentReaderV24_CompletedBus(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) + { + + } + + public override IAngledriveInputData AngledriveInputData => null; + + public override IAxleGearInputData AxleGearInputData => null; + + public override IAxlesDeclarationInputData AxlesDeclarationInputData => null; + + public override IEngineDeclarationInputData EngineInputData => null; + + public override IGearboxDeclarationInputData GearboxInputData => null; + + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + + public override ITyreDeclarationInputData Tyre => null; + + public override IRetarderInputData RetarderInputData => null; + + public override IAuxiliariesDeclarationInputData AuxiliaryData => null; + + public override IAirdragDeclarationInputData AirdragInputData => + _airdragInputData ?? + (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreator)); + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) { return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); } + + } + + + // --------------------------------------------------------------------------------------- + + public class XMLComponentReaderV24_HEV_PxHeavyLorry : XMLComponentReaderV20 + { + + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + public new const string XSD_TYPE = "Components_Conventional_LorryType"; + public const string XSD_HEV_Px_TYPE = "Components_HEV-Px_LorryType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_XSD_HEV_Px_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_HEV_Px_TYPE); + + public XMLComponentReaderV24_HEV_PxHeavyLorry(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; + public override IIEPCDeclarationInputData IEPCInputData => null; + } + + // --------------------------------------------------------------------------------------- + + public class XMLElectricMachineSystemReaderV24 : AbstractComponentReader, IXMLElectricMachineSystemReader + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "ElectricMachineType"; + public const string XSD_GEN_TYPE = "ElectricMachineGENType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public static readonly string QUALIFIED_GEN_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_GEN_TYPE); + + [Inject] + public IDeclarationInjectFactory Factory { protected get; set; } + + public XMLElectricMachineSystemReaderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, + string sourceFile) : base(vehicle, componentNode) + { + + } + + #region Implementation of IXMLElectricMotorReader + + public virtual IElectricMotorDeclarationInputData CreateElectricMachineSystem(XmlNode electricMachineSystem) + { + return CreateComponent(XMLNames.ElectricMachineSystem, ElectricMachinesCreator); + } + + public virtual IADCDeclarationInputData ADCInputData + { + get + { + return CreateComponent("ADC", ADCCreator); + } + } + + + protected virtual IADCDeclarationInputData ADCCreator(string version, + XmlNode componentNode, string sourcefile) + { + return Factory.CreateADCDeclarationInputData(version, componentNode, sourcefile); + } + + protected virtual IElectricMotorDeclarationInputData ElectricMachinesCreator(string version, + XmlNode componentNode, string sourcefile) + { + return Factory.CreateElectricMotorDeclarationInputData(version, componentNode, sourcefile); + } + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLREESSReaderV24 : AbstractComponentReader, IXMLREESSReader + { + public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public const string XSD_TYPE = "ElectricEnergyStorageType"; + public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + [Inject] public IDeclarationInjectFactory Factory { protected get; set; } + + public XMLREESSReaderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode, + string sourceFile) : base(vehicle, componentNode) { } + + #region Implementation of IXMLREESSReader + + public virtual IREESSPackInputData CreateREESSInputData(XmlNode reessNode, REESSType reessType) + { + var type = reessNode.SchemaInfo.SchemaType; + var version = XMLHelper.GetXsdType(type); + if (version == null) + return null; + + switch (reessType) { + case REESSType.Battery: + return BatteryPackCreator(version, reessNode, null); + case REESSType.SuperCap: + return SuperCapCreator(version, reessNode, null); + default: + return null; + } + } + + protected virtual IBatteryPackDeclarationInputData BatteryPackCreator(string version, + XmlNode componentNode, string sourcefile) + { + return Factory.CreateBatteryPackDeclarationInputData(version, componentNode, sourcefile); + } + + protected virtual ISuperCapDeclarationInputData SuperCapCreator(string version, + XmlNode componentNode, string sourcefile) + { + return Factory.CreateSuperCapDeclarationInputData(version, componentNode, sourcefile); + } + + #endregion } // --------------------------------------------------------------------------------------- @@ -378,22 +637,75 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); } } - // --------------------------------------------------------------------------------------- - public class XMLComponentReaderNoAxlegearV26 : XMLComponentReaderV20 + public class XMLPrimaryBusHEVPxDeclarationComponentReaderV201 : XMLComponentReaderV10 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - public new const string XSD_TYPE = "VehicleComponentsNoAxlegearType"; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-Px_PrimaryBusType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); protected IBusAuxiliariesDeclarationData _busAuxInputData; + public XMLPrimaryBusHEVPxDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + public override IAuxiliariesDeclarationInputData AuxiliaryData => null; + + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => _busAuxInputData ?? + (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); + + protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) + { + return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); + } + } + + // --------------------------------------------------------------------------------------- + + public class XMLPrimaryBusHEVS2DeclarationComponentReaderV201 : XMLPrimaryBusHEVPxDeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S2_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPrimaryBusHEVS2DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLPrimaryBusHEVS3DeclarationComponentReaderV201 : XMLPrimaryBusHEVPxDeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S3_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPrimaryBusHEVS3DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 + + public override IGearboxDeclarationInputData GearboxInputData => null; + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + public override IAngledriveInputData AngledriveInputData => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLPrimaryBusHEVS4DeclarationComponentReaderV201 : XMLPrimaryBusHEVS3DeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S4_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPrimaryBusHEVS4DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } - public XMLComponentReaderNoAxlegearV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( - vehicle, componentsNode) - { } #region Overrides of XMLComponentReaderV10 @@ -401,73 +713,317 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl #endregion } + + // --------------------------------------------------------------------------------------- + + public class XMLHeavyLorryHEVS2DeclartionComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S2_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLHeavyLorryHEVS2DeclartionComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLHeavyLorryHEVS3DeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S3_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLHeavyLorryHEVS3DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, + XmlNode componentsNode) : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 + + public override IGearboxDeclarationInputData GearboxInputData => null; + public override IAngledriveInputData AngledriveInputData => null; + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLHeavyLorryHEVS4DeclarationComponentReaderV201 : XMLHeavyLorryHEVS3DeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-S4_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLHeavyLorryHEVS4DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 + + public override IAxleGearInputData AxleGearInputData => null; + + #endregion + } + + + // --------------------------------------------------------------------------------------- + + public class XMLHeavyLorryHEVIEPCSDeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-IEPC-S_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLHeavyLorryHEVIEPCSDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + + #region Overrides of XMLComponentReaderV10 + + public override IGearboxDeclarationInputData GearboxInputData => null; + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + + public override IAngledriveInputData AngledriveInputData => null; + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; + + #endregion + } + // --------------------------------------------------------------------------------------- - public class XMLGearboxReaderV26 : XMLComponentReaderV10 + public class XMLPrimaryBusHEVIEPCSDeclarationComponentReaderV201 : XMLHeavyLorryHEVIEPCSDeclarationComponentReaderV201 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V26; - public new const string XSD_TYPE = "GearboxDataDeclarationType"; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_HEV-IEPC-S_PrimaryBus"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); protected IBusAuxiliariesDeclarationData _busAuxInputData; + public XMLPrimaryBusHEVIEPCSDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + public override IAuxiliariesDeclarationInputData AuxiliaryData => null; + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => _busAuxInputData ?? + (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); - public XMLGearboxReaderV26(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) : base( - vehicle, componentsNode) - { } + protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) + { + return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); + } + } + + // --------------------------------------------------------------------------------------- + + public class XMLPEVHeavyLorryE2DeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E2_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPEVHeavyLorryE2DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 + + public override IEngineDeclarationInputData EngineInputData => null; + + public override IIEPCDeclarationInputData IEPCInputData => null; + + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLPEVHeavyLorryE3DeclarationComponentReaderV201 : XMLPEVHeavyLorryE2DeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E3_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPEVHeavyLorryE3DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 + + public override IGearboxDeclarationInputData GearboxInputData => null; + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + public override IAngledriveInputData AngledriveInputData => null; + #endregion } // --------------------------------------------------------------------------------------- - public class XMLComponentReaderV28 : XMLComponentReaderV20 + public class XMLPEVHeavyLorryE4DeclarationComponentReaderV201 : XMLPEVHeavyLorryE3DeclarationComponentReaderV201 { - public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V28; + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E4_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); - public new const string XSD_TYPE = "CompletedVehicleComponentsDeclarationType"; + public XMLPEVHeavyLorryE4DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + #region Overrides of XMLComponentReaderV10 + + public override IAxleGearInputData AxleGearInputData => null; + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLPEVPrimaryBusE2DeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E2_PrimaryBusType"; public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); protected IBusAuxiliariesDeclarationData _busAuxInputData; + public XMLPEVPrimaryBusE2DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + #region Overrides of XMLComponentReaderV10 - public XMLComponentReaderV28(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) - : base(vehicle, componentsNode) + public override IAuxiliariesDeclarationInputData AuxiliaryData => null; + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => + _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); + + protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) { - + return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); } + public override IAirdragDeclarationInputData AirdragInputData => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLPEVPrimaryBusE3DeclarationComponentReaderV201 : XMLPEVPrimaryBusE2DeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E3_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public XMLPEVPrimaryBusE3DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + + #region Overrides of XMLComponentReaderV10 + + public override IGearboxDeclarationInputData GearboxInputData => null; + public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; public override IAngledriveInputData AngledriveInputData => null; + public override IAirdragDeclarationInputData AirdragInputData => null; + + #endregion + } + + // --------------------------------------------------------------------------------------- + + public class XMLPEVPrimaryBusE4DeclarationComponentReaderV201 : XMLPEVPrimaryBusE3DeclarationComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_PEV-E4_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + public XMLPEVPrimaryBusE4DeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + + #region Overrides of XMLComponentReaderV10 public override IAxleGearInputData AxleGearInputData => null; - public override IAxlesDeclarationInputData AxlesDeclarationInputData => null; + #endregion + } - public override IEngineDeclarationInputData EngineInputData => null; + // --------------------------------------------------------------------------------------- - public override IGearboxDeclarationInputData GearboxInputData => null; + public class XMLIEPCHeavyLorryComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_IEPC_LorryType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLIEPCHeavyLorryComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + #region Overrides of XMLComponentReaderV10 + + public override IEngineDeclarationInputData EngineInputData => null; + public override IElectricMachinesDeclarationInputData ElectricMachines => null; + public override IGearboxDeclarationInputData GearboxInputData => null; public override ITorqueConverterDeclarationInputData TorqueConverterInputData => null; + public override IAngledriveInputData AngledriveInputData => null; + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => null; - public override ITyreDeclarationInputData Tyre => null; + #endregion + } + // --------------------------------------------------------------------------------------- - public override IRetarderInputData RetarderInputData => null; + public class XMLIEPCPrimaryBusComponentReaderV201 : XMLIEPCHeavyLorryComponentReaderV201 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string XSD_TYPE = "Components_IEPC_PrimaryBusType"; + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + private IBusAuxiliariesDeclarationData _busAuxInputData; + + + public XMLIEPCPrimaryBusComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + + + #region Overrides of XMLComponentReaderV10 public override IAuxiliariesDeclarationInputData AuxiliaryData => null; + + #endregion - public override IAirdragDeclarationInputData AirdragInputData => - _airdragInputData ?? - (_airdragInputData = CreateComponent(XMLNames.Component_AirDrag, AirdragCreator)); + #region Overrides of XMLIEPCHeavyLorryComponentReaderV201 - public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); + public override IBusAuxiliariesDeclarationData BusAuxiliariesInputData => + _busAuxInputData ?? (_busAuxInputData = CreateComponent(XMLNames.Component_Auxiliaries, BusAuxCreator)); + + #endregion protected virtual IBusAuxiliariesDeclarationData BusAuxCreator(string version, XmlNode componentNode, string sourceFile) { return Factory.CreateBusAuxiliaires(version, Vehicle, componentNode, sourceFile); } + } + + // --------------------------------------------------------------------------------------- + public class XMLGearboxDeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V23; + public new const string GEARBOX_READER_TYPE = "GearboxDataDeclarationType"; + public new static readonly string GEARBOX_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, GEARBOX_READER_TYPE); + + public XMLGearboxDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } + } + + // --------------------------------------------------------------------------------------- + + public class XMLAuxiliaryDeclarationComponentReaderV201 : XMLComponentReaderV10 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + public new const string AUX_READER_TYPE = "AUX_IEPC_LorryDataType"; + public const string AUX_IEPC_READER_TYPE = "AUX_IEPC_PrimaryBusType"; + + public new static readonly string AUXILIARIES_READER_QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_READER_TYPE); + public static readonly string AUXILIARIES_READER_IEPC_PRIMARY_QUALIFIED_XSD_TYPE = + XMLHelper.CombineNamespace(NAMESPACE_URI, AUX_IEPC_READER_TYPE); + + public XMLAuxiliaryDeclarationComponentReaderV201(IXMLDeclarationVehicleData vehicle, XmlNode componentsNode) + : base(vehicle, componentsNode) { } } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs index 9a92f71668ad51fe25098d0cc0ad4d611e3ca91a..c2ba1718550f07f07bdc17ed1cb304dde542a061 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLDeclarationMultistageInputReader.cs @@ -24,7 +24,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "VectoOutputMultistageType"; + public const string XSD_TYPE = "VectoOutputMultistepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); @@ -44,7 +44,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl InputData = inputData; } - public IDeclarationMultistageJobInputData JobData => _jobData ?? (_jobData = CreateComponent(XMLNames.VectoOutputMultistage, JobCreator)); + public IDeclarationMultistageJobInputData JobData => _jobData ?? (_jobData = CreateComponent(XMLNames.VectoOutputMultistep, JobCreator)); protected virtual IDeclarationMultistageJobInputData JobCreator(string version, XmlNode node, string arg3) { @@ -61,7 +61,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "VectoOutputMultistageType"; + public const string XSD_TYPE = "VectoOutputMultistepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); @@ -129,10 +129,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { get { - if (ManufacturingStages.IsNullOrEmpty()) - return null; + //if (ManufacturingStages.IsNullOrEmpty()) + // return null; - return _consolidateManufacturingStages ?? + return _consolidateManufacturingStages ?? (_consolidateManufacturingStages = GetConsolidateManufacturingStage()); } } @@ -171,13 +171,13 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl private ConsolidateManufacturingStages GetConsolidateManufacturingStage() { - return new ConsolidateManufacturingStages(PrimaryVehicle, ManufacturingStages.Reverse()); + return new ConsolidateManufacturingStages(PrimaryVehicle, ManufacturingStages?.Reverse()); } private void SetManufacturingStageNodes() { - _manufacturingNodeStages = BaseNode.SelectNodes(XMLHelper.QueryLocalName(XMLNames.ManufacturingStage)); + _manufacturingNodeStages = BaseNode.SelectNodes(XMLHelper.QueryLocalName(XMLNames.ManufacturingStep)); } } @@ -187,7 +187,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { public static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE_VO1; - public const string XSD_TYPE = "ManufacturingStageType"; + public const string XSD_TYPE = "ManufacturingStepType"; public static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); @@ -327,11 +327,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl } } - - - - - public ConsolidatedDataBase(IEnumerable<IManufacturingStageInputData> manufacturingStages) { @@ -420,6 +415,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl InvalidEntry = variableName; return false; } + + protected bool InputComplete<T>(T value, string variableName, bool mandatory) + { + if (mandatory) { + return InputComplete(value, variableName); + } else { + return true; + } + } } // --------------------------------------------------------------------------------------- @@ -435,15 +439,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl _primaryVehicle = primaryVehicle; } - public DigestData HashPreviousStage => _manufacturingStages.First().HashPreviousStage; + public DigestData HashPreviousStep => _manufacturingStages?.First().HashPreviousStep; - public int StageCount => _manufacturingStages.First().StageCount; + public int StepCount => _manufacturingStages?.First().StepCount ?? 0; public IVehicleDeclarationInputData Vehicle => GetConsolidatedVehicleData(); - public IApplicationInformation ApplicationInformation => _manufacturingStages.First().ApplicationInformation; + public IApplicationInformation ApplicationInformation => _manufacturingStages?.First().ApplicationInformation; - public DigestData Signature => _manufacturingStages.First().Signature; + public DigestData Signature => _manufacturingStages?.First().Signature; protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck) @@ -489,15 +493,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl #region ManufacturingStage mandatory properties - public string Manufacturer => _manufacturingStages.First().Vehicle.Manufacturer; + public string Manufacturer => _manufacturingStages?.First().Vehicle.Manufacturer; + + public string ManufacturerAddress => _manufacturingStages?.First().Vehicle.ManufacturerAddress; + + public DateTime Date => _manufacturingStages?.First().Vehicle.Date ?? DateTime.MinValue; - public string ManufacturerAddress => _manufacturingStages.First().Vehicle.ManufacturerAddress; + public string VIN => _manufacturingStages?.First().Vehicle.VIN; - public DateTime Date => _manufacturingStages.First().Vehicle.Date; + public VehicleDeclarationType VehicleDeclarationType => _manufacturingStages?.First().Vehicle.VehicleDeclarationType ?? default(VehicleDeclarationType); - public string VIN => _manufacturingStages.First().Vehicle.VIN; - public VehicleDeclarationType VehicleDeclarationType => _manufacturingStages.First().Vehicle.VehicleDeclarationType; + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => throw new NotImplementedException(); + public TableData BoostingLimitations => throw new NotImplementedException(); #endregion @@ -509,9 +517,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public Kilogram CurbMassChassis => GetVehiclePropertyValue<Kilogram>(nameof(CurbMassChassis)); - public Kilogram GrossVehicleMassRating => GetVehiclePropertyValue<Kilogram>(nameof(GrossVehicleMassRating)); + public Kilogram GrossVehicleMassRating => GetVehiclePropertyValue<Kilogram>(nameof(GrossVehicleMassRating)) ?? _primaryVehicle.Vehicle.GrossVehicleMassRating; - public bool? AirdragModifiedMultistage => GetVehiclePropertyValue<bool?>(nameof(AirdragModifiedMultistage)); + public bool? AirdragModifiedMultistep => GetVehiclePropertyValue<bool?>(nameof(AirdragModifiedMultistep)); public TankSystem? TankSystem => GetVehiclePropertyValue<TankSystem?>(nameof(TankSystem)); @@ -528,6 +536,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public VehicleCode? VehicleCode => GetVehiclePropertyValue<VehicleCode?>(nameof(VehicleCode)); + public string VehicleTypeApprovalNumber => GetVehiclePropertyValue<string>(nameof(VehicleTypeApprovalNumber)); public bool? LowEntry => GetVehiclePropertyValue<bool?>(nameof(LowEntry)); public Meter Height => GetVehiclePropertyValue<Meter>(nameof(Height)); @@ -544,11 +553,11 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl private IAdvancedDriverAssistantSystemDeclarationInputData GetADAS() { - if (GetVehiclePropertyValue<IAdvancedDriverAssistantSystemDeclarationInputData>(nameof(ADAS)) == null) - return null; - return _consolidatedADAS - ?? (_consolidatedADAS = new ConsolidatedADASData(_manufacturingStages)); + ?? (_consolidatedADAS = new ConsolidatedADASData( + manufacturingStages: _manufacturingStages, + primaryVehicleData: _primaryVehicle.Vehicle, + usePrimaryData: GetVehiclePropertyValue<IAdvancedDriverAssistantSystemDeclarationInputData>(nameof(ADAS)) == null)); } @@ -576,7 +585,14 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public string Identifier { get; } public bool ExemptedVehicle { - get { return _manufacturingStages.Any(x => x.Vehicle.ExemptedVehicle); } + get + { + return _primaryVehicle.Vehicle.ExemptedVehicle; + //if (_primaryVehicle.Vehicle.ExemptedVehicle) { + // return true; + //} + ////return _manufacturingStages.Any(x => x.Vehicle.ExemptedVehicle); + } } public VehicleCategory VehicleCategory { get; } public AxleConfiguration AxleConfiguration { get; } @@ -596,15 +612,21 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public bool Articulated { get; } public XmlNode XMLSource { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } #endregion private T GetVehiclePropertyValue<T>(string propertyName) { - foreach (var manufacturingStage in _manufacturingStages) { - var value = GetPropertyValue<T>(manufacturingStage.Vehicle, propertyName); - if (value != null) - return value; + if (_manufacturingStages != null) { + foreach (var manufacturingStage in _manufacturingStages) + { + var value = GetPropertyValue<T>(manufacturingStage.Vehicle, propertyName); + if (value != null) + return value; + } } return default; } @@ -639,8 +661,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { var checkAirdragModified = false; var validAirdragEntries = true; - - var t = _manufacturingStages.ToList(); + if (_manufacturingStages == null) { + return default(bool); + } var stages = _manufacturingStages.Reverse().ToList(); foreach (var manufacturingStage in stages) { @@ -649,7 +672,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl continue; } - if (checkAirdragModified && manufacturingStage.Vehicle?.AirdragModifiedMultistage == null) { + if (checkAirdragModified && manufacturingStage.Vehicle?.AirdragModifiedMultistep == null) { validAirdragEntries = false; break; } @@ -717,6 +740,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl & InputComplete(Width, nameof(Width)) & InputComplete(EntranceHeight, nameof(EntranceHeight)) & InputComplete(DoorDriveTechnology, nameof(DoorDriveTechnology)) + //& InputComplete(VehicleTypeApprovalNumber, nameof(VehicleTypeApprovalNumber)) & (InputComplete(_consolidatedADAS, nameof(_consolidatedADAS)) && _consolidatedADAS.IsInputDataCompleteFullCheck(jobType)) & (InputComplete(_consolidatedComponents, nameof(_consolidatedComponents)) && _consolidatedComponents.IsInputDataCompleteFullCheck(jobType)); } @@ -738,6 +762,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl && InputComplete(Length, nameof(Length)) && InputComplete(Width, nameof(Width)) && InputComplete(EntranceHeight, nameof(EntranceHeight)) && InputComplete(DoorDriveTechnology, nameof(DoorDriveTechnology)) + //&& InputComplete(VehicleTypeApprovalNumber, nameof(VehicleTypeApprovalNumber)) && InputComplete(_consolidatedADAS, nameof(_consolidatedADAS)) && _consolidatedADAS.IsInputDataComplete(jobType) && InputComplete(_consolidatedComponents, nameof(_consolidatedComponents)) && _consolidatedComponents.IsInputDataComplete(jobType); } @@ -777,8 +802,18 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public class ConsolidatedADASData : ConsolidatedDataBase, IAdvancedDriverAssistantSystemDeclarationInputData { - public ConsolidatedADASData(IEnumerable<IManufacturingStageInputData> manufacturingStages) - : base(manufacturingStages) { } + private readonly bool _usePrimaryData; + private readonly IAdvancedDriverAssistantSystemDeclarationInputData _primaryAdas; + private readonly IVehicleDeclarationInputData _primaryVehicleData; + + public ConsolidatedADASData(IEnumerable<IManufacturingStageInputData> manufacturingStages, + IVehicleDeclarationInputData primaryVehicleData, bool usePrimaryData) + : base(manufacturingStages) + { + _usePrimaryData = usePrimaryData; + _primaryVehicleData = primaryVehicleData; + _primaryAdas = primaryVehicleData.ADAS; + } public bool EngineStopStart => GetADASPropertyValue<bool>(nameof(EngineStopStart)); @@ -793,6 +828,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl private T GetADASPropertyValue<T>(string propertyName) { + if (_usePrimaryData) { + return GetPropertyValue<T>(_primaryAdas, propertyName); + } + foreach (var manufacturingStage in _manufacturingStages) { var adas = manufacturingStage.Vehicle.ADAS; if (adas == null) @@ -807,7 +846,38 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl protected override bool IsInputDataCompleteTemplate(VectoSimulationJobType jobType, bool fullCheck) { - return InputComplete(ATEcoRollReleaseLockupClutch, nameof(ATEcoRollReleaseLockupClutch)); + if (fullCheck) + { + //use Binary AND to execute all Statements and gather information about missing parameters. + return InputComplete(EngineStopStart, nameof(EngineStopStart)) + & InputComplete(EcoRoll, nameof(EcoRoll)) + & InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl)) + & InputComplete(IsATPEcoRollComplete(), "APTEcoRollReleaseLockupClutch"); + } + return InputComplete(EngineStopStart, nameof(EngineStopStart)) + && InputComplete(EcoRoll, nameof(EcoRoll)) + && InputComplete(PredictiveCruiseControl, nameof(PredictiveCruiseControl)) + && InputComplete(IsATPEcoRollComplete(), "APTEcoRollReleaseLockupClutch"); + } + + private bool IsATPEcoRollComplete() + { + if (PrimaryGearboxIsAT()) { + return ATEcoRollReleaseLockupClutch != null; + } else { + return false; + } + } + + private bool PrimaryGearboxIsAT() + { + switch (_primaryVehicleData.Components.GearboxInputData.Type) { + case GearboxType.ATPowerSplit: + case GearboxType.ATSerial: + return true; + default: + return false; + } } public override string GetInvalidEntry() @@ -876,6 +946,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public IElectricStorageSystemDeclarationInputData ElectricStorage => null; public IElectricMachinesDeclarationInputData ElectricMachines => null; + public IIEPCDeclarationInputData IEPC => null; private T GetComponentPropertyValue<T>(string propertyName) { @@ -900,7 +971,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl if (fullCheck) { //use Binary AND to execute all Statements and gather information about missing parameters. return InputComplete(_consolidateBusAuxiliariesData, nameof(_consolidateBusAuxiliariesData)) - & _consolidateBusAuxiliariesData.IsInputDataCompleteFullCheck(jobType); + & (_consolidateBusAuxiliariesData != null && _consolidateBusAuxiliariesData.IsInputDataCompleteFullCheck(jobType)); } return InputComplete(_consolidateBusAuxiliariesData, nameof(_consolidateBusAuxiliariesData)) && _consolidateBusAuxiliariesData.IsInputDataComplete(jobType); @@ -922,6 +993,9 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl protected override IList<string> GetInvalidEntriesTemplate(VectoSimulationJobType jobType) { + if (_consolidateBusAuxiliariesData == null) { + return new List<string>(); + } return _invalidEntries.Concat(_consolidateBusAuxiliariesData.GetInvalidEntries(jobType)).ToList(); } } @@ -1171,16 +1245,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl // --------------------------------------------------------------------------------------- public class ConsolidatedHVACBusAuxiliariesData : ConsolidatedDataBase, IHVACBusAuxiliariesDeclarationData { + public ConsolidatedHVACBusAuxiliariesData(IEnumerable<IManufacturingStageInputData> manufacturingStages) : base(manufacturingStages) { } public BusHVACSystemConfiguration? SystemConfiguration => GetHVACBusAuxPropertyValue<BusHVACSystemConfiguration?>(nameof(SystemConfiguration)); - public HeatPumpType? HeatPumpTypeDriverCompartment => GetHVACBusAuxPropertyValue<HeatPumpType?>(nameof(HeatPumpTypeDriverCompartment)); + public HeatPumpType? HeatPumpTypeCoolingDriverCompartment => GetHVACBusAuxPropertyValue<HeatPumpType?>(nameof(HeatPumpTypeCoolingDriverCompartment)); + + public HeatPumpType? HeatPumpTypeHeatingDriverCompartment => GetHVACBusAuxPropertyValue<HeatPumpType?>(nameof(HeatPumpTypeHeatingDriverCompartment)); - public HeatPumpMode? HeatPumpModeDriverCompartment => GetHVACBusAuxPropertyValue<HeatPumpMode?>(nameof(HeatPumpModeDriverCompartment)); + public HeatPumpType? HeatPumpTypeCoolingPassengerCompartment => GetHVACBusAuxPropertyValue<HeatPumpType?>(nameof(HeatPumpTypeCoolingPassengerCompartment)); + public HeatPumpType? HeatPumpTypeHeatingPassengerCompartment => GetHVACBusAuxPropertyValue<HeatPumpType?>(nameof(HeatPumpTypeHeatingPassengerCompartment)); - public IList<Tuple<HeatPumpType, HeatPumpMode>> HeatPumpPassengerCompartments => GetHeatPumpPassengerCompartments(); public Watt AuxHeaterPower => GetHVACBusAuxPropertyValue<Watt>(nameof(AuxHeaterPower)); @@ -1201,19 +1278,6 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public bool EngineWasteGasHeatExchanger { get; } - private IList<Tuple<HeatPumpType, HeatPumpMode>> GetHeatPumpPassengerCompartments() - { - if (_manufacturingStages?.Any() != true) - return null; - - foreach (var entry in _manufacturingStages) { - if (entry.Vehicle?.Components?.BusAuxiliaries?.HVACAux?.HeatPumpPassengerCompartments != null) - return entry.Vehicle.Components.BusAuxiliaries.HVACAux.HeatPumpPassengerCompartments; - } - - return null; - } - private T GetHVACBusAuxPropertyValue<T>(string propertyName) { @@ -1252,9 +1316,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl { if (fullCheck) { return MethodComplete(IsCorrectSystemConfiguration(), nameof(IsCorrectSystemConfiguration)) - & InputComplete(HeatPumpTypeDriverCompartment, nameof(HeatPumpTypeDriverCompartment)) - & InputComplete(HeatPumpModeDriverCompartment, nameof(HeatPumpModeDriverCompartment)) - & InputComplete(HeatPumpPassengerCompartments, nameof(HeatPumpPassengerCompartments)) + & InputComplete(HeatPumpTypeCoolingDriverCompartment, nameof(HeatPumpTypeCoolingDriverCompartment)) + & InputComplete(HeatPumpTypeHeatingDriverCompartment, nameof(HeatPumpTypeHeatingDriverCompartment)) + & InputComplete(HeatPumpTypeCoolingPassengerCompartment, nameof(HeatPumpTypeCoolingPassengerCompartment)) + & InputComplete(HeatPumpTypeHeatingPassengerCompartment, nameof(HeatPumpTypeHeatingPassengerCompartment)) & InputComplete(AuxHeaterPower, nameof(AuxHeaterPower)) & InputComplete(DoubleGlazing, nameof(DoubleGlazing)) & InputComplete(AdjustableAuxiliaryHeater, nameof(AdjustableAuxiliaryHeater)) @@ -1262,9 +1327,10 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl & MethodComplete(RequiredParametersForJobType(jobType), nameof(RequiredParametersForJobType)); } return MethodComplete(IsCorrectSystemConfiguration(), nameof(IsCorrectSystemConfiguration)) - && InputComplete(HeatPumpTypeDriverCompartment, nameof(HeatPumpTypeDriverCompartment)) - && InputComplete(HeatPumpModeDriverCompartment, nameof(HeatPumpModeDriverCompartment)) - && InputComplete(HeatPumpPassengerCompartments, nameof(HeatPumpPassengerCompartments)) + && InputComplete(HeatPumpTypeCoolingDriverCompartment, nameof(HeatPumpTypeCoolingDriverCompartment)) + && InputComplete(HeatPumpTypeHeatingDriverCompartment, nameof(HeatPumpTypeHeatingDriverCompartment)) + && InputComplete(HeatPumpTypeCoolingPassengerCompartment, nameof(HeatPumpTypeCoolingPassengerCompartment)) + && InputComplete(HeatPumpTypeHeatingPassengerCompartment, nameof(HeatPumpTypeHeatingPassengerCompartment)) && InputComplete(AuxHeaterPower, nameof(AuxHeaterPower)) && InputComplete(DoubleGlazing, nameof(DoubleGlazing)) && InputComplete(AdjustableAuxiliaryHeater, nameof(AdjustableAuxiliaryHeater)) diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLPTOReader.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLPTOReader.cs index b8d842dcce2f4d8a0609be5263db429fe1842900..2f36798a528331dc27db3b3be05ab530133b6d59 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLPTOReader.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Declaration/Reader/Impl/XMLPTOReader.cs @@ -86,4 +86,19 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl public XMLPTOReaderV20(IXMLDeclarationVehicleData vehicle, XmlNode componentNode) : base( vehicle, componentNode) { } } + + // --------------------------------------------------------------------------------------- + + public class XMLPTOReaderV24 : XMLPTOReaderV20 + { + public new static readonly XNamespace NAMESPACE_URI = XMLDefinitions.DECLARATION_DEFINITIONS_NAMESPACE_URI_V24; + + //public new const string XSD_TYPE = "PTOType"; + + public new static readonly string QUALIFIED_XSD_TYPE = XMLHelper.CombineNamespace(NAMESPACE_URI.NamespaceName, XSD_TYPE); + + public XMLPTOReaderV24(IXMLDeclarationVehicleData vehicle, XmlNode componentNode) : base( + vehicle, componentNode) + { } + } } diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs index 930821020711f880e5047da2779ba855c318f2f2..74c63b6ab0d7f7286ae9b60bc09ccb925221df4a 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/Engineering/DataProvider/XMLEngineeringVehicleDataProvider.cs @@ -112,7 +112,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider public bool? SleeperCab => false; - public virtual bool? AirdragModifiedMultistage => null; + public virtual bool? AirdragModifiedMultistep => null; public TankSystem? TankSystem => ElementExists(XMLNames.Vehicle_NgTankSystem) @@ -148,9 +148,15 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider public ConsumerTechnology? DoorDriveTechnology => ConsumerTechnology.Unknown; public virtual VehicleDeclarationType VehicleDeclarationType { get; } - public TableData MaxPropulsionTorque => null; + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits => null; + + public TableData BoostingLimitations => null; IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components => null; + public string VehicleTypeApprovalNumber => null; + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } IAdvancedDriverAssistantSystemDeclarationInputData IVehicleDeclarationInputData.ADAS => null; @@ -211,7 +217,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider public virtual Meter Height => GetNode("VehicleHeight")?.InnerText.ToDouble().SI<Meter>(); - public TableData ElectricMotorTorqueLimits => null; + public virtual Meter Length => null; @@ -243,8 +249,8 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML.Engineering.DataProvider BaseNode, DataSource.SourcePath, XMLNames.Vehicle_PTOCycle, XMLNames.Vehicle_PTOCycle_Entry, AttributeMappings.PTOCycleMap); - public TableData PTOCycleWhileDriving => null; - + public virtual TableData PTOCycleWhileDriving => null; + #endregion #region Overrides of AbstractXMLResource diff --git a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs index c96b5604661cab3a4bd09fa6be19019b6ee3030f..6b4c37b2b4a7601c03a34488db1b79393d9e5667 100644 --- a/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs +++ b/VectoCore/VectoCore/InputData/FileIO/XML/XMLInputDataFactory.cs @@ -145,7 +145,7 @@ namespace TUGraz.VectoCore.InputData.FileIO.XML case XmlDocumentType.DeclarationJobData: return ReadDeclarationJob(xmlDoc, source); case XmlDocumentType.EngineeringJobData: return ReadEngineeringJob(xmlDoc, source); //case XmlDocumentType.PrimaryVehicleBusOutputData: return ReadPrimaryVehicleDeclarationJob(xmlDoc, source); - case XmlDocumentType.MultistageOutputData: return ReadMultistageDeclarationJob(xmlDoc, source); + case XmlDocumentType.MultistepOutputData: return ReadMultistageDeclarationJob(xmlDoc, source); case XmlDocumentType.EngineeringComponentData: case XmlDocumentType.DeclarationComponentData: case XmlDocumentType.ManufacturerReport: diff --git a/VectoCore/VectoCore/InputData/Impl/InputData.cs b/VectoCore/VectoCore/InputData/Impl/InputData.cs index 386b4c6ff0188df6af1cf9bf7b5bfa6f64766317..e3a7d4c85dfe044c14a3dad93e055fc48597a4c4 100644 --- a/VectoCore/VectoCore/InputData/Impl/InputData.cs +++ b/VectoCore/VectoCore/InputData/Impl/InputData.cs @@ -298,9 +298,14 @@ namespace TUGraz.VectoCore.InputData.Impl #region Implementation of IElectricMotorVoltageLevel public Volt VoltageLevel { get; internal set; } + public NewtonMeter ContinuousTorque { get; internal set; } + public PerSecond ContinuousTorqueSpeed { get; internal set; } + public NewtonMeter OverloadTorque { get; internal set; } + public PerSecond OverloadTestSpeed { get; internal set; } + public Second OverloadTime { get; internal set; } public TableData FullLoadCurve { get; internal set; } - //public TableData DragCurve { get; internal set; } - public TableData EfficiencyMap { get; internal set; } + //public TableData EfficiencyMap { get; internal set; } + public IList<IElectricMotorPowerMap> PowerMap { get; internal set; } #endregion } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs index 99b0390305e5d043bfbbed82d37f67cb18e2bb83..b2d437bb2d471ae5387a829f6757d700d2a0b5a4 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterCompletedBusSpecific.cs @@ -222,37 +222,33 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter if (completedVehicle.NumberPassengersStandingUpperDeck == null) { throw new VectoException("NumberOfPassengersStandingUpperDeck input parameter is required"); } - if (busAux.HeatPumpTypeDriverCompartment == null) { - throw new VectoException("HeatPumpTypeDriverCompartment input parameter is required"); + if (busAux.HeatPumpTypeCoolingDriverCompartment == null) { + throw new VectoException("HeatPumpTypeDriverCompartment Cooling input parameter is required"); } - if (busAux.HeatPumpPassengerCompartments == null || busAux.HeatPumpPassengerCompartments.Count == 0) { - throw new VectoException("HeatPumpPassengerCompartments input parameter is required"); + if (busAux.HeatPumpTypeHeatingDriverCompartment == null) { + throw new VectoException("HeatPumpTypeDriverCompartment Heating input parameter is required"); } - if (busAux.HeatPumpModeDriverCompartment == null || (busAux.HeatPumpTypeDriverCompartment != HeatPumpType.none && busAux.HeatPumpModeDriverCompartment.Value == HeatPumpMode.N_A)) { - throw new VectoException("HeatPumpTypeDriverCompartment input parameter is required"); + if (busAux.HeatPumpTypeCoolingPassengerCompartment == null) { + throw new VectoException("HeatPumpTypePassengerCompartment Cooling input parameter is required"); } + if (busAux.HeatPumpTypeHeatingPassengerCompartment == null) { + throw new VectoException("HeatPumpTypePassengerCompartment Heating input parameter is required"); + } + - if (hvacConfiguration.RequiresDriverAC() && busAux.HeatPumpTypeDriverCompartment == HeatPumpType.none) { + if (hvacConfiguration.RequiresDriverAC() && busAux.HeatPumpTypeCoolingDriverCompartment == HeatPumpType.none && busAux.HeatPumpTypeHeatingDriverCompartment == HeatPumpType.none) { throw new VectoException("HVAC System Configuration {0} requires DriverAC Technology", hvacConfiguration); } - if (hvacConfiguration.RequiresPassengerAC() && busAux.HeatPumpPassengerCompartments.All(x => x.Item1 == HeatPumpType.none)) { + if (hvacConfiguration.RequiresPassengerAC() && busAux.HeatPumpTypeCoolingPassengerCompartment == HeatPumpType.none && busAux.HeatPumpTypeHeatingPassengerCompartment == HeatPumpType.none) { throw new VectoException("HVAC System Configuration {0} requires PassengerAC Technology", hvacConfiguration); } - if (busAux.HeatPumpPassengerCompartments.Any(x => x.Item1 != HeatPumpType.none && x.Item2 == HeatPumpMode.N_A)) { - throw new VectoException("HeatPumpModePassengerCompartment input parameter is required"); - } + - var heatPumpTypeDriverCompartment = - busAux.HeatPumpModeDriverCompartment == HeatPumpMode.heating - ? HeatPumpType.none - : busAux.HeatPumpTypeDriverCompartment.Value; + var heatPumpTypeDriverCompartment = busAux.HeatPumpTypeCoolingPassengerCompartment.Value; - var heatPumpTypePassengerCompartment = ( - busAux.HeatPumpPassengerCompartments.All(x => x.Item2 == HeatPumpMode.heating) - ? new[] {HeatPumpType.none}.ToList() - : busAux.HeatPumpPassengerCompartments.Select(x => x.Item1).ToList()).FirstOrDefault(); + var heatPumpTypePassengerCompartment = busAux.HeatPumpTypeCoolingPassengerCompartment.Value; var internalLength = hvacConfiguration == BusHVACSystemConfiguration.Configuration2 ? 2 * Constants.BusParameters.DriverCompartmentLength // OK diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs index a142fe842ca380e3a3649b5f4cd50153214ea10b..b8101976729273e3126b8d49466b128d04157dd8 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterHeavyLorry.cs @@ -238,7 +238,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type); retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime; - var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear); + var limits = vehicle.TorqueLimits?.ToDictionary(e => e.Gear) ?? new Dictionary<int, ITorqueLimitInputData>(); var numGears = gearbox.Gears.Count; var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true); @@ -265,7 +265,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return retVal; } - private static WHRData CreateWHRData(IWHRData whrInputData, MissionType missionType, WHRType type) + protected static WHRData CreateWHRData(IWHRData whrInputData, MissionType missionType, WHRType type) { if (whrInputData == null || whrInputData.GeneratedPower == null) { throw new VectoException("Missing WHR Data"); @@ -342,14 +342,14 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter var retVal = SetCommonGearboxData(gearbox); - if (adas != null && retVal.Type.AutomaticTransmission() && adas.EcoRoll != EcoRollType.None && - !adas.ATEcoRollReleaseLockupClutch.HasValue) { - throw new VectoException("Input parameter ATEcoRollReleaseLockupClutch required for AT transmission"); - } + //if (adas != null && retVal.Type.AutomaticTransmission() && adas.EcoRoll != EcoRollType.None && + // !adas.ATEcoRollReleaseLockupClutch.HasValue) { + // throw new VectoException("Input parameter ATEcoRollReleaseLockupClutch required for AT transmission"); + //} retVal.ATEcoRollReleaseLockupClutch = adas != null && adas.EcoRoll != EcoRollType.None && retVal.Type.AutomaticTransmission() - ? adas.ATEcoRollReleaseLockupClutch.Value + ? (adas.ATEcoRollReleaseLockupClutch.HasValue ? adas.ATEcoRollReleaseLockupClutch.Value : false) : false; if (!SupportedGearboxTypes.Contains(gearbox.Type)) { @@ -560,7 +560,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter }; } - private void WarnDeclarationMode(string inputData) + protected void WarnDeclarationMode(string inputData) { Log.Warn("{0} not in Declaration Mode!", inputData); } diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs index a2a8599a5b77448173b07e8f805809cfbad6cde8..5fd0766f12b0cae2466f9a745f3a4c00c51478c9 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/DeclarationDataAdapterSingleBus.cs @@ -16,6 +16,7 @@ using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter @@ -57,6 +58,65 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter #endregion + public override CombustionEngineData CreateEngineData( + IVehicleDeclarationInputData vehicle, IEngineModeDeclarationInputData mode, Mission mission) + { + var engine = vehicle.Components.EngineInputData; + var gearbox = vehicle.Components.GearboxInputData; + + if (!engine.SavedInDeclarationMode) { + WarnDeclarationMode("EngineData"); + } + + var retVal = SetCommonCombustionEngineData(engine, SingleBusInputData.CompletedVehicle.TankSystem); + retVal.IdleSpeed = VectoMath.Max(mode.IdleSpeed, vehicle.EngineIdleSpeed); + + retVal.Fuels = new List<CombustionEngineFuelData>(); + foreach (var fuel in mode.Fuels) { + retVal.Fuels.Add( + new CombustionEngineFuelData() { + WHTCUrban = fuel.WHTCUrban, + WHTCRural = fuel.WHTCRural, + WHTCMotorway = fuel.WHTCMotorway, + ColdHotCorrectionFactor = fuel.ColdHotBalancingFactor, + CorrectionFactorRegPer = fuel.CorrectionFactorRegPer, + FuelData = DeclarationData.FuelData.Lookup(fuel.FuelType, SingleBusInputData.CompletedVehicle.TankSystem), + ConsumptionMap = FuelConsumptionMapReader.Create(fuel.FuelConsumptionMap), + FuelConsumptionCorrectionFactor = DeclarationData.WHTCCorrection.Lookup( + mission.MissionType.GetNonEMSMissionType(), fuel.WHTCRural, fuel.WHTCUrban, + fuel.WHTCMotorway) * fuel.ColdHotBalancingFactor * fuel.CorrectionFactorRegPer, + }); + } + + retVal.Inertia = DeclarationData.Engine.EngineInertia(retVal.Displacement, gearbox.Type); + retVal.EngineStartTime = DeclarationData.Engine.DefaultEngineStartTime; + var limits = vehicle.TorqueLimits.ToDictionary(e => e.Gear); + var numGears = gearbox.Gears.Count; + var fullLoadCurves = new Dictionary<uint, EngineFullLoadCurve>(numGears + 1); + fullLoadCurves[0] = FullLoadCurveReader.Create(mode.FullLoadCurve, true); + fullLoadCurves[0].EngineData = retVal; + foreach (var gear in gearbox.Gears) { + var maxTorque = VectoMath.Min( + GbxMaxTorque(gear, numGears, fullLoadCurves[0].MaxTorque), + VehMaxTorque(gear, numGears, limits, fullLoadCurves[0].MaxTorque)); + fullLoadCurves[(uint)gear.Gear] = IntersectFullLoadCurves(fullLoadCurves[0], maxTorque); + } + + retVal.FullLoadCurves = fullLoadCurves; + + retVal.WHRType = engine.WHRType; + if ((retVal.WHRType & WHRType.ElectricalOutput) != 0) { + retVal.ElectricalWHR = CreateWHRData( + mode.WasteHeatRecoveryDataElectrical, mission.MissionType, WHRType.ElectricalOutput); + } + if ((retVal.WHRType & WHRType.MechanicalOutputDrivetrain) != 0) { + retVal.MechanicalWHR = CreateWHRData( + mode.WasteHeatRecoveryDataMechanical, mission.MissionType, WHRType.MechanicalOutputDrivetrain); + } + + return retVal; + } + protected override TransmissionLossMap CreateGearLossMap(ITransmissionInputData gear, uint i, bool useEfficiencyFallback, VehicleCategory vehicleCategory, GearboxType gearboxType) { return TransmissionLossMapReader.Create(gear.LossMap, gear.Ratio, $"Gear {i + 1}", true); diff --git a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs index b80513e8f14ad212e2ef3ed725575fbbc8bd65ac..b06af35e367853576be19db626ff0c69bcaaed27 100644 --- a/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs +++ b/VectoCore/VectoCore/InputData/Reader/DataObjectAdapter/EngineeringDataAdapter.cs @@ -820,8 +820,8 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter for (var i = 0; i < entry.Count; i++) { retVal.Batteries.Add(Tuple.Create(entry.StringId, new BatteryData() { - MinSOC = b.MinSOC, - MaxSOC = b.MaxSOC, + MinSOC = b.MinSOC.Value, + MaxSOC = b.MaxSOC.Value, MaxCurrent = BatteryMaxCurrentReader.Create(b.MaxCurrentMap), Capacity = b.Capacity, InternalResistance = @@ -863,7 +863,7 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter } public List<Tuple<PowertrainPosition, ElectricMotorData>> CreateElectricMachines( - IElectricMachinesEngineeringInputData electricMachines, TableData torqueLimits) + IElectricMachinesEngineeringInputData electricMachines, Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> torqueLimits) { if (electricMachines == null) { return null; @@ -880,26 +880,34 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter return electricMachines.Entries .Select(x => Tuple.Create(x.Position, CreateElectricMachine(x.ElectricMachine, x.Count, x.RatioADC, x.RatioPerGear, x.MechanicalTransmissionEfficiency, - x.MechanicalTransmissionLossMap, torqueLimits))).ToList(); + x.MechanicalTransmissionLossMap, torqueLimits?.First(t =>t.Key == x.Position).Value))).ToList(); } private ElectricMotorData CreateElectricMachine(IElectricMotorEngineeringInputData motorData, int count, - double ratio, double[] ratioPerGear, double efficiency, TableData adcLossMap, TableData torqueLimits) + double ratio, double[] ratioPerGear, double efficiency, TableData adcLossMap, List<Tuple<Volt, TableData>> torqueLimits) { var voltageLevels = new List<ElectricMotorVoltageLevelData>(); foreach (var entry in motorData.VoltageLevels.OrderBy(x => x.VoltageLevel)) { var fullLoadCurve = ElectricFullLoadCurveReader.Create(entry.FullLoadCurve, count); - var maxTorqueCurve = torqueLimits == null ? null : ElectricFullLoadCurveReader.Create(torqueLimits, count); + var maxTorqueCurve = torqueLimits == null + ? null + : ElectricFullLoadCurveReader.Create( + torqueLimits.Where(x => x.Item1 == null || x.Item1.IsEqual(entry.VoltageLevel)).FirstOrDefault()?.Item2, count); var fullLoadCurveCombined = IntersectEMFullLoadCurves(fullLoadCurve, maxTorqueCurve); voltageLevels.Add(new ElectricMotorVoltageLevelData() { Voltage = entry.VoltageLevel, + ContinuousTorque = entry.ContinuousTorque * count, + ContinuousTorqueSpeed = entry.ContinuousTorqueSpeed, + OverloadTorque = entry.OverloadTorque ?? 0.SI<NewtonMeter>() * count, + OverloadTestSpeed = entry.OverloadTestSpeed ?? 0.RPMtoRad(), + OverloadTime = entry.OverloadTime, FullLoadCurve = fullLoadCurveCombined, - //DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count), - EfficiencyMap = ElectricMotorMapReader.Create(entry.EfficiencyMap, count), - }); + // DragCurve = ElectricMotorDragCurveReader.Create(entry.DragCurve, count), + EfficiencyMap = ElectricMotorMapReader.Create(entry.PowerMap.First().PowerMap, count), //PowerMap + }); } @@ -911,15 +919,11 @@ namespace TUGraz.VectoCore.InputData.Reader.DataObjectAdapter EfficiencyData = new VoltageLevelData() { VoltageLevels = voltageLevels}, DragCurve = ElectricMotorDragCurveReader.Create(motorData.DragCurve, count), Inertia = motorData.Inertia * count, - ContinuousTorque = motorData.ContinuousTorque * count, - ContinuousTorqueSpeed = motorData.ContinuousTorqueSpeed, - OverloadTorque = (motorData.OverloadTorque ?? 0.SI<NewtonMeter>()) * count, - OverloadTestSpeed = motorData.OverloadTestSpeed ?? 0.RPMtoRad(), - OverloadTime = motorData.OverloadTime, OverloadRegenerationFactor = motorData.OverloadRecoveryFactor, RatioADC = ratio, RatioPerGear = ratioPerGear, - TransmissionLossMap = lossMap + TransmissionLossMap = lossMap, + ContinuousTorque = voltageLevels.First().ContinuousTorque, }; } diff --git a/VectoCore/VectoCore/InputData/Reader/IVectoRunDataFactoryFactory.cs b/VectoCore/VectoCore/InputData/Reader/IVectoRunDataFactoryFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..b928e4a345969269f4d7f51de04f8e17ff017d04 --- /dev/null +++ b/VectoCore/VectoCore/InputData/Reader/IVectoRunDataFactoryFactory.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JetBrains.Annotations; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.OutputData; + +namespace TUGraz.VectoCore.InputData +{ + public interface IVectoRunDataFactoryFactory + { + IVectoRunDataFactory CreateEngineeringRunDataFactory(IEngineeringInputDataProvider inputDataProvider); + + /// <summary> + /// Creates a VectoRunDataFactory based on the type of inputDataProvider + /// </summary> + /// <param name="inputDataProvider"></param> + /// <param name="report"></param> + /// <returns></returns> + IVectoRunDataFactory CreateDeclarationRunDataFactory([NotNull] IInputDataProvider inputDataProvider, + IDeclarationReport report, IVTPReport vtpReport); + } +} diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs index f6162580c1b61181fe929401151cf204888c3fa9..9fbcf5fe1c116cb812bb0d54386ab1f7eeb3cce2 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/DeclarationModeSingleBusVectoRunDataFactory.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -25,10 +26,7 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl _dao.SingleBusInputData = singleBusInputData; } - #region Implementation of IVectoRunDataFactory - - #region Overrides of DeclarationModePrimaryBusVectoRunDataFactory - + protected override Segment GetSegment(IVehicleDeclarationInputData vehicle) { //if (vehicle.VehicleCategory != VehicleCategory.HeavyBusCompletedVehicle) { @@ -56,7 +54,6 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return segment; } - #endregion protected override IDeclarationDataAdapter DataAdapter => _dao; @@ -105,7 +102,26 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl simulationRunData.BusAuxiliaries = _dao.CreateBusAuxiliariesData(mission, _singleBusInputData.PrimaryVehicle, _singleBusInputData.CompletedVehicle, simulationRunData); return simulationRunData; } + + protected override void InitializeReport() + { + VectoRunData powertrainConfig; + List<List<FuelData.Entry>> fuels; + var vehicle = InputDataProvider.JobInputData.Vehicle; + if (vehicle.ExemptedVehicle) { + powertrainConfig = CreateVectoRunData(vehicle, 0, null, new KeyValuePair<LoadingType, Tuple<Kilogram, double?>>()); + fuels = new List<List<FuelData.Entry>>(); + } else { + powertrainConfig = _segment.Missions.Select( + mission => CreateVectoRunData( + vehicle, 0, mission, mission.Loadings.First())) + .FirstOrDefault(x => x != null); + fuels = vehicle.Components.EngineInputData.EngineModes.Select(x => x.Fuels.Select(f => DeclarationData.FuelData.Lookup(f.FuelType, _singleBusInputData.CompletedVehicle.TankSystem)).ToList()) + .ToList(); + } + Report.InitializeReport(powertrainConfig, fuels); + } } - #endregion + } diff --git a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs index fef487cdc638b9a7a7e9a7deb3278dc02d72d277..e8c249af168970033b953dbf60a4ea4fd68ca9fe 100644 --- a/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs +++ b/VectoCore/VectoCore/InputData/Reader/Impl/EngineeringModeVectoRunDataFactory.cs @@ -105,10 +105,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl GearboxData = new GearboxData() { Type = vehicle.Components.GearboxInputData.Type, }, - GearshiftParameters = gearshiftParams - //ElectricMachinesData = electricMachinesData, - //VehicleData = dao.CreateVehicleData(vehicle) - }; + GearshiftParameters = gearshiftParams, + ElectricMachinesData = electricMachinesData, + //VehicleData = dao.CreateVehicleData(vehicle) + }; var tempVehicle = dao.CreateVehicleData(vehicle); var tmpStrategy = PowertrainBuilder.GetShiftStrategy(new SimplePowertrainContainer(tmpRunData)); gearboxData = dao.CreateGearboxData( @@ -118,6 +118,8 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl AxleGearData = axlegearData, ElectricMachinesData = electricMachinesData }, tmpStrategy); + angledriveData = dao.CreateAngledriveData(vehicle.Components.AngledriveInputData); + } if (gearshiftParams == null) { @@ -150,9 +152,9 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl //PTO = ptoTransmissionData, Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name), ExecutionMode = ExecutionMode.Engineering, - ElectricMachinesData = electricMachinesData, - //HybridStrategyParameters = dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters), - BatteryData = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC), + ElectricMachinesData = electricMachinesData, + //HybridStrategyParameters = dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters), + BatteryData = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC), SuperCapData = dao.CreateSuperCapData(vehicle.Components.ElectricStorage, vehicle.InitialSOC), SimulationType = SimulationType.DistanceCycle | SimulationType.MeasuredSpeedCycle | SimulationType.PWheel, GearshiftParameters = gearshiftParams, @@ -223,17 +225,18 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl var drivingCycle = CyclesCache.GetOrAdd(cycle.CycleData.Source, _=> DrivingCycleDataReader.ReadFromDataTable(cycle.CycleData, cycle.Name, crossWindRequired)); var electricMachines = - dao.CreateElectricMachines(vehicle.Components.ElectricMachines, - vehicle.ElectricMotorTorqueLimits) ?? - new List<Tuple<PowertrainPosition, ElectricMotorData>>(); - var battery = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC); + dao.CreateElectricMachines(vehicle.Components.ElectricMachines, + vehicle.ElectricMotorTorqueLimits) ?? + new List<Tuple<PowertrainPosition, ElectricMotorData>>(); + var battery = dao.CreateBatteryData(vehicle.Components.ElectricStorage, vehicle.InitialSOC); var superCap = dao.CreateSuperCapData(vehicle.Components.ElectricStorage, vehicle.InitialSOC); - var jobType = electricMachines.Count > 0 && (battery != null || superCap != null) - ? VectoSimulationJobType.ParallelHybridVehicle - : VectoSimulationJobType.ConventionalVehicle; + + var jobType = electricMachines.Count > 0 && (battery != null || superCap != null) + ? VectoSimulationJobType.ParallelHybridVehicle + : VectoSimulationJobType.ConventionalVehicle; - var vehicleData = dao.CreateVehicleData(vehicle); + var vehicleData = dao.CreateVehicleData(vehicle); var gearshiftParams = dao.CreateGearshiftData( gearboxData.Type, InputDataProvider.DriverInputData.GearshiftInputData, @@ -249,14 +252,15 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl UpshiftMinAcceleration = DeclarationData.Gearbox.UpshiftMinAcceleration, }; } + var hybridParameters = jobType == VectoSimulationJobType.ParallelHybridVehicle - ? dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters, - vehicle.MaxPropulsionTorque, engineData) - : null; - yield return new VectoRunData { + ? dao.CreateHybridStrategyParameters(InputDataProvider.JobInputData.HybridStrategyParameters, + vehicle.BoostingLimitations, engineData) + : null; + yield return new VectoRunData { JobName = InputDataProvider.JobInputData.JobName, - JobType = jobType, - EngineData = engineData, + JobType = jobType, + EngineData = engineData, GearboxData = gearboxData, AxleGearData = axlegearData, AngledriveData = angledriveData, @@ -271,9 +275,10 @@ namespace TUGraz.VectoCore.InputData.Reader.Impl Cycle = new DrivingCycleProxy(drivingCycle, cycle.Name), ExecutionMode = ExecutionMode.Engineering, PTOCycleWhileDrive = ptoCycleWhileDrive, - ElectricMachinesData = electricMachines, - HybridStrategyParameters = hybridParameters, - BatteryData = battery, + + ElectricMachinesData = electricMachines, + HybridStrategyParameters = hybridParameters, + BatteryData = battery, SuperCapData = superCap, SimulationType = SimulationType.DistanceCycle | SimulationType.MeasuredSpeedCycle | SimulationType.PWheel, diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..6546713afeeb2ddf50b1181fc0e683bfdb28b7bc --- /dev/null +++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryFactory.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JetBrains.Annotations; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.XML; + +namespace TUGraz.VectoCore.InputData.Reader +{ + public class VectoRunDataFactoryFactory : IVectoRunDataFactoryFactory + { + /// <summary> + /// Creates a VectoRunDataFactory based on the type of inputDataProvider + /// </summary> + /// <param name="inputDataProvider"></param> + /// <param name="report"></param> + /// <returns></returns> + public IVectoRunDataFactory CreateDeclarationRunDataFactory([NotNull] IInputDataProvider inputDataProvider, + IDeclarationReport report, IVTPReport vtpReport) + { + if (inputDataProvider == null) + throw new ArgumentNullException(nameof(inputDataProvider)); + + switch (inputDataProvider) + { + case IVTPDeclarationInputDataProvider vtpProvider: + return CreateRunDataReader(vtpProvider, vtpReport); + case ISingleBusInputDataProvider singleBusProvider: + return CreateRunDataReader(singleBusProvider, report); + case IDeclarationInputDataProvider declDataProvider: + return CreateRunDataReader(declDataProvider, report); + case IMultistageVIFInputData multistageVifInputData: + return CreateRunDataReader(multistageVifInputData, report); + default: + break; + } + throw new VectoException("Unknown InputData for Declaration Mode!"); + } + + + private IVectoRunDataFactory CreateRunDataReader(IMultistageVIFInputData multistageVifInputData, IDeclarationReport report) + { + if (multistageVifInputData.VehicleInputData == null) { + return new DeclarationModeCompletedMultistageBusVectoRunDataFactory( + multistageVifInputData.MultistageJobInputData, + report); + } + else { + return new DeclarationModeMultistageBusVectoRunDataFactory(multistageVifInputData, report); + } + } + + private IVectoRunDataFactory CreateRunDataReader(IDeclarationInputDataProvider declDataProvider, IDeclarationReport report) + { + var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory; + if (vehicleCategory.IsLorry()) { + return new DeclarationModeTruckVectoRunDataFactory(declDataProvider, report); + } + + if (vehicleCategory.IsBus()) + switch (declDataProvider.JobInputData.Vehicle.VehicleCategory) + { + case VehicleCategory.HeavyBusCompletedVehicle: + return new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, report); + case VehicleCategory.HeavyBusPrimaryVehicle: + return new DeclarationModePrimaryBusVectoRunDataFactory(declDataProvider, report); + default: + break; + } + + throw new Exception( + $"Could not create RunDataFactory for Vehicle Category{vehicleCategory}"); + } + + private IVectoRunDataFactory CreateRunDataReader(IVTPDeclarationInputDataProvider vtpProvider, IDeclarationReport report) + { + var vtpReport = CastReport<IVTPReport>(report); + + if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry()) + { + return new DeclarationVTPModeVectoRunDataFactoryLorries(vtpProvider, vtpReport); + } + + if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus()) + { + return new DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider, vtpReport); + } + + + throw new Exception( + $"Could not create RunDataFactory for Vehicle Category{vtpProvider.JobInputData.Vehicle.VehicleCategory}"); + } + + private IVectoRunDataFactory CreateRunDataReader(ISingleBusInputDataProvider singleBusProvider, IDeclarationReport report) + { + return new DeclarationModeSingleBusVectoRunDataFactory(singleBusProvider, report); + } + + + + + public IVectoRunDataFactory CreateEngineeringRunDataFactory(IEngineeringInputDataProvider inputDataProvider) + { + throw new NotImplementedException(); + } + + private T CastReport<T>(object report) + { + if (report is T castedReport) { + return castedReport; + } else { + throw new VectoException("Error creating VectoRunDataFactory - wrong ReportType"); + //return null; + } + } + } +} diff --git a/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs new file mode 100644 index 0000000000000000000000000000000000000000..7bc75be024efa0c23b34e5d4f3ab1bfbf586a264 --- /dev/null +++ b/VectoCore/VectoCore/InputData/Reader/VectoRunDataFactoryNinjectModule.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Ninject.Modules; + +namespace TUGraz.VectoCore.InputData.Reader +{ + class VectoRunDataFactoryNinjectModule : NinjectModule + { + #region Overrides of NinjectModule + + public override void Load() + { + Bind<IVectoRunDataFactoryFactory>().To<VectoRunDataFactoryFactory>().InSingletonScope(); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/JsonKeys.Designer.cs b/VectoCore/VectoCore/JsonKeys.Designer.cs index 635a01d099148c151fe468f853a4a73ab3068b0a..6e6af76ed1e2ccfdbc8a9af7216d10b68c011ee3 100644 --- a/VectoCore/VectoCore/JsonKeys.Designer.cs +++ b/VectoCore/VectoCore/JsonKeys.Designer.cs @@ -493,11 +493,11 @@ namespace TUGraz.VectoCore { } /// <summary> - /// Looks up a localized string similar to InterimStage. + /// Looks up a localized string similar to InterimStep. /// </summary> - internal static string InterimStage { + internal static string InterimStep { get { - return ResourceManager.GetString("InterimStage", resourceCulture); + return ResourceManager.GetString("InterimStep", resourceCulture); } } diff --git a/VectoCore/VectoCore/JsonKeys.resx b/VectoCore/VectoCore/JsonKeys.resx index 1a022153c6a6bf665f169cca44aec55a52a2a441..bb4fdb88ba958319e22aff7b7e272c21af4177b6 100644 --- a/VectoCore/VectoCore/JsonKeys.resx +++ b/VectoCore/VectoCore/JsonKeys.resx @@ -381,8 +381,8 @@ <data name="PrimaryVehicle" xml:space="preserve"> <value>PrimaryVehicle</value> </data> - <data name="InterimStage" xml:space="preserve"> - <value>InterimStage</value> + <data name="InterimStep" xml:space="preserve"> + <value>InterimStep</value> </data> <data name="Completed" xml:space="preserve"> <value>Completed</value> diff --git a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs index acf7af51bd0c652c3e8f698610d5413b333e93cb..6241b2ba4c6654602803c9718672e255a2467604 100644 --- a/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs +++ b/VectoCore/VectoCore/Models/Simulation/Data/ModalResultField.cs @@ -360,26 +360,8 @@ namespace TUGraz.VectoCore.Models.Simulation.Data [ModalResultField(typeof(double))]HybridStrategySolution, - //[ModalResultField(typeof(double), caption: "AA_NonSmartAlternatorsEfficiency [%]")] AA_NonSmartAlternatorsEfficiency, - //[ModalResultField(typeof(SI), caption: "AA_SmartIdleCurrent_Amps [A]")] AA_SmartIdleCurrent_Amps, - //[ModalResultField(typeof(double), caption: "AA_SmartIdleAlternatorsEfficiency [%]")] AA_SmartIdleAlternatorsEfficiency, - //[ModalResultField(typeof(SI), caption: "AA_SmartTractionCurrent_Amps [A]")] AA_SmartTractionCurrent_Amps, - //[ModalResultField(typeof(double), caption: "AA_SmartTractionAlternatorEfficiency [%]")] AA_SmartTractionAlternatorEfficiency, - //[ModalResultField(typeof(SI), caption: "AA_SmartOverrunCurrent_Amps [A]")] AA_SmartOverrunCurrent_Amps, - //[ModalResultField(typeof(double), caption: "AA_SmartOverrunAlternatorEfficiency [%]")] AA_SmartOverrunAlternatorEfficiency, - //[ModalResultField(typeof(SI), caption: "AA_CompressorFlowRate_LitrePerSec [Ni L/s]")] AA_CompressorFlowRate_LitrePerSec, [ModalResultField(typeof(int), caption: "BusAux_Overrun [bool]")] BusAux_OverrunFlag, - //[ModalResultField(typeof(int), caption: "AA_EngineIdleFlag [bool]")] AA_EngineIdleFlag, - //[ModalResultField(typeof(int), caption: "AA_CompressorFlag [bool]")] AA_CompressorFlag, - //[ModalResultField(typeof(SI), caption: "AA_TotalCycleFC_Grams [g]", outputFactor: 1000)] AA_TotalCycleFC_Grams, - //[ModalResultField(typeof(SI), caption: "AA_TotalCycleFC_Litres [l]")] AA_TotalCycleFC_Litres, - //[ModalResultField(typeof(SI), caption: "AA_AveragePowerDemandCrankHVACMechanicals [W]")] AA_AveragePowerDemandCrankHVACMechanicals, - //[ModalResultField(typeof(SI), caption: "AA_AveragePowerDemandCrankHVACElectricals [W]")] AA_AveragePowerDemandCrankHVACElectricals, - //[ModalResultField(typeof(SI), caption: "AA_AveragePowerDemandCrankElectrics [W]")] AA_AveragePowerDemandCrankElectrics, - //[ModalResultField(typeof(SI), caption: "AA_AveragePowerDemandCrankPneumatics [W]")] AA_AveragePowerDemandCrankPneumatics, - //[ModalResultField(typeof(SI), caption: "AA_TotalCycleFuelConsumptionCompressorOff [g]", outputFactor: 1000)] AA_TotalCycleFuelConsumptionCompressorOff, - //[ModalResultField(typeof(SI), caption: "AA_TotalCycleFuelConsumptionCompressorOn [g]", outputFactor: 1000)] AA_TotalCycleFuelConsumptionCompressorOn, - + [ModalResultField(typeof(SI), "P_WHR_el [kW]", outputFactor:1e-3)] P_WHR_el_map, [ModalResultField(typeof(SI), "P_WHR_el_corr [kW]", outputFactor: 1e-3)] P_WHR_el_corr, [ModalResultField(typeof(SI), "P_WHR_mech [kW]", outputFactor: 1e-3)] P_WHR_mech_map, diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs index 01f9aff0e8ea62a0b9519e8871d1a57ddcd8f713..878c80f6a2e27397a3cd2bf22ecfe8385b7a0dfc 100644 --- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactory.cs @@ -45,6 +45,11 @@ namespace TUGraz.VectoCore.Models.Simulation SummaryDataContainer SumData { get; set; } int JobNumber { get; set; } IVectoRunDataFactory DataReader { get; } + ISimulatorFactory FollowUpSimulatorFactory { get; } + IOutputDataWriter ReportWriter { get; } + bool SerializeVectoRunData { get; set; } + + bool CreateFollowUpSimulatorFactory { get; set; } /// <summary> /// Creates powertrain and initializes it with the component's data. diff --git a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs index a224c48515fe629561d04cad86cf6af75a174e65..0d26b91c1c8575547753e1c7b8fd89ee9b4f4e37 100644 --- a/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/ISimulatorFactoryFactory.cs @@ -38,7 +38,16 @@ namespace TUGraz.VectoCore.Models.Simulation public interface ISimulatorFactoryFactory { ISimulatorFactory Factory( - ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, - IDeclarationReport declarationReport = null, IVTPReport vtpReport = null, bool validate = true); + ExecutionMode mode, + IInputDataProvider dataProvider, + IOutputDataWriter writer, bool validate = true); + + ISimulatorFactory Factory(ExecutionMode mode, + IInputDataProvider dataProvider, + IOutputDataWriter writer, + IDeclarationReport declarationReport, + IVTPReport vtpReport, + bool validate = true + ); } } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs b/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs index e7d54357db5c7c648816df60fcff9cac6f713e15..fc47ca8ee207c34e8f1ff8723c5fc91847cc576b 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/JobContainer.cs @@ -30,12 +30,14 @@ */ using System; +using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Threading; using System.Threading.Tasks; +using System.Windows.Forms.VisualStyles; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; @@ -47,10 +49,87 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// </summary> public class JobContainer : LoggingObject { - internal readonly List<RunEntry> Runs = new List<RunEntry>(); - private readonly SummaryDataContainer _sumWriter; + private class RunContainer + { + private readonly ISimulatorFactory _simulatorFactory; + private IOutputDataWriter _outputWriter; + + public IOutputDataWriter OutputWriter => _outputWriter; + + private bool followUpSimulatorFactoryFetched = false; + + private readonly ConcurrentDictionary<int, byte> _unfinishedRuns = new ConcurrentDictionary<int, byte>(); + //private readonly HashSet<int> _unfinishedRuns = new HashSet<int>(); + private readonly ReaderWriterLockSlim _unfinishedRunsRwLock = new ReaderWriterLockSlim(); + + + public RunContainer(ISimulatorFactory simulatorFactory, IList<int> runIds) + { + _simulatorFactory = simulatorFactory; + foreach (var runId in runIds) { + _unfinishedRuns[runId] = Byte.MinValue; + } + } + + public void JobCompleted(int runId) + { + try { + _unfinishedRunsRwLock.EnterWriteLock(); + _unfinishedRuns.TryRemove(runId, out var tmpByte); + if (AllCompletedUnsafe()) { + _outputWriter = _simulatorFactory.ReportWriter; + } + } finally { + _unfinishedRunsRwLock.ExitWriteLock(); + } + } + + private bool AllCompletedUnsafe() + { + return _unfinishedRuns.Count == 0; + } + + private bool AllCompleted() + { + try { + _unfinishedRunsRwLock.EnterReadLock(); + return AllCompletedUnsafe(); + } finally { + _unfinishedRunsRwLock.ExitReadLock(); + } + } + [MethodImpl(MethodImplOptions.Synchronized)] + public ISimulatorFactory GetFollowUpSimulatorFactory() + { + try { + if (followUpSimulatorFactoryFetched || !AllCompleted()) { + return null; + } + + followUpSimulatorFactoryFetched = true; + return _simulatorFactory.FollowUpSimulatorFactory; + }finally { + + } + } + } + + + + private readonly SummaryDataContainer _sumWriter; + internal readonly List<RunEntry> Runs = new List<RunEntry>(); + private readonly ConcurrentDictionary<int, byte> _unfinishedRuns = new ConcurrentDictionary<int, byte>(); //only key is used + private ReaderWriterLockSlim _runsRwLock = new ReaderWriterLockSlim(); + private ConcurrentDictionary<int, RunContainer> _runContainerMap = new ConcurrentDictionary<int, RunContainer>(); private static int _jobNumber; + private bool _multithreaded = true; + private bool _canceled = false; + private ReaderWriterLockSlim _cancelLock = new ReaderWriterLockSlim(); + + private ConcurrentDictionary<int, ProgressEntry> _progressDictionary = + new ConcurrentDictionary<int, ProgressEntry>(); + /// <summary> /// Initializes a new empty instance of the <see cref="JobContainer"/> class. @@ -61,10 +140,40 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl _sumWriter = sumWriter; } + + public IEnumerable<IOutputDataWriter> GetOutputDataWriters() + { + IList<IOutputDataWriter> outputDataWriters = new List<IOutputDataWriter>(); + foreach (var runContainer in _runContainerMap.Values) { + if (runContainer.OutputWriter != null) { + outputDataWriters.Add(runContainer.OutputWriter); + } + } + + return outputDataWriters.Distinct(); + } + public void AddRun(IVectoRun run) { - Interlocked.Increment(ref _jobNumber); - Runs.Add(new RunEntry { Run = run, JobContainer = this }); + try { + _cancelLock.EnterReadLock(); + if (_canceled) { + return; + } + + Interlocked.Increment(ref _jobNumber); + + try { + _runsRwLock.EnterWriteLock(); + Runs.Add(new RunEntry(run, this)); + _unfinishedRuns[run.RunIdentifier] = Byte.MinValue; + } finally { + _runsRwLock.ExitWriteLock(); + } + } finally { + _cancelLock.ExitReadLock(); + } + } public struct CycleTypeDescription @@ -73,12 +182,18 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl public CycleType CycleType; } - public IEnumerable<CycleTypeDescription> GetCycleTypes() - { - return - Runs.Select( - r => new CycleTypeDescription { Name = r.Run.CycleName, CycleType = r.Run.GetContainer().RunData.Cycle?.CycleType ?? CycleType.None }) + public IEnumerable<CycleTypeDescription> GetCycleTypes(){ + try { + _runsRwLock.EnterReadLock(); + return Runs.Select( + r => new CycleTypeDescription { + Name = r.Run.CycleName, + CycleType = r.Run.GetContainer().RunData.Cycle?.CycleType ?? CycleType.None + }) .Distinct(); + } finally { + _runsRwLock.ExitReadLock(); + } } /// <summary> @@ -87,20 +202,40 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// <returns>A List of Run-Identifiers (unique), int</returns> public List<int> AddRuns(ISimulatorFactory factory) { - var runIDs = new List<int>(); - - factory.SumData = _sumWriter; - factory.JobNumber = Interlocked.Increment(ref _jobNumber); + try { + _cancelLock.EnterReadLock(); + var runIDs = new List<int>(); + if (_canceled) { + return runIDs; + } - foreach (var run in factory.SimulationRuns()) { - var entry = new RunEntry { Run = run, JobContainer = this }; - lock (Runs) { - Runs.Add(entry); + factory.SumData = _sumWriter; + factory.JobNumber = Interlocked.Increment(ref _jobNumber); + + try + { + _runsRwLock.EnterWriteLock(); + foreach (var run in factory.SimulationRuns()) + { + var entry = new RunEntry(run, this, factory.JobNumber); + Runs.Add(entry); + _unfinishedRuns[run.RunIdentifier] = Byte.MinValue; + //_unfinishedRuns.Add(run.RunIdentifier); + runIDs.Add(entry.RunId); + } + } + finally + { + _runsRwLock.ExitWriteLock(); } - runIDs.Add(entry.Run.RunIdentifier); - } - return runIDs; + var added = _runContainerMap.TryAdd(factory.JobNumber, new RunContainer(factory, runIDs)); + System.Diagnostics.Debug.Assert(added); + return runIDs; + } + finally { + _cancelLock.ExitReadLock(); + } } /// <summary> @@ -108,71 +243,204 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl /// </summary> public void Execute(bool multithreaded = true) { - Log.Info("VectoRun started running. Executing Runs."); - if (multithreaded) { - Runs.ForEach(r => r.RunWorkerAsync()); - } else { - var first = new Task(() => { }); - var task = first; - // ReSharper disable once LoopCanBeConvertedToQuery - foreach (var run in Runs) { - var r = run; - task = task.ContinueWith(t => r.RunWorkerAsync().Wait(), TaskContinuationOptions.OnlyOnRanToCompletion); + try { + _cancelLock.EnterReadLock(); + _multithreaded = multithreaded; + Log.Info("VectoRun started running. Executing Runs."); + if (_canceled) { + Log.Info("JobContainer already cancelled\n"); + return; + } + + + try { + _runsRwLock.EnterWriteLock(); + if (multithreaded) { + Runs.ForEach(r => { r.RunWorkerAsync(); }); + } else { + var first = new Task(() => { }); + var task = first; + // ReSharper disable once LoopCanBeConvertedToQuery + foreach (var run in Runs) { + var r = run; + task = task.ContinueWith(t => r.RunWorkerAsync().Wait(), + TaskContinuationOptions.OnlyOnRanToCompletion); + } + + first.Start(); + } + } finally { + _runsRwLock.ExitWriteLock(); } - first.Start(); + + + } finally { + _cancelLock.ExitReadLock(); } + } public void Cancel() { - foreach (var job in Runs) { - job.CancelAsync(); - } + CancelCurrent(); WaitFinished(); } public void CancelCurrent() { - foreach (var job in Runs) { - job.CancelAsync(); + try + { + _cancelLock.EnterWriteLock(); + _canceled = true; + _runsRwLock.EnterReadLock(); + foreach (var job in Runs) + { + job.CancelAsync(); + } + } + finally + { + _runsRwLock.ExitReadLock(); + _cancelLock.ExitWriteLock(); } } public void WaitFinished() { - Task.WaitAll(Runs.Select(r => r.RunTask).ToArray()); + Task[] prevTasks; + Task[] tasks = {}; + for (var i = 0; i < 5; i++) { + try { + prevTasks = tasks; + _runsRwLock.EnterReadLock(); + tasks = Runs.Select(r => r.RunTask).ToArray(); + } finally { + _runsRwLock.ExitReadLock(); + } + + if (prevTasks.Length != tasks.Length) { + Task.WaitAll(tasks); + } else { + return; + } + } + } + + //[MethodImpl(MethodImplOptions.Synchronized)] + private void JobCompleted(int runId, int runContainerId) + { + try { + _cancelLock.EnterReadLock(); + if (_canceled) { + return; + } + } finally { + _cancelLock.ExitReadLock(); + } + + _runContainerMap.TryGetValue(runContainerId, out var runContainer); + + runContainer?.JobCompleted(runId); + AddFollowUpSimulatorFactories(runContainerId); + + try { + _runsRwLock.EnterWriteLock(); + //_unfinishedRuns.Remove(runId); + _unfinishedRuns.TryRemove(runId, out var tmpVal); + if (AllCompletedUnsafe()) + { + _sumWriter.Finish(); + } + } finally { + _runsRwLock.ExitWriteLock(); + } } - [MethodImpl(MethodImplOptions.Synchronized)] - private void JobCompleted() + private void AddFollowUpSimulatorFactories(int runContainerId) { - if (AllCompleted) { - _sumWriter.Finish(); + try { + _runContainerMap.TryGetValue(runContainerId, out var runContainer); + var additionalSimulatorFactory = runContainer?.GetFollowUpSimulatorFactory(); + if (additionalSimulatorFactory == null) + return; + + AddRuns(additionalSimulatorFactory); + Execute(_multithreaded); + } catch (Exception ex) { + Log.Error(ex.Message); } + + } + + private bool AllCompletedUnsafe() + { + return _unfinishedRuns.Count == 0; } public bool AllCompleted { - get { return Runs.All(r => r.Done); } + get + { + return _unfinishedRuns.Count == 0; + + } } - public Dictionary<int, ProgressEntry> GetProgress() + public IDictionary<int, ProgressEntry> GetProgress() { - return Runs.ToDictionary( - r => r.Run.RunIdentifier, - r => new ProgressEntry { - RunId = r.Run.RunIdentifier, - JobRunId = r.Run.JobRunIdentifier, - RunName = r.Run.RunName, - CycleName = r.Run.CycleName, - RunSuffix = r.Run.RunSuffix, - Progress = r.Run.Progress, - Done = r.Done, - ExecTime = r.ExecTime, - Success = r.Success, - Canceled = r.Canceled, - Error = r.ExecException - }); + try { + _runsRwLock.EnterReadLock(); + foreach (var runEntry in Runs) { + var key = runEntry.Run.RunIdentifier; + //Update existing entry + if(_progressDictionary.ContainsKey(key)) + { + var entry = _progressDictionary[key]; + entry.Progress = runEntry.Run.Progress; + entry.Done = runEntry.Done; + entry.ExecTime = runEntry.ExecTime; + entry.Success = runEntry.Success; + entry.Canceled = runEntry.Canceled; + entry.Error = runEntry.ExecException; + } else { + var progressEntry = new ProgressEntry { + RunId = runEntry.Run.RunIdentifier, + JobRunId = runEntry.Run.JobRunIdentifier, + RunName = runEntry.Run.RunName, + CycleName = runEntry.Run.CycleName, + RunSuffix = runEntry.Run.RunSuffix, + Progress = runEntry.Run.Progress, + Done = runEntry.Done, + ExecTime = runEntry.ExecTime, + Success = runEntry.Success, + Canceled = runEntry.Canceled, + Error = runEntry.ExecException + }; + _progressDictionary[key] = progressEntry; + } + } + return _progressDictionary; + //return Runs.ToDictionary( + // r => r.Run.RunIdentifier, + // r => new ProgressEntry + // { + // RunId = r.Run.RunIdentifier, + // JobRunId = r.Run.JobRunIdentifier, + // RunName = r.Run.RunName, + // CycleName = r.Run.CycleName, + // RunSuffix = r.Run.RunSuffix, + // Progress = r.Run.Progress, + // Done = r.Done, + // ExecTime = r.ExecTime, + // Success = r.Success, + // Canceled = r.Canceled, + // Error = r.ExecException + // }); + } finally { + _runsRwLock.ExitReadLock(); + } + + } public class ProgressEntry @@ -206,18 +474,31 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl { public IVectoRun Run; public JobContainer JobContainer; - public bool Done; + private readonly ReaderWriterLockSlim _doneLock = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion); + private bool _done = false; + public bool Done => _done; + + volatile public bool Running; public bool Success; + public bool Started = false; public bool Canceled; public double ExecTime; public Exception ExecException; public readonly Task RunTask; + private readonly int _runContainerId; - public RunEntry() + public int RunId => Run.RunIdentifier; + public int JobRunId => Run.JobRunIdentifier; + + public RunEntry(IVectoRun run, JobContainer jobContainer, int runContainerId = -1) { + Run = run; + JobContainer = jobContainer; + _runContainerId = runContainerId; RunTask = new Task(() => { var stopWatch = Stopwatch.StartNew(); try { + Running = true; Run.Run(); } catch (Exception ex) { Log.Error(ex, "Error during simulation run!"); @@ -226,16 +507,20 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl } finally { stopWatch.Stop(); Success = Run.FinishedWithoutErrors && ExecException == null; - Done = true; ExecTime = stopWatch.Elapsed.TotalMilliseconds; - JobContainer.JobCompleted(); + JobContainer.JobCompleted(RunId, _runContainerId); + _done = true; } - }); + }, TaskCreationOptions.LongRunning); } public Task RunWorkerAsync() { - RunTask.Start(); + + if (!Running && !Started) { + Started = true; + RunTask.Start(TaskScheduler.Current); + } return RunTask; } diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs index 7333284a68d6f221bc16bea0d773548f335df82c..a464d94aa519c295a1c710619c8eb1cb5c90d0b9 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/PowertrainBuilder.cs @@ -602,23 +602,23 @@ namespace TUGraz.VectoCore.Models.Simulation.Impl return container; } - private IElectricMotor GetElectricMachine(PowertrainPosition pos, - IList<Tuple<PowertrainPosition, ElectricMotorData>> electricMachinesData, VehicleContainer container, - IElectricSystem es, IHybridController ctl) - { - var motorData = electricMachinesData.FirstOrDefault(x => x.Item1 == pos); - if (motorData == null) { - return null; - } - - container.ModData?.AddElectricMotor(pos); - ctl.AddElectricMotor(pos, motorData.Item2); - var motor = new ElectricMotor(container, motorData.Item2, ctl.ElectricMotorControl(pos), pos); - motor.Connect(es); - return motor; - } - - private static IElectricMotor GetElectricMachine(PowertrainPosition pos, + private IElectricMotor GetElectricMachine(PowertrainPosition pos, + IList<Tuple<PowertrainPosition, ElectricMotorData>> electricMachinesData, VehicleContainer container, + IElectricSystem es, IHybridController ctl) + { + var motorData = electricMachinesData.FirstOrDefault(x => x.Item1 == pos); + if (motorData == null) { + return null; + } + + container.ModData?.AddElectricMotor(pos); + ctl.AddElectricMotor(pos, motorData.Item2); + var motor = new ElectricMotor(container, motorData.Item2, ctl.ElectricMotorControl(pos), pos); + motor.Connect(es); + return motor; + } + + private static IElectricMotor GetElectricMachine(PowertrainPosition pos, IList<Tuple<PowertrainPosition, ElectricMotorData>> electricMachinesData, VehicleContainer container, IElectricSystem es, IElectricMotorControl ctl) { diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs new file mode 100644 index 0000000000000000000000000000000000000000..241f1cb7b23ff0e7a5878291406ce7bc8b6858ba --- /dev/null +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/IFollowUpSimulatorFactoryCreator.cs @@ -0,0 +1,163 @@ +using System; +using System.CodeDom; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using JetBrains.Annotations; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; +using TUGraz.VectoCore.OutputData.XML; + +namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory +{ + public interface IFollowUpSimulatorFactoryCreator + { + ISimulatorFactory GetNextFactory(); + + IOutputDataWriter CurrentStageOutputDataWriter { get; } + + IDeclarationReport CurrentStageDeclarationReport { get; } + IInputDataProvider CurrentStageInputData { get; } + } + + + public abstract class FollowUpSimulatorFactoryCreator : IFollowUpSimulatorFactoryCreator + { + protected ISimulatorFactoryFactory _simulatorFactoryFactory; + protected readonly bool _validate; + + protected FollowUpSimulatorFactoryCreator(ISimulatorFactoryFactory simFactoryFactory, bool validate) + { + _simulatorFactoryFactory = simFactoryFactory; + _validate = validate; + } + + #region Implementation of IFollowUpSimulatorFactoryCreator + + public abstract ISimulatorFactory GetNextFactory(); + public abstract IOutputDataWriter CurrentStageOutputDataWriter { get; } + public abstract IDeclarationReport CurrentStageDeclarationReport { get; } + public abstract IInputDataProvider CurrentStageInputData { get; } + + #endregion + } + + + public class InterimAfterPrimaryFactoryCreator : FollowUpSimulatorFactoryCreator + { + private readonly TempFileOutputWriter _currentStageOutputDataWriter = null; + private readonly IOutputDataWriter _originalReportWriter = null; + private readonly IDeclarationReport _currentStageDeclarationReport = null; + private readonly IXMLInputDataReader _inputDataReader; + private readonly IMultistagePrimaryAndStageInputDataProvider _originalStageInputData; + private readonly IDeclarationReport _originalDeclarationReport; + private readonly IDeclarationInputDataProvider _currentStageInputData; + + public InterimAfterPrimaryFactoryCreator(IMultistagePrimaryAndStageInputDataProvider originalStageInputData, + IOutputDataWriter originalReportWriter, + IDeclarationReport originalDeclarationReport, + ISimulatorFactoryFactory simFactoryFactory, + IXMLInputDataReader inputDataReader, bool validate) : base(simFactoryFactory, validate) + { + + _originalStageInputData = originalStageInputData; + _inputDataReader = inputDataReader; + _originalReportWriter = originalReportWriter; + _originalDeclarationReport = originalDeclarationReport; + _currentStageOutputDataWriter = + new TempFileOutputWriter(originalReportWriter, ReportType.DeclarationReportManufacturerXML) + ; + _currentStageDeclarationReport = + new XMLDeclarationReportPrimaryVehicle(_currentStageOutputDataWriter, true); + _currentStageInputData = originalStageInputData.PrimaryVehicle; + + } + + + + #region Implementation of IFollowUpSimulatorFactoryCreator + + public override ISimulatorFactory GetNextFactory() + { + //Prepare inputdata for next simulation step + var primaryInputData = _inputDataReader.CreateDeclaration(_currentStageOutputDataWriter + .GetDocument(ReportType.DeclarationReportPrimaryVehicleXML).CreateReader()) as IMultistageBusInputDataProvider; + Debug.Assert(primaryInputData != null); + var stageInputData = _originalStageInputData.StageInputData; + + var nextStageInput = new XMLDeclarationVIFInputData(primaryInputData, stageInputData); + + var manStagesCount = + nextStageInput.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? -1; + + _originalReportWriter.NumberOfManufacturingStages = manStagesCount; + + return _simulatorFactoryFactory.Factory(ExecutionMode.Declaration, nextStageInput, _originalReportWriter, _originalDeclarationReport, + null, _validate); + } + + #endregion + + + #region Overrides of FollowUpSimulatorFactoryCreator + + public override IInputDataProvider CurrentStageInputData => _currentStageInputData; + public override IOutputDataWriter CurrentStageOutputDataWriter => _currentStageOutputDataWriter; + public override IDeclarationReport CurrentStageDeclarationReport => _currentStageDeclarationReport; + + #endregion + + } + + + public class CompletedAfterInterimPrimaryFactoryCreator : FollowUpSimulatorFactoryCreator + { + private readonly IXMLInputDataReader _xmlInputDataReader; + + + public CompletedAfterInterimPrimaryFactoryCreator(IMultistageVIFInputData originalInputData, + IOutputDataWriter originalOutputDataWriter, + [NotNull] IDeclarationReport originalDeclarationReport, + IXMLInputDataReader inputDataReader, + ISimulatorFactoryFactory simulatorFactoryFactory, + bool validate) : base(simulatorFactoryFactory, validate) + { + _currentStageOutputDataWriter = originalOutputDataWriter; + _originalInputData = originalInputData; + _currentStageDeclarationReport = originalDeclarationReport; + _currentStageInputData = originalInputData; + _xmlInputDataReader = inputDataReader; + + } + public override ISimulatorFactory GetNextFactory() + { + var output = _xmlInputDataReader.CreateDeclaration( + XmlReader.Create(CurrentStageOutputDataWriter.MultistageXmlReport.ToString().ToStream())) as IMultistageBusInputDataProvider; + var nextStageInput = new XMLDeclarationVIFInputData(output, null); + + return _simulatorFactoryFactory.Factory(ExecutionMode.Declaration, nextStageInput, CurrentStageOutputDataWriter, null, null, + _validate); + } + + private readonly IOutputDataWriter _currentStageOutputDataWriter; + + public override IOutputDataWriter CurrentStageOutputDataWriter => _currentStageOutputDataWriter; + + private readonly IDeclarationReport _currentStageDeclarationReport; + + public override IDeclarationReport CurrentStageDeclarationReport => _currentStageDeclarationReport; + + private readonly IInputDataProvider _currentStageInputData; + private readonly IMultistageVIFInputData _originalInputData; + + public override IInputDataProvider CurrentStageInputData => _currentStageInputData; + } +} diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs similarity index 57% rename from VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs rename to VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs index 6b902d12c2bccb46d3e3fcf0cec2ec38fc8122ec..bba97fd261a4ea3aa2985af3b7a178bd7d494dff 100644 --- a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory.cs +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactory.cs @@ -1,348 +1,297 @@ -/* -* This file is part of VECTO. -* -* Copyright © 2012-2019 European Union -* -* Developed by Graz University of Technology, -* Institute of Internal Combustion Engines and Thermodynamics, -* Institute of Technical Informatics -* -* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved -* by the European Commission - subsequent versions of the EUPL (the "Licence"); -* You may not use VECTO except in compliance with the Licence. -* You may obtain a copy of the Licence at: -* -* https://joinup.ec.europa.eu/community/eupl/og_page/eupl -* -* Unless required by applicable law or agreed to in writing, VECTO -* distributed under the Licence is distributed on an "AS IS" basis, -* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the Licence for the specific language governing permissions and -* limitations under the Licence. -* -* Authors: -* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology -* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology -* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology -* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology -* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology -* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology -*/ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Threading; -using Newtonsoft.Json; -using TUGraz.VectoCommon.BusAuxiliaries; -using TUGraz.VectoCommon.Exceptions; -using TUGraz.VectoCommon.InputData; -using TUGraz.VectoCommon.Models; -using TUGraz.VectoCommon.Utils; -using TUGraz.VectoCore.InputData; -using TUGraz.VectoCore.InputData.Reader.Impl; -using TUGraz.VectoCore.Models.Declaration; -using TUGraz.VectoCore.Models.Simulation.Data; -using TUGraz.VectoCore.Models.SimulationComponent.Data; -using TUGraz.VectoCore.OutputData; -using TUGraz.VectoCore.OutputData.FileIO; -using TUGraz.VectoCore.OutputData.ModFilter; -using TUGraz.VectoCore.OutputData.XML; - -namespace TUGraz.VectoCore.Models.Simulation.Impl -{ - public class SimulatorFactory : LoggingObject, ISimulatorFactory - { - private static int _jobNumberCounter; - - private readonly ExecutionMode _mode; - - public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer) : this(mode, dataProvider, writer, null, null, true) - { - - } - - public SimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, - IDeclarationReport declarationReport = null, IVTPReport vtpReport = null, bool validate = true, bool writeModalResults = false) - { - Log.Info("########## VectoCore Version {0} ##########", Assembly.GetExecutingAssembly().GetName().Version); - JobNumber = Interlocked.Increment(ref _jobNumberCounter); - _mode = mode; - ModWriter = writer; - Validate = validate; - WriteModalResults = writeModalResults; - - ThreadPool.GetMinThreads(out var workerThreads, out var completionThreads); - if (workerThreads < 12) { - workerThreads = 12; - } - ThreadPool.SetMinThreads(workerThreads, completionThreads); - - switch (mode) { - case ExecutionMode.Declaration: - CreateDeclarationDataReader(dataProvider, declarationReport, vtpReport); - break; - case ExecutionMode.Engineering: - CreateEngineeringDataReader(dataProvider); - break; - default: - throw new VectoException("Unkown factory mode in SimulatorFactory: {0}", mode); - } - } - - private void CreateDeclarationDataReader(IInputDataProvider dataProvider, IDeclarationReport declarationReport, IVTPReport vtpReport) - { - if (dataProvider is IVTPDeclarationInputDataProvider) { - var vtpProvider = dataProvider as IVTPDeclarationInputDataProvider; - var report = vtpReport ?? new XMLVTPReport(ModWriter); - if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry()) { - DataReader = new DeclarationVTPModeVectoRunDataFactoryLorries(vtpProvider, report); - } - if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus()) { - DataReader = new DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider, report); - } - return; - } - - if (dataProvider is ISingleBusInputDataProvider) { - var singleBus = dataProvider as ISingleBusInputDataProvider; - var report = declarationReport ?? new XMLDeclarationReport(ModWriter); - DataReader = new DeclarationModeSingleBusVectoRunDataFactory(singleBus, report); - return; - } - if (dataProvider is IDeclarationInputDataProvider) { - var declDataProvider = dataProvider as IDeclarationInputDataProvider; - if (declDataProvider.JobInputData.Vehicle.VehicleCategory.IsLorry()) { - var report = declarationReport ?? new XMLDeclarationReport(ModWriter); - DataReader = new DeclarationModeTruckVectoRunDataFactory(declDataProvider, report); - return; - } - - switch (declDataProvider.JobInputData.Vehicle.VehicleCategory) { - case VehicleCategory.HeavyBusCompletedVehicle: - var reportCompleted = declarationReport ?? new XMLDeclarationReportCompletedVehicle(ModWriter, declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) { - PrimaryVehicleReportInputData = declDataProvider.PrimaryVehicleData, - }; - DataReader = new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, reportCompleted); - return; - case VehicleCategory.HeavyBusPrimaryVehicle: - var reportPrimary = declarationReport ?? new XMLDeclarationReportPrimaryVehicle(ModWriter, declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); - DataReader = new DeclarationModePrimaryBusVectoRunDataFactory(declDataProvider, reportPrimary); - return; - } - } - - if (dataProvider is IMultistageVIFInputData) { - var declDataProvider = dataProvider as IMultistageVIFInputData; - - //ToDo FK: check if data completed == true && final - //declDataProvider.MultistageJobInputData.JobInputData.InputComplete - //declDataProvider.VehicleInputData.VehicleDeclarationType == VehicleDeclarationType.final - - if (declDataProvider.VehicleInputData == null) { - var reportCompleted = declarationReport ?? new XMLDeclarationReportCompletedVehicle(ModWriter, true) { - PrimaryVehicleReportInputData = declDataProvider.MultistageJobInputData.JobInputData.PrimaryVehicle, - }; - DataReader = new DeclarationModeCompletedMultistageBusVectoRunDataFactory( - declDataProvider.MultistageJobInputData, - reportCompleted); - } - else if(declDataProvider.VehicleInputData != null) { - var report = declarationReport ?? new XMLDeclarationReportMultistageBusVehicle(ModWriter); - DataReader = new DeclarationModeMultistageBusVectoRunDataFactory(declDataProvider, report); - } - return; - } - - - throw new VectoException("Unknown InputData for Declaration Mode!"); - } - - private void CreateEngineeringDataReader(IInputDataProvider dataProvider) - { - if (dataProvider is IVTPEngineeringInputDataProvider) { - var vtpProvider = dataProvider as IVTPEngineeringInputDataProvider; - if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry()) { - DataReader = new EngineeringVTPModeVectoRunDataFactoryLorries(vtpProvider); - } - if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus()) { - DataReader = new EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider); - } - return; - } - if (dataProvider is IEngineeringInputDataProvider) { - var engDataProvider = dataProvider as IEngineeringInputDataProvider; - if (engDataProvider.JobInputData.JobType == VectoSimulationJobType.EngineOnlySimulation) { - DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider); - } else { - DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider); - } - return; - } - throw new VectoException("Unknown InputData for Engineering Mode!"); - } - - public bool Validate { get; set; } - - public IVectoRunDataFactory DataReader { get; private set; } - - public SummaryDataContainer SumData { get; set; } - - public IOutputDataWriter ModWriter { get; private set; } - - public int JobNumber { get; set; } - - public bool WriteModalResults { get; set; } - public bool ModalResults1Hz { get; set; } - public bool ActualModalData { get; set; } - - public bool SerializeVectoRunData { get; set; } - - /// <summary> - /// Creates powertrain and initializes it with the component's data. - /// </summary> - /// <returns>new VectoRun Instance</returns> - public IEnumerable<IVectoRun> SimulationRuns() - { - var i = 0; - var warning1Hz = false; - - foreach (var data in DataReader.NextRun()) { - var current = i++; - var d = data; - data.JobRunId = current; - yield return data.Exempted || data.MultistageRun ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz); - } - } - - private IVectoRun GetExemptedRun(VectoRunData data) - { - if (data.Report != null) { - data.Report.PrepareResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data); - } - return new ExemptedRun(new ExemptedRunContainer(data.ExecutionMode) { RunData = data }, modData => { - if (data.Report != null) { - data.Report.AddResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data, modData); - } - }); - } - - private IVectoRun GetNonExemptedRun(VectoRunData data, int current, VectoRunData d, ref bool warning1Hz) - { - var addReportResult = PrepareReport(data); - if (!data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz && !warning1Hz) { - Log.Error("Output filter for 1Hz results is only available for distance-based cycles!"); - warning1Hz = true; - } - var fuels = data.EngineData != null ? data.EngineData.Fuels.Select(x => x.FuelData).ToList() : new List<IFuelProperties>(); - IModalDataContainer modContainer = - new ModalDataContainer( - data, ModWriter, - _mode == ExecutionMode.Declaration ? addReportResult : null, - GetModDataFilter(data)) { - WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults - }; - - - // TODO: MQ 20200410 - Remove for official release! - if (SerializeVectoRunData) { - File.WriteAllText( - Path.Combine( - (ModWriter as FileOutputWriter)?.BasePath ?? "", $"{data.JobName}_{data.Cycle.Name}{data.ModFileSuffix}.json"), - JsonConvert.SerializeObject(data, Formatting.Indented)); - } - - var builder = new PowertrainBuilder( - modContainer, modData => { - if (SumData != null) { - SumData.Write(modData, JobNumber, current, d); - } - }); - - var run = GetVectoRun(data, builder); - - if (Validate) { - ValidateVectoRunData( - run, data.JobType, data.ElectricMachinesData.FirstOrDefault()?.Item1, data.GearboxData?.Type, - data.Mission != null && data.Mission.MissionType.IsEMS()); - } - return run; - } - - private IModalDataFilter[] GetModDataFilter(VectoRunData data) - { - var modDataFilter = ModalResults1Hz - ? new IModalDataFilter[] { new ModalData1HzFilter() } - : null; - - if (ActualModalData) { - modDataFilter = new IModalDataFilter[] { new ActualModalDataFilter(), }; - } - return data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz || ActualModalData ? modDataFilter : null; - } - - private void ValidateVectoRunData(VectoRun run, VectoSimulationJobType jobType, PowertrainPosition? emPosition, GearboxType? gearboxtype, bool isEms) - { - var validationErrors = run.Validate(_mode, jobType, emPosition, gearboxtype, isEms); - if (validationErrors.Any()) { - throw new VectoException("Validation of Run-Data Failed: " + - $"{validationErrors.Select(r => r.ErrorMessage + r.MemberNames.Join("; ")).Join("\n")}"); - } - } - - private static VectoRun GetVectoRun(VectoRunData data, PowertrainBuilder builder) - { - VectoRun run; - switch (data.Cycle.CycleType) { - case CycleType.DistanceBased: - if ((data.SimulationType & SimulationType.DistanceCycle) == 0) { - throw new VectoException("Distance-based cycle can not be simulated in {0} mode", data.SimulationType); - } - run = new DistanceRun(builder.Build(data)); - break; - case CycleType.EngineOnly: - if ((data.SimulationType & SimulationType.EngineOnly) == 0) { - throw new VectoException("Engine-only cycle can not be simulated in {0} mode", data.SimulationType); - } - run = new TimeRun(builder.Build(data)); - break; - case CycleType.VTP: - if ((data.SimulationType & SimulationType.VerificationTest) == 0) { - throw new VectoException("VTP-cycle can not be simulated in {0} mode", data.SimulationType); - } - run = new TimeRun(builder.Build(data)); - break; - - case CycleType.PWheel: - case CycleType.MeasuredSpeed: - case CycleType.MeasuredSpeedGear: - if ((data.SimulationType & (SimulationType.PWheel | SimulationType.MeasuredSpeedCycle)) == 0) { - throw new VectoException("{1}-cycle can not be simulated in {0} mode", data.SimulationType, data.Cycle.CycleType); - } - run = new TimeRun(builder.Build(data)); - break; - case CycleType.PTO: - throw new VectoException("PTO Cycle can not be used as main cycle!"); - default: - throw new ArgumentOutOfRangeException("CycleType unknown:" + data.Cycle.CycleType); - } - return run; - } - - private static Action<ModalDataContainer> PrepareReport(VectoRunData data) - { - if (data.Report != null) { - data.Report.PrepareResult(data.Loading, data.Mission, data.EngineData.FuelMode, data); - } - Action<ModalDataContainer> addReportResult = modData => { - if (data.Report != null) { - data.Report.AddResult(data.Loading, data.Mission, data.EngineData.FuelMode, data, modData); - } - }; - return addReportResult; - } - } -} - +/* +* This file is part of VECTO. +* +* Copyright © 2012-2019 European Union +* +* Developed by Graz University of Technology, +* Institute of Internal Combustion Engines and Thermodynamics, +* Institute of Technical Informatics +* +* VECTO is licensed under the EUPL, Version 1.1 or - as soon they will be approved +* by the European Commission - subsequent versions of the EUPL (the "Licence"); +* You may not use VECTO except in compliance with the Licence. +* You may obtain a copy of the Licence at: +* +* https://joinup.ec.europa.eu/community/eupl/og_page/eupl +* +* Unless required by applicable law or agreed to in writing, VECTO +* distributed under the Licence is distributed on an "AS IS" basis, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the Licence for the specific language governing permissions and +* limitations under the Licence. +* +* Authors: +* Stefan Hausberger, hausberger@ivt.tugraz.at, IVT, Graz University of Technology +* Christian Kreiner, christian.kreiner@tugraz.at, ITI, Graz University of Technology +* Michael Krisper, michael.krisper@tugraz.at, ITI, Graz University of Technology +* Raphael Luz, luz@ivt.tugraz.at, IVT, Graz University of Technology +* Markus Quaritsch, markus.quaritsch@tugraz.at, IVT, Graz University of Technology +* Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology +*/ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Threading; +using System.Xml; +using Newtonsoft.Json; +using Ninject; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.SimulationComponent.Data; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; +using TUGraz.VectoCore.OutputData.ModFilter; +using TUGraz.VectoCore.OutputData.XML; +using Formatting = Newtonsoft.Json.Formatting; + +namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory +{ + public abstract class SimulatorFactory : LoggingObject, ISimulatorFactory + { + private static int _jobNumberCounter; + + private static object _kernelLock = new object(); + private static IKernel _kernel; //Kernel is only used when the SimulatorFactory is created with the Factory Method. + + protected IFollowUpSimulatorFactoryCreator _followUpSimulatorFactoryCreator = null; + + protected bool _simulate = true; + + + public ISimulatorFactory FollowUpSimulatorFactory + { + get + { + //if (!CreateFollowUpSimulatorFactory) + // return null; + + if (_followUpSimulatorFactoryCreator != null) { + return _followUpSimulatorFactoryCreator.GetNextFactory(); + } else { + return null; + } + //return _followingSimulatorFactoryCreator?.Invoke(); + + } + } + + public bool CreateFollowUpSimulatorFactory { get; set; } = false; + protected readonly ExecutionMode _mode; + + + #region Constructors and Factory Methods to instantiate Instances of SimulatorFactory without NInject (should only be used in Testcases that are not updated yet) + + [Obsolete("Creation of new SimulatorFactories should be done with SimulatorFactoryFactory NInject Factory", false)] + public static ISimulatorFactory CreateSimulatorFactory(ExecutionMode mode, IInputDataProvider dataProvider, IOutputDataWriter writer, IDeclarationReport declarationReport = null, IVTPReport vtpReport=null, bool validate = true) + { + if (_kernel == null) { + lock (_kernelLock) { + if (_kernel == null) { + _kernel = new StandardKernel(new VectoNinjectModule()); + } + } + } + return _kernel.Get<ISimulatorFactoryFactory>().Factory(mode, dataProvider, writer, declarationReport, vtpReport, validate); + } + + protected SimulatorFactory(ExecutionMode mode, IOutputDataWriter writer, bool validate = true) + { + System.Diagnostics.Debug.WriteLine("Created Simulator Factory"); + Log.Info("########## VectoCore Version {0} ##########", Assembly.GetExecutingAssembly().GetName().Version); + JobNumber = Interlocked.Increment(ref _jobNumberCounter); + ReportWriter = writer; + Validate = validate; + _mode = mode; + + ThreadPool.GetMinThreads(out var workerThreads, out var completionThreads); + if (workerThreads < 12) { + workerThreads = 12; + } + ThreadPool.SetMinThreads(workerThreads, completionThreads); + + } + + + #endregion + + + + + + + public bool Validate { get; set; } + + public IVectoRunDataFactory DataReader { get; protected set; } + + public SummaryDataContainer SumData { get; set; } + + public IOutputDataWriter ReportWriter { get; protected set; } + + public int JobNumber { get; set; } + + public bool WriteModalResults { get; set; } + public bool ModalResults1Hz { get; set; } + public bool ActualModalData { get; set; } + + public bool SerializeVectoRunData { get; set; } + + /// <summary> + /// Creates powertrain and initializes it with the component's data. + /// </summary> + /// <returns>new VectoRun Instance</returns> + public IEnumerable<IVectoRun> SimulationRuns() + { + var i = 0; + var warning1Hz = false; + if (!_simulate) { + yield break; + } + foreach (var data in DataReader.NextRun()) { + var current = i++; + var d = data; + data.JobRunId = current; + yield return data.Exempted || data.MultistageRun ? GetExemptedRun(data) : GetNonExemptedRun(data, current, d, ref warning1Hz); + } + } + + private IVectoRun GetExemptedRun(VectoRunData data) + { + if (data.Report != null) { + data.Report.PrepareResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data); + } + return new ExemptedRun(new ExemptedRunContainer(data.ExecutionMode) { RunData = data }, modData => { + if (data.Report != null) { + data.Report.AddResult(data.Loading, data.Mission, data.EngineData?.FuelMode ?? 0, data, modData); + } + }); + } + + private IVectoRun GetNonExemptedRun(VectoRunData data, int current, VectoRunData d, ref bool warning1Hz) + { + var addReportResult = PrepareReport(data); + if (!data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz && !warning1Hz) { + Log.Error("Output filter for 1Hz results is only available for distance-based cycles!"); + warning1Hz = true; + } + var fuels = data.EngineData != null ? data.EngineData.Fuels.Select(x => x.FuelData).ToList() : new List<IFuelProperties>(); + IModalDataContainer modContainer = + new ModalDataContainer( + data, ReportWriter, + (_mode == ExecutionMode.Declaration) ? addReportResult : null, + GetModDataFilter(data)) { + WriteModalResults = _mode != ExecutionMode.Declaration || WriteModalResults + }; + + + // TODO: MQ 20200410 - Remove for official release! + if (SerializeVectoRunData) { + File.WriteAllText( + Path.Combine( + (ReportWriter as FileOutputWriter)?.BasePath ?? "", $"{data.JobName}_{data.Cycle.Name}{data.ModFileSuffix}.json"), + JsonConvert.SerializeObject(data, Formatting.Indented)); + } + + var builder = new PowertrainBuilder( + modContainer, modData => { + if (SumData != null) { + SumData.Write(modData, JobNumber, current, d); + } + }); + + var run = GetVectoRun(data, builder); + + if (Validate) { + ValidateVectoRunData( + run, data.JobType, data.ElectricMachinesData.FirstOrDefault()?.Item1, data.GearboxData?.Type, + data.Mission != null && data.Mission.MissionType.IsEMS()); + } + return run; + } + + private IModalDataFilter[] GetModDataFilter(VectoRunData data) + { + var modDataFilter = ModalResults1Hz + ? new IModalDataFilter[] { new ModalData1HzFilter() } + : null; + + if (ActualModalData) { + modDataFilter = new IModalDataFilter[] { new ActualModalDataFilter(), }; + } + return data.Cycle.CycleType.IsDistanceBased() && ModalResults1Hz || ActualModalData ? modDataFilter : null; + } + + private void ValidateVectoRunData(VectoRun run, VectoSimulationJobType jobType, PowertrainPosition? emPosition, GearboxType? gearboxtype, bool isEms) + { + var validationErrors = run.Validate(_mode, jobType, emPosition, gearboxtype, isEms); + if (validationErrors.Any()) { + throw new VectoException("Validation of Run-Data Failed: " + + $"{validationErrors.Select(r => r.ErrorMessage + r.MemberNames.Join("; ")).Join("\n")}"); + } + } + + private static VectoRun GetVectoRun(VectoRunData data, PowertrainBuilder builder) + { + VectoRun run; + switch (data.Cycle.CycleType) { + case CycleType.DistanceBased: + if ((data.SimulationType & SimulationType.DistanceCycle) == 0) { + throw new VectoException("Distance-based cycle can not be simulated in {0} mode", data.SimulationType); + } + run = new DistanceRun(builder.Build(data)); + break; + case CycleType.EngineOnly: + if ((data.SimulationType & SimulationType.EngineOnly) == 0) { + throw new VectoException("Engine-only cycle can not be simulated in {0} mode", data.SimulationType); + } + run = new TimeRun(builder.Build(data)); + break; + case CycleType.VTP: + if ((data.SimulationType & SimulationType.VerificationTest) == 0) { + throw new VectoException("VTP-cycle can not be simulated in {0} mode", data.SimulationType); + } + run = new TimeRun(builder.Build(data)); + break; + + case CycleType.PWheel: + case CycleType.MeasuredSpeed: + case CycleType.MeasuredSpeedGear: + if ((data.SimulationType & (SimulationType.PWheel | SimulationType.MeasuredSpeedCycle)) == 0) { + throw new VectoException("{1}-cycle can not be simulated in {0} mode", data.SimulationType, data.Cycle.CycleType); + } + run = new TimeRun(builder.Build(data)); + break; + case CycleType.PTO: + throw new VectoException("PTO Cycle can not be used as main cycle!"); + default: + throw new ArgumentOutOfRangeException("CycleType unknown:" + data.Cycle.CycleType); + } + return run; + } + + private static Action<ModalDataContainer> PrepareReport(VectoRunData data) + { + if (data.Report != null) { + data.Report.PrepareResult(data.Loading, data.Mission, data.EngineData.FuelMode, data); + } + Action<ModalDataContainer> addReportResult = modData => { + if (data.Report != null) { + data.Report.AddResult(data.Loading, data.Mission, data.EngineData.FuelMode, data, modData); + } + }; + return addReportResult; + } + } +} + diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs new file mode 100644 index 0000000000000000000000000000000000000000..7c7aaab0c063b3a6211ca32387ff0e0f59d5c3d5 --- /dev/null +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryDeclaration.cs @@ -0,0 +1,312 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Linq; +using System.ServiceModel.PeerResolvers; +using System.Text; +using System.Threading.Tasks; +using System.Xml; +using JetBrains.Annotations; +using Ninject; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; +using TUGraz.VectoCore.OutputData.XML; + +namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory +{ + public class SimulatorFactoryDeclaration : SimulatorFactory + { + private readonly IXMLInputDataReader _xmlInputDataReader; + private readonly ISimulatorFactoryFactory _simFactoryFactory; + private IInputDataProvider _currentStageInputData; + private IDeclarationReport _currentStageDeclarationReport; + private IVTPReport _currentStageVTPReport; + private readonly IXMLDeclarationReportFactory _xmlDeclarationReportFactory; + + + public SimulatorFactoryDeclaration(IInputDataProvider dataProvider, + IOutputDataWriter writer, + IDeclarationReport declarationReport, + IVTPReport vtpReport, + bool validate, + IXMLInputDataReader xmlInputDataReader, + ISimulatorFactoryFactory simulatorFactoryFactory, + IXMLDeclarationReportFactory xmlDeclarationReportFactory, + IVectoRunDataFactoryFactory runDataFactoryFactory + ) : base(ExecutionMode.Declaration, writer, validate) + { + _xmlInputDataReader = xmlInputDataReader; + _simFactoryFactory = simulatorFactoryFactory; + _currentStageInputData = dataProvider; + _xmlDeclarationReportFactory = xmlDeclarationReportFactory; + + + _currentStageDeclarationReport = declarationReport ?? xmlDeclarationReportFactory.CreateReport(dataProvider, writer); + _currentStageVTPReport = vtpReport ?? xmlDeclarationReportFactory.CreateVTPReport(dataProvider, writer); + _followUpSimulatorFactoryCreator = CreateFollowUpFactoryCreator( + _currentStageInputData, + _currentStageDeclarationReport); + + UpdateCurrentStage(); + + + + _simulate = CanBeSimulated(dataProvider); + if (_simulate) { + //CreateDeclarationDataReader(_currentStageInputData, _currentStageDeclarationReport, _currentStageVTPReport); + DataReader = runDataFactoryFactory.CreateDeclarationRunDataFactory(_currentStageInputData, _currentStageDeclarationReport, + _currentStageVTPReport); + } else { + System.Diagnostics.Debug.Assert(_followUpSimulatorFactoryCreator == null, + "We should not create a followupSimulator factory if we aren't simulating anything in this step"); + } + } + + private void CreateReport() + { + if (_currentStageDeclarationReport != null && _currentStageInputData != null) { + + } + } + + + /// <summary> + /// Modifies the input and output of the current simulation step based on the Following step + /// </summary> + private void UpdateCurrentStage() + { + ReportWriter = _followUpSimulatorFactoryCreator?.CurrentStageOutputDataWriter ?? + ReportWriter; + + _currentStageDeclarationReport = _followUpSimulatorFactoryCreator?.CurrentStageDeclarationReport ?? + _currentStageDeclarationReport; + + _currentStageInputData = _followUpSimulatorFactoryCreator?.CurrentStageInputData ?? + _currentStageInputData; + } + + [UsedImplicitly] + public SimulatorFactoryDeclaration( + IInputDataProvider dataProvider, + IOutputDataWriter writer, + bool validate, + IXMLInputDataReader xmlInputDataReader, + ISimulatorFactoryFactory simulatorFactoryFactory, + IXMLDeclarationReportFactory xmlDeclarationReportFactory, + IVectoRunDataFactoryFactory runDataFactoryFactory) : this( + dataProvider: dataProvider, + declarationReport: null, + writer: writer, + vtpReport: null, + validate: validate, + xmlInputDataReader: xmlInputDataReader, + simulatorFactoryFactory: simulatorFactoryFactory, + xmlDeclarationReportFactory: xmlDeclarationReportFactory, + runDataFactoryFactory: runDataFactoryFactory) + { + + } + + private bool CanBeSimulated(IInputDataProvider dataProvider) + { + if (dataProvider is IMultistageVIFInputData multistageVifInputData && + multistageVifInputData.VehicleInputData == null) { + var inputComplete = multistageVifInputData.MultistageJobInputData.JobInputData.InputComplete; + var declType = multistageVifInputData.MultistageJobInputData.JobInputData.ConsolidateManufacturingStage + ?.Vehicle.VehicleDeclarationType; + var final = declType == VehicleDeclarationType.final; + var exempted = multistageVifInputData.MultistageJobInputData.JobInputData.ConsolidateManufacturingStage? + .Vehicle.ExemptedVehicle == true; + + if (!((final || exempted) && inputComplete)) { + return false; + } + } + + return true; + } + + private IFollowUpSimulatorFactoryCreator CreateFollowUpFactoryCreator(IInputDataProvider currentStageInputData, IDeclarationReport currentStageDeclarationReport) + { + switch (currentStageInputData) { + case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputDataProvider: + return new InterimAfterPrimaryFactoryCreator( + multistagePrimaryAndStageInputDataProvider, + ReportWriter, + currentStageDeclarationReport, + _simFactoryFactory, _xmlInputDataReader, Validate); + case IMultistageVIFInputData multistageVifInputData: + if (multistageVifInputData.VehicleInputData != null) { + return new CompletedAfterInterimPrimaryFactoryCreator( + multistageVifInputData, + ReportWriter, + currentStageDeclarationReport, + _xmlInputDataReader, + _simFactoryFactory, Validate); + } + break; + default: + return null; + } + return null; + } + + private void CreateDeclarationDataReader(IInputDataProvider dataProvider, IDeclarationReport declarationReport, IVTPReport vtpReport) + { + switch (dataProvider) { + case IVTPDeclarationInputDataProvider vtpProvider: { + DataReader = CreateRunDataReader(vtpProvider, vtpReport); + return; + } + case ISingleBusInputDataProvider singleBusProvider: { + DataReader = CreateRunDataReader(singleBusProvider, declarationReport); + return; + } + case IDeclarationInputDataProvider declDataProvider: { + DataReader = CreateRunDataReader(declDataProvider, declarationReport); + return; + } + case IMultistageVIFInputData multistageVifInputData: { + DataReader = CreateRunDataReader(multistageVifInputData, declarationReport); + return; + } + case IMultistagePrimaryAndStageInputDataProvider multiStagePrimaryAndStageInputData: { + + throw new VectoException("Why are we here ? "); + + //Create Temporary Writer to hold the files only in Memory +#pragma warning disable 162 + var tempOutputWriter = new TempFileOutputWriter(ReportWriter, ReportType.DeclarationReportManufacturerXML); + var originalReportWriter = ReportWriter; + ReportWriter = tempOutputWriter; + var tempPrimaryReport = new XMLDeclarationReportPrimaryVehicle(tempOutputWriter, true); + + + DataReader = CreateRunDataReader(multiStagePrimaryAndStageInputData.PrimaryVehicle, tempPrimaryReport); + + + CreateFollowUpSimulatorFactory = true; + Func<ISimulatorFactory> _followingSimulatorFactoryCreator = () => + { + try + { + var primaryInputData = _xmlInputDataReader.CreateDeclaration(tempOutputWriter + .GetDocument(ReportType.DeclarationReportPrimaryVehicleXML).CreateReader()); + + var vifInputData = new XMLDeclarationVIFInputData( + primaryInputData as IMultistageBusInputDataProvider, + multiStagePrimaryAndStageInputData.StageInputData); + + var manStagesCount = + vifInputData.MultistageJobInputData.JobInputData.ManufacturingStages?.Count ?? -1; + + originalReportWriter.NumberOfManufacturingStages = manStagesCount; + + return _simFactoryFactory.Factory(_mode, vifInputData, originalReportWriter, null, + vtpReport, Validate); + } + catch (Exception ex) + { + Log.Error($"Failed to create additional Simulation run: {ex.Message}"); + return null; + } + }; + return; +#pragma warning restore 162 + + } + default: + throw new VectoException("Unknown InputData for Declaration Mode!"); + } + } + + private IVectoRunDataFactory CreateRunDataReader(IMultistageVIFInputData multistageVifInputData, IDeclarationReport declarationReport) + { + if (multistageVifInputData.VehicleInputData == null) + { + //THIS DOESN'T WORK :/ + var reportCompleted = declarationReport; //; new XMLDeclarationReportCompletedVehicle(ReportWriter, true) + //{ + // PrimaryVehicleReportInputData = multistageVifInputData.MultistageJobInputData.JobInputData.PrimaryVehicle, + //}; + return new DeclarationModeCompletedMultistageBusVectoRunDataFactory( + multistageVifInputData.MultistageJobInputData, + reportCompleted); + } else { + var report = declarationReport;// ?? new XMLDeclarationReportMultistageBusVehicle(ReportWriter); + return new DeclarationModeMultistageBusVectoRunDataFactory(multistageVifInputData, report); + + + } + } + + private IVectoRunDataFactory CreateRunDataReader(IDeclarationInputDataProvider declDataProvider, + IDeclarationReport declarationReport) + { + var vehicleCategory = declDataProvider.JobInputData.Vehicle.VehicleCategory; + if(vehicleCategory.IsLorry()) { + var report = declarationReport ?? new XMLDeclarationReport(ReportWriter); + return new DeclarationModeTruckVectoRunDataFactory(declDataProvider, report); + } + + if(vehicleCategory.IsBus()) + switch (declDataProvider.JobInputData.Vehicle.VehicleCategory) + { + case VehicleCategory.HeavyBusCompletedVehicle: + var reportCompleted = declarationReport; + //?? + //new XMLDeclarationReportCompletedVehicle(ReportWriter, + // declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) + //{ + // PrimaryVehicleReportInputData = declDataProvider.PrimaryVehicleData, + //}; + return new DeclarationModeCompletedBusVectoRunDataFactory(declDataProvider, reportCompleted); + case VehicleCategory.HeavyBusPrimaryVehicle: + var reportPrimary = declarationReport; + //?? + // new XMLDeclarationReportPrimaryVehicle(ReportWriter, + // declDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); + return new DeclarationModePrimaryBusVectoRunDataFactory(declDataProvider, reportPrimary); + + default: + + break; + } + + throw new Exception( + $"Could not create RunDataFactory for Vehicle Category{vehicleCategory}"); + } + + private IVectoRunDataFactory CreateRunDataReader(ISingleBusInputDataProvider singleBusProvider, + IDeclarationReport declarationReport) + { + var report = declarationReport ?? new XMLDeclarationReport(ReportWriter); + return new DeclarationModeSingleBusVectoRunDataFactory(singleBusProvider, report); + } + + private IVectoRunDataFactory CreateRunDataReader(IVTPDeclarationInputDataProvider vtpProvider, + IVTPReport vtpReport) + { + var report = vtpReport ?? new XMLVTPReport(ReportWriter); + if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry()) { + return new DeclarationVTPModeVectoRunDataFactoryLorries(vtpProvider, report); + } + + if (vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus()) { + return new DeclarationVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider, report); + } + + throw new Exception( + $"Could not create RunDataFactory for Vehicle Category{vtpProvider.JobInputData.Vehicle.VehicleCategory}"); + } + + } +} diff --git a/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs new file mode 100644 index 0000000000000000000000000000000000000000..c8da6c30de9165b6cd6529f03ab92a79983b69e5 --- /dev/null +++ b/VectoCore/VectoCore/Models/Simulation/Impl/SimulatorFactory/SimulatorFactoryEngineering.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using JetBrains.Annotations; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.OutputData; + +namespace TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory +{ + public class SimulatorFactoryEngineering : SimulatorFactory + { + [UsedImplicitly] + public SimulatorFactoryEngineering(IInputDataProvider dataProvider, IOutputDataWriter writer, bool validate) : base(ExecutionMode.Engineering, writer, validate) + { + CreateEngineeringDataReader(dataProvider); + } + + private void CreateEngineeringDataReader(IInputDataProvider dataProvider) + { + switch (dataProvider) { + case IVTPEngineeringInputDataProvider vtpProvider when vtpProvider.JobInputData.Vehicle.VehicleCategory.IsLorry(): + DataReader = new EngineeringVTPModeVectoRunDataFactoryLorries(vtpProvider); + return; + case IVTPEngineeringInputDataProvider vtpProvider when vtpProvider.JobInputData.Vehicle.VehicleCategory.IsBus(): + DataReader = new EngineeringVTPModeVectoRunDataFactoryHeavyBusPrimary(vtpProvider); + return; + case IEngineeringInputDataProvider engDataProvider when engDataProvider.JobInputData.JobType == VectoSimulationJobType.EngineOnlySimulation: + DataReader = new EngineOnlyVectoRunDataFactory(engDataProvider); + return; + case IEngineeringInputDataProvider engDataProvider: + DataReader = new EngineeringModeVectoRunDataFactory(engDataProvider); + return; + default: + throw new VectoException("Unknown InputData for Engineering Mode!"); + } + } + + } +} diff --git a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs index a64b23ec59b5721378dff38e0576e55088fc13c7..20cce3d9efe1c6cc84bd5e73e4c854950c63ff2d 100644 --- a/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs +++ b/VectoCore/VectoCore/Models/Simulation/SimulationFactoryNinjectModule.cs @@ -33,30 +33,32 @@ using System.Collections.Generic; using Ninject.Extensions.Factory; using Ninject.Modules; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.Utils.Ninject; using TUGraz.VectoHashing; namespace TUGraz.VectoCore.Models.Simulation { - public class SimulationFactoryNinjectModule : NinjectModule + public class SimulatorFactoryNinjectModule : VectoNinjectModule { #region Overrides of NinjectModule public override void Load() { - Bind<ISimulatorFactoryFactory>().ToFactory(); + Bind<ISimulatorFactoryFactory>().ToFactory(() => new UseFirstArgumentAsInstanceProvider()); + + Bind<ISimulatorFactory>().To<SimulatorFactoryDeclaration>().Named(ExecutionMode.Declaration.ToString()); + Bind<ISimulatorFactory>().To<SimulatorFactoryEngineering>().Named(ExecutionMode.Engineering.ToString()); - Bind<ISimulatorFactory>().To<SimulatorFactory>(); Bind<IDeclarationReport>().To<NullDeclarationReport>(); Bind<IVTPReport>().To<NullVTPReport>(); - //if (Kernel != null && !Kernel.HasModule(typeof(PowertrainBuilderInjectModule).FullName)) { - // Kernel.Load(new[] { new PowertrainBuilderInjectModule() }); - //} } #endregion diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs index 1a276f55493eb561a0713ec4ffbbd2ded564b986..c8f2e69bcc6db03b79920edd5b66335e9044d548 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Data/ElectricMotor/ElectricMotorData.cs @@ -14,22 +14,6 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [SIRange(double.MinValue, double.MaxValue)] public KilogramSquareMeter Inertia { get; internal set; } - [SIRange(double.MinValue, double.MaxValue)] - public NewtonMeter ContinuousTorque { get; internal set; } - - [SIRange(0, double.MaxValue)] - public PerSecond ContinuousTorqueSpeed { get; internal set; } - - [SIRange(double.MinValue, double.MaxValue)] - public NewtonMeter OverloadTorque { get; set; } - - [SIRange(0, double.MaxValue)] - public PerSecond OverloadTestSpeed { get; set; } - - - [SIRange(0, double.MaxValue)] - public Second OverloadTime { get; internal set; } - [SIRange(0, 1)] public double OverloadRegenerationFactor { get; internal set; } @@ -42,7 +26,9 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [ValidateObject] public VoltageLevelData EfficiencyData { get; internal set; } - [ValidateObject] + // not read direcly from input but calculated in a pre-processing step + public NewtonMeter ContinuousTorque { get; internal set; } + public DragCurve DragCurve { get; internal set; } } @@ -152,6 +138,22 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Data [SIRange(0, double.MaxValue)] public Volt Voltage { get; internal set; } + [SIRange(double.MinValue, double.MaxValue)] + public NewtonMeter ContinuousTorque { get; internal set; } + + [SIRange(0, double.MaxValue)] + public PerSecond ContinuousTorqueSpeed { get; internal set; } + + [SIRange(double.MinValue, double.MaxValue)] + public NewtonMeter OverloadTorque { get; set; } + + [SIRange(0, double.MaxValue)] + public PerSecond OverloadTestSpeed { get; set; } + + + [SIRange(0, double.MaxValue)] + public Second OverloadTime { get; internal set; } + [ValidateObject] public ElectricMotorFullLoadCurve FullLoadCurve { get; internal set; } diff --git a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs index 108fab48c75dfe1663229378016efe59feffcdeb..3df3a7789afbdaeba85ae679b9f9527f8a49ca06 100644 --- a/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs +++ b/VectoCore/VectoCore/Models/SimulationComponent/Impl/ElectricMotor.cs @@ -53,18 +53,19 @@ namespace TUGraz.VectoCore.Models.SimulationComponent.Impl container.AddComponent(this); // We have to do this again because in the base class the position is unknown! - ContinuousTorque = ModelData.ContinuousTorque; + var vLevel = ModelData.EfficiencyData.VoltageLevels.First(); + ContinuousTorque = vLevel.ContinuousTorque; var voltage = ModelData.EfficiencyData.VoltageLevels.First().Voltage; var contElPwr = - ModelData.EfficiencyData.LookupElectricPower(voltage, ModelData.ContinuousTorqueSpeed, -ContinuousTorque).ElectricalPower ?? - ModelData.EfficiencyData.LookupElectricPower(voltage, ModelData.ContinuousTorqueSpeed, ModelData.EfficiencyData.FullLoadDriveTorque(voltage, ModelData.ContinuousTorqueSpeed), true).ElectricalPower; - ContinuousPowerLoss = -contElPwr - ContinuousTorque * ModelData.ContinuousTorqueSpeed; // loss needs to be positive + ModelData.EfficiencyData.LookupElectricPower(voltage, vLevel.ContinuousTorqueSpeed, -ContinuousTorque).ElectricalPower ?? + ModelData.EfficiencyData.LookupElectricPower(voltage, vLevel.ContinuousTorqueSpeed, ModelData.EfficiencyData.FullLoadDriveTorque(voltage, vLevel.ContinuousTorqueSpeed), true).ElectricalPower; + ContinuousPowerLoss = -contElPwr - ContinuousTorque * vLevel.ContinuousTorqueSpeed; // loss needs to be positive - var peakElPwr = ModelData.EfficiencyData.LookupElectricPower(voltage, ModelData.OverloadTestSpeed, -ModelData.OverloadTorque, true) + var peakElPwr = ModelData.EfficiencyData.LookupElectricPower(voltage, vLevel.OverloadTestSpeed, -vLevel.OverloadTorque, true) .ElectricalPower; - var peakPwrLoss = -peakElPwr - ModelData.OverloadTorque * ModelData.OverloadTestSpeed; // losses need to be positive + var peakPwrLoss = -peakElPwr - vLevel.OverloadTorque * vLevel.OverloadTestSpeed; // losses need to be positive - OverloadBuffer = (peakPwrLoss - ContinuousPowerLoss) * ModelData.OverloadTime; + OverloadBuffer = (peakPwrLoss - ContinuousPowerLoss) * vLevel.OverloadTime; if (OverloadBuffer.IsSmallerOrEqual(0) && !(container is SimplePowertrainContainer)) { Log.Error("Overload buffer for thermal de-rating is zero or negative! Please check electric motor data!"); } diff --git a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs index 0906c289774c2f52493862bcf4ae5333b3019596..3f0baeffc70462b2e8adc5a16c6b7e6a2b631675 100644 --- a/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs +++ b/VectoCore/VectoCore/Ninject/VectoNinjectModule.cs @@ -31,8 +31,12 @@ using Ninject.Modules; using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.Reader; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.OutputData.XML; +using TUGraz.VectoCore.OutputData.XML.ComponentWriter; +using TUGraz.VectoCore.OutputData.XML.Engineering; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; namespace TUGraz.VectoCore { @@ -57,7 +61,15 @@ namespace TUGraz.VectoCore LoadModule<XMLEngineeringWriterInjectModule>(); - LoadModule<SimulationFactoryNinjectModule>(); + LoadModule<SimulatorFactoryNinjectModule>(); + + LoadModule<XMLDeclarationReportFactoryNinjectModule>(); + + LoadModule<VectoRunDataFactoryNinjectModule>(); + + LoadModule<GroupWriterNinjectModule>(); + + LoadModule<ComponentWriterNinjectModule>(); } #endregion diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputVIFWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputVIFWriter.cs index c42e6bb4b9b9ea2f1f6d91c5e857ae9b06afff92..e0481172fdd28f1f3a69c0e93822f85521ba046d 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputVIFWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputVIFWriter.cs @@ -9,58 +9,45 @@ namespace TUGraz.VectoCore.OutputData.FileIO { public class FileOutputVIFWriter : FileOutputWriter { - public const string REPORT_ENDING_PREFIX = "VIF_Report_"; - - private string _jobFile; - private readonly int _numberOfManufacturingStages; + //private string _jobFile; + //private readonly int _numberOfManufacturingStages; - public string XMLMultistageReportFileName => Path.ChangeExtension(_jobFile, $"{REPORT_ENDING_PREFIX}{_numberOfManufacturingStages + 2}.xml"); - public FileOutputVIFWriter(string jobFile, int numberOfManufacturingStages) : base(jobFile) + public FileOutputVIFWriter(string jobFile, int numberOfManufacturingStages) : + base(jobFile, numberOfManufacturingStages) { - _jobFile = jobFile; - RemoveExistingEndingPrefix(); - _numberOfManufacturingStages = numberOfManufacturingStages; + //_jobFile = RemoveExistingVIFEndingPrefix(jobFile); + //_numberOfManufacturingStages = numberOfManufacturingStages; } - - private void RemoveExistingEndingPrefix() - { - var vifReportIndex = _jobFile.IndexOf(REPORT_ENDING_PREFIX, StringComparison.Ordinal); - if (vifReportIndex == -1) - return; - - if (!_jobFile.Contains(REPORT_ENDING_PREFIX)) - return; - - _jobFile = $"{_jobFile.Substring(0, vifReportIndex - 1)}.xml"; - } - public override void WriteReport(ReportType type, XDocument data) { - var fileName = (string)null; - switch (type) { - case ReportType.DeclarationReportMultistageVehicleXML: - fileName = XMLMultistageReportFileName; - break; - default: - base.WriteReport(type, data); - break; - } - - if (fileName == null) - return; - - using (var writer = new FileStream(fileName, FileMode.Create)) - { - using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) - { - xmlWriter.Formatting = Formatting.Indented; - data.WriteTo(xmlWriter); - xmlWriter.Flush(); - xmlWriter.Close(); - } - } + base.WriteReport(type, data); + return; + + //var fileName = (string)null; + //switch (type) { + // case ReportType.DeclarationReportMultistageVehicleXML: + // fileName = XMLMultistageReportFileName; + // break; + // default: + // base.WriteReport(type, data); + // break; + //} + + //if (fileName == null) + // return; + + //using (var writer = new FileStream(fileName, FileMode.Create)) + //{ + // using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) + // { + // xmlWriter.Formatting = Formatting.Indented; + // data.WriteTo(xmlWriter); + // xmlWriter.Flush(); + // xmlWriter.Close(); + // } + //} } } diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs index 3c91014942a2f181346bf3c05c1e0e7d03e91fa6..55f860d0cd88fd04e76cab64eb947b8b99bb3d9e 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/FileOutputWriter.cs @@ -30,11 +30,15 @@ */ using System; +using System.Collections.Concurrent; +using System.Collections.Generic; using System.Data; using System.IO; +using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; +using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.Utils; @@ -43,13 +47,46 @@ namespace TUGraz.VectoCore.OutputData.FileIO { public class FileOutputWriter : LoggingObject, IOutputDataWriter { - private readonly string _jobFile; + protected readonly string _jobFile; + + public string JobFile => _jobFile; + + protected ConcurrentDictionary<ReportType, string> _writtenReports = new ConcurrentDictionary<ReportType, string>(); + public virtual IDictionary<ReportType, string> GetWrittenFiles() + { + return _writtenReports; + } + + private volatile bool _sumFileWritten = false; + public bool SumFileWritten => _sumFileWritten; + + public const string REPORT_ENDING_PREFIX = "VIF_Report_"; + + private int? _numberOfManufacturingStages = null; + + public int NumberOfManufacturingStages + { + set => _numberOfManufacturingStages = value; + } + + public XDocument MultistageXmlReport => XDocument.Load(XMLMultistageReportFileName); + + public string XMLMultistageReportFileName + { + get + { + return Path.ChangeExtension( + RemoveExistingVIFEndingPrefix(_jobFile), + $"{REPORT_ENDING_PREFIX}{(_numberOfManufacturingStages ?? 0) + 2}.xml"); + } + } public string BasePath => Path.GetDirectoryName(_jobFile); public string PDFReportName => Path.ChangeExtension(_jobFile, Constants.FileExtensions.PDFReport); - public string XMLFullReportName => Path.ChangeExtension(_jobFile, "RSLT_MANUFACTURER.xml"); + public virtual string XMLFullReportName => Path.ChangeExtension(_jobFile, "RSLT_MANUFACTURER.xml"); + public string XMLCustomerReportName => Path.ChangeExtension(_jobFile, "RSLT_CUSTOMER.xml"); @@ -61,6 +98,7 @@ namespace TUGraz.VectoCore.OutputData.FileIO public string SumFileName => Path.ChangeExtension(_jobFile, Constants.FileExtensions.SumFile); + /// <summary> /// /// </summary> @@ -70,12 +108,32 @@ namespace TUGraz.VectoCore.OutputData.FileIO _jobFile = jobFile; } - public void WriteSumData(DataTable data) + protected FileOutputWriter(string jobFile, int numberOfManufacturingStages) : this(jobFile) + { + _numberOfManufacturingStages = numberOfManufacturingStages; + } + + + + protected string RemoveExistingVIFEndingPrefix(string jobFile) + { + var vifReportIndex = jobFile.IndexOf(REPORT_ENDING_PREFIX, StringComparison.Ordinal); + if (vifReportIndex == -1) + return jobFile; + + if (!jobFile.Contains(REPORT_ENDING_PREFIX)) + return jobFile; + + return $"{jobFile.Substring(0, vifReportIndex - 1)}.xml"; + } + + public virtual void WriteSumData(DataTable data) { VectoCSVFile.Write(SumFileName, data, true, true); + _sumFileWritten = true; } - public string GetModDataFileName(string runName, string cycleName, string runSuffix) + public virtual string GetModDataFileName(string runName, string cycleName, string runSuffix) { string modFileName; if (!string.IsNullOrWhiteSpace(cycleName) || !string.IsNullOrWhiteSpace(runSuffix)) { @@ -87,12 +145,32 @@ namespace TUGraz.VectoCore.OutputData.FileIO return Path.Combine(BasePath, string.Concat(modFileName.Split(Path.GetInvalidFileNameChars()))); } - public void WriteModData(int jobRunId, string runName, string cycleName, string runSuffix, DataTable modData) + public virtual void WriteModData(int jobRunId, string runName, string cycleName, string runSuffix, DataTable modData) { - VectoCSVFile.Write(GetModDataFileName(runName, cycleName, runSuffix), modData, true); + var modDataFileName = GetModDataFileName(runName, cycleName, runSuffix); + VectoCSVFile.Write(modDataFileName, modData, true); } public virtual void WriteReport(ReportType type, XDocument data) + { + var fileName = GetReportFilename(type); + + if (File.Exists(fileName)) { + Log.Warn($"Overwriting file ({fileName})"); + } + using (var writer = new FileStream(fileName, FileMode.Create)) { + using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) { + xmlWriter.Formatting = Formatting.Indented; + data.WriteTo(xmlWriter); + xmlWriter.Flush(); + xmlWriter.Close(); + } + } + + var added = _writtenReports.TryAdd(type, fileName); + } + + protected virtual string GetReportFilename(ReportType type) { string fileName = null; switch (type) { @@ -111,20 +189,16 @@ namespace TUGraz.VectoCore.OutputData.FileIO case ReportType.DeclarationVTPReportXML: fileName = XMLVTPReportName; break; + case ReportType.DeclarationReportMultistageVehicleXML: + fileName = XMLMultistageReportFileName; + break; default: throw new ArgumentOutOfRangeException("ReportType"); } - using (var writer = new FileStream(fileName, FileMode.Create)) { - using (var xmlWriter = new XmlTextWriter(writer, Encoding.UTF8)) { - xmlWriter.Formatting = Formatting.Indented; - data.WriteTo(xmlWriter); - xmlWriter.Flush(); - xmlWriter.Close(); - } - } + + return fileName; } - public virtual void WriteReport(ReportType type, Stream data) { diff --git a/VectoCore/VectoCore/OutputData/FileIO/FileWriter.cd b/VectoCore/VectoCore/OutputData/FileIO/FileWriter.cd new file mode 100644 index 0000000000000000000000000000000000000000..6a74901c6e9c2a08c72d5f50071079676780b286 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/FileIO/FileWriter.cd @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8"?> +<ClassDiagram MajorVersion="1" MinorVersion="1" MembersFormat="FullSignature"> + <Class Name="TUGraz.VectoCore.OutputData.FileIO.FileOutputVIFWriter"> + <Position X="1.75" Y="0.5" Width="4.5" /> + <TypeIdentifier> + <HashCode>AAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=</HashCode> + <FileName>OutputData\FileIO\FileOutputVIFWriter.cs</FileName> + </TypeIdentifier> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.FileIO.FileOutputWriter"> + <Position X="0.5" Y="2.5" Width="6.75" /> + <TypeIdentifier> + <HashCode>BgAAgAAAKQAAAAAAAAACAABIAAAABgAEgAhABAIABAA=</HashCode> + <FileName>OutputData\FileIO\FileOutputWriter.cs</FileName> + </TypeIdentifier> + <Lollipop Position="0.2" /> + </Class> + <Font Name="Segoe UI" Size="9" /> +</ClassDiagram> \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs index d2208265aed40716d25f2c24dd96f1b6fb498f7e..de37c5e5fad37c467105e4f6c8d2a12818d450bf 100644 --- a/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs +++ b/VectoCore/VectoCore/OutputData/FileIO/JSONFileWriter.cs @@ -35,7 +35,7 @@ public class JSONFileWriter : IOutputFileWriter private const int VectoVTPJobFormatVersion = 4; - private const int ElectricMotorFormatVersion = 4; + private const int ElectricMotorFormatVersion = 5; private const int REESSFormatVersion = 1; @@ -80,15 +80,7 @@ public class JSONFileWriter : IOutputFileWriter body.Add("SavedInDeclMode", declMode); body.Add("Model", electricMachine.Model); - //body.Add("FullLoadCurve", GetRelativePath(electricMachine.FullLoadCurve.Source, Path.GetDirectoryName(filename))); - //body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); - //body.Add("EfficiencyMap", GetRelativePath(electricMachine.EfficiencyMap.Source, Path.GetDirectoryName(filename))); - body.Add("Inertia", electricMachine.Inertia.Value()); - body.Add("ContinuousTorque", electricMachine.ContinuousTorque.Value()); - body.Add("ContinuousTorqueSpeed", electricMachine.ContinuousTorqueSpeed.AsRPM); - body.Add("OverloadTorque", electricMachine.OverloadTorque.Value()); - body.Add("OverloadTorqueSpeed", electricMachine.OverloadTestSpeed.AsRPM); - body.Add("OverloadTime", electricMachine.OverloadTime.Value()); + body.Add("Inertia", electricMachine.Inertia.Value()); body.Add("ThermalOverloadRecoveryFactor", electricMachine.OverloadRecoveryFactor); body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); @@ -96,11 +88,20 @@ public class JSONFileWriter : IOutputFileWriter foreach (var entry in electricMachine.VoltageLevels) { var vlevel = new Dictionary<string, object>(); vlevel.Add("Voltage", entry.VoltageLevel.Value()); + vlevel.Add("ContinuousTorque", entry.ContinuousTorque.Value()); + vlevel.Add("ContinuousTorqueSpeed", entry.ContinuousTorqueSpeed.AsRPM); + vlevel.Add("OverloadTorque", entry.OverloadTorque.Value()); + vlevel.Add("OverloadTorqueSpeed", entry.OverloadTestSpeed.AsRPM); + vlevel.Add("OverloadTime", entry.OverloadTime.Value()); vlevel.Add("FullLoadCurve", GetRelativePath(entry.FullLoadCurve.Source, Path.GetDirectoryName(filename))); - //vlevel.Add("DragCurve", GetRelativePath(entry.DragCurve.Source, Path.GetDirectoryName(filename))); - vlevel.Add("EfficiencyMap", GetRelativePath(entry.EfficiencyMap.Source, Path.GetDirectoryName(filename))); - vlevels.Add(vlevel); + var powerMaps = new Dictionary<int, object>(); + foreach (var pMap in entry.PowerMap) { + powerMaps.Add(pMap.Gear, GetRelativePath(pMap.PowerMap.Source, Path.GetDirectoryName(filename))); + } + vlevel.Add("EfficiencyMap", powerMaps); //PowerMap + vlevels.Add(vlevel); } + body.Add("DragCurve", GetRelativePath(electricMachine.DragCurve.Source, Path.GetDirectoryName(filename))); body.Add("VoltageLevels", vlevels); WriteFile(header, body, filename); @@ -512,11 +513,13 @@ public class JSONFileWriter : IOutputFileWriter body["TankSystem"] = vehicle.TankSystem.Value.ToString(); //body.Add(JsonKeys.HEV_Vehicle_MaxDrivetrainPower, vehicle.MaxDrivetrainPower.ConvertToKiloWatt().Value); - if (vehicle.ElectricMotorTorqueLimits != null) { - body.Add("EMTorqueLimits", GetRelativePath(vehicle.ElectricMotorTorqueLimits.Source, basePath)); - } - if (vehicle.MaxPropulsionTorque != null) { - body.Add("MaxPropulsionTorque", GetRelativePath(vehicle.MaxPropulsionTorque.Source, basePath)); + + //ToDo ElectricMotorTorqueLimits changed + // if (vehicle.ElectricMotorTorqueLimits != null) { + // body.Add("EMTorqueLimits", GetRelativePath(vehicle.ElectricMotorTorqueLimits.Source, basePath)); + // } + if (vehicle.BoostingLimitations != null) { + body.Add("MaxPropulsionTorque", GetRelativePath(vehicle.BoostingLimitations.Source, basePath)); } body.Add("InitialSoC", vehicle.InitialSOC * 100); diff --git a/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs b/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..9780d7daaab9adab21ee3c8918af4c8d769bf537 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/FileIO/TempFileOutputWriter.cs @@ -0,0 +1,111 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Xml.Linq; +using Castle.Core.Internal; +using TUGraz.VectoCommon.Models; + +namespace TUGraz.VectoCore.OutputData.FileIO +{ + public class TempFileOutputWriter : FileOutputWriter + { + private readonly Dictionary<ReportType, XDocument> _storedReports = new Dictionary<ReportType, XDocument>(); + private readonly HashSet<ReportType> _reportsToWrite; + private IOutputDataWriter BaseWriter; + + #region Overrides of FileOutputWriter + + public override string XMLFullReportName => Path.ChangeExtension(BaseWriter.JobFile, "RSLT_MANUFACTURER_PRIMARY.xml"); + + #endregion + + /// <summary> + /// Stores all written Documents by default. + /// </summary> + /// <param name="jobFile"></param> + /// <param name="reportsToWrite">ReportTypes specified here are written to disk</param> + public TempFileOutputWriter(IOutputDataWriter baseWriter, params ReportType[] reportsToWrite) : base(baseWriter.JobFile) + { + BaseWriter = baseWriter; + _reportsToWrite = new HashSet<ReportType>(); + if (!reportsToWrite.IsNullOrEmpty()) { + foreach (var reportType in reportsToWrite) { + _reportsToWrite.Add(reportType); + } + } + } + + #region Overrides of FileOutputWriter + + public override IDictionary<ReportType, string> GetWrittenFiles() + { + return BaseWriter is FileOutputWriter ? base.GetWrittenFiles() : BaseWriter.GetWrittenFiles(); + } + + //public int NumberOfManufacturingStages { get; set; } + + //public XDocument MultistageXmlReport { get; } + + #endregion + + + #region Overrides of FileOutputWriter + public override void WriteReport(ReportType type, XDocument data) + { + if (type == ReportType.DeclarationReportPdf) { + throw new ArgumentOutOfRangeException("PDF is not supported by TempFileOutputWriter"); + } + + if (_reportsToWrite.Contains(type)) { + if (BaseWriter is FileOutputWriter) { + base.WriteReport(type, data); + } else { + BaseWriter.WriteReport(type, data); + } + } + + _storedReports.Add(type, data); + } + + public override void WriteReport(ReportType type, Stream data) + { + throw new NotImplementedException("PDF is not supported by TempFileOutputWriter"); + } + #endregion + + public XDocument GetDocument(ReportType type) + { + + var docStored = _storedReports.TryGetValue(type, out var report); + if (!docStored) { + Log.Warn($"No Document with type {type} stored"); + } + return report; + } + + #region Implementation of IModalDataWriter + + public override void WriteModData(int jobRunId, string runName, string cycleName, string runSuffix, DataTable modData) + { + BaseWriter.WriteModData(jobRunId, runName, cycleName, runSuffix, modData); + } + + #endregion + + #region Implementation of ISummaryWriter + + public override void WriteSumData(DataTable sortedAndFilteredTable) + { + BaseWriter.WriteSumData(sortedAndFilteredTable); + } + + #endregion + + #region Implementation of IOutputDataWriter + + //public string JobFile => BaseWriter.JobFile; + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/IDataWriter.cs b/VectoCore/VectoCore/OutputData/IDataWriter.cs index 408e432732b35b07f48b1d481b33ff98e5a3bfa9..4d602550036ec7beb667f8d35feffb1d1dceba43 100644 --- a/VectoCore/VectoCore/OutputData/IDataWriter.cs +++ b/VectoCore/VectoCore/OutputData/IDataWriter.cs @@ -29,13 +29,17 @@ * Martin Rexeis, rexeis@ivt.tugraz.at, IVT, Graz University of Technology */ +using System.Collections.Generic; using System.Data; using System.IO; using System.Xml.Linq; namespace TUGraz.VectoCore.OutputData { - public interface IOutputDataWriter : IModalDataWriter, IReportWriter, ISummaryWriter {} + public interface IOutputDataWriter : IModalDataWriter, IReportWriter, ISummaryWriter + { + string JobFile { get; } + } public interface IModalDataWriter { @@ -52,8 +56,17 @@ namespace TUGraz.VectoCore.OutputData void WriteReport(ReportType type, XDocument data); void WriteReport(ReportType type, Stream data); + + + IDictionary<ReportType, string> GetWrittenFiles(); + int NumberOfManufacturingStages { set; } + + XDocument MultistageXmlReport { get; } + } + + public enum ReportType { DeclarationReportPdf, diff --git a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs index 644197b8c6d7ba1d4260eab778f9d8c4564f8bf8..7690c5d72e2bb8207b3607ae7246804f8d8b5acc 100644 --- a/VectoCore/VectoCore/OutputData/ModalDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/ModalDataContainer.cs @@ -65,7 +65,7 @@ namespace TUGraz.VectoCore.OutputData private Second _duration; private Meter _distance; - private readonly ModalResultField[] _electricMotorColumns = new[] { + private readonly ModalResultField[] _electricMotorColumns = { ModalResultField.EM_ratio_, ModalResultField.P_EM_out_, ModalResultField.P_EM_mech_, @@ -94,7 +94,7 @@ namespace TUGraz.VectoCore.OutputData ModalResultField.EM_Off_, }; - private readonly ModalResultField[] _batterySignals = new[] { + private readonly ModalResultField[] _batterySignals = { ModalResultField.U0_reess, ModalResultField.U_reess_terminal, ModalResultField.I_reess, diff --git a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs index 10cf07f08b408eeba7ea5756bdddb3f69f9ee831..9c53788dc372429d62bfde4e7f01a0193626b0d3 100644 --- a/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs +++ b/VectoCore/VectoCore/OutputData/SummaryDataContainer.cs @@ -73,6 +73,7 @@ namespace TUGraz.VectoCore.OutputData Fields.SPECIFIC_FC, Fields.K_VEHLINE, Fields.K_ENGLINE }; + private object _tableLock = new object(); internal readonly DataTable Table; private readonly ISummaryWriter _sumWriter; @@ -94,126 +95,138 @@ namespace TUGraz.VectoCore.OutputData lock (Table) { Table.Columns.AddRange( new[] { - Tuple.Create(Fields.SORT, typeof(int)), - Tuple.Create(Fields.JOB, typeof(string)), - Tuple.Create(Fields.INPUTFILE, typeof(string)), - Tuple.Create(Fields.CYCLE, typeof(string)), - Tuple.Create(Fields.STATUS, typeof(string)), - Tuple.Create(Fields.VEHICLE_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.VIN_NUMBER, typeof(string)), - Tuple.Create(Fields.VEHICLE_MODEL, typeof(string)), - Tuple.Create(Fields.HDV_CO2_VEHICLE_CLASS, typeof(string)), - Tuple.Create(Fields.CURB_MASS, typeof(ConvertedSI)), - Tuple.Create(Fields.LOADING, typeof(ConvertedSI)), - Tuple.Create(Fields.PassengerCount, typeof(double)), - Tuple.Create(Fields.TOTAL_VEHICLE_MASS, typeof(ConvertedSI)), - Tuple.Create(Fields.ENGINE_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.ENGINE_MODEL, typeof(string)), - Tuple.Create(Fields.ENGINE_FUEL_TYPE, typeof(string)), - Tuple.Create(Fields.ENGINE_RATED_POWER, typeof(ConvertedSI)), - Tuple.Create(Fields.ENGINE_IDLING_SPEED, typeof(ConvertedSI)), - Tuple.Create(Fields.ENGINE_RATED_SPEED, typeof(ConvertedSI)), - Tuple.Create(Fields.ENGINE_DISPLACEMENT, typeof(ConvertedSI)), - Tuple.Create(Fields.ENGINE_WHTC_URBAN, typeof(string)), - Tuple.Create(Fields.ENGINE_WHTC_RURAL, typeof(string)), - Tuple.Create(Fields.ENGINE_WHTC_MOTORWAY, typeof(string)), - Tuple.Create(Fields.ENGINE_BF_COLD_HOT, typeof(string)), - Tuple.Create(Fields.ENGINE_CF_REG_PER, typeof(string)), - Tuple.Create(Fields.ENGINE_ACTUAL_CORRECTION_FACTOR, typeof(string)), - Tuple.Create(Fields.VEHICLE_FUEL_TYPE, typeof(string)), - Tuple.Create(Fields.AIRDRAG_MODEL, typeof(string)), - Tuple.Create(Fields.CD_x_A_DECLARED, typeof(ConvertedSI)), - Tuple.Create(Fields.CD_x_A, typeof(ConvertedSI)), - Tuple.Create(Fields.SLEEPER_CAB, typeof(string)), - Tuple.Create(Fields.DECLARED_RRC_AXLE1, typeof(double)), - Tuple.Create(Fields.DECLARED_FZISO_AXLE1, typeof(ConvertedSI)), - Tuple.Create(Fields.DECLARED_RRC_AXLE2, typeof(double)), - Tuple.Create(Fields.DECLARED_FZISO_AXLE2, typeof(ConvertedSI)), - Tuple.Create(Fields.DECLARED_RRC_AXLE3, typeof(double)), - Tuple.Create(Fields.DECLARED_FZISO_AXLE3, typeof(ConvertedSI)), - Tuple.Create(Fields.DECLARED_RRC_AXLE4, typeof(double)), - Tuple.Create(Fields.DECLARED_FZISO_AXLE4, typeof(ConvertedSI)), - Tuple.Create(Fields.ROLLING_RESISTANCE_COEFFICIENT_W_TRAILER, typeof(double)), - Tuple.Create(Fields.ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER, typeof(double)), - Tuple.Create(Fields.R_DYN, typeof(ConvertedSI)), - Tuple.Create(Fields.NUM_AXLES_DRIVEN, typeof(int)), - Tuple.Create(Fields.NUM_AXLES_NON_DRIVEN, typeof(int)), - Tuple.Create(Fields.NUM_AXLES_TRAILER, typeof(int)), - Tuple.Create(Fields.GEARBOX_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.GEARBOX_MODEL, typeof(string)), - Tuple.Create(Fields.GEARBOX_TYPE, typeof(string)), - Tuple.Create(Fields.GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)), - Tuple.Create(Fields.GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)), - Tuple.Create(Fields.TORQUECONVERTER_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.TORQUECONVERTER_MODEL, typeof(string)), - Tuple.Create(Fields.RETARDER_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.RETARDER_MODEL, typeof(string)), - Tuple.Create(Fields.RETARDER_TYPE, typeof(string)), - Tuple.Create(Fields.ANGLEDRIVE_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.ANGLEDRIVE_MODEL, typeof(string)), - Tuple.Create(Fields.ANGLEDRIVE_RATIO, typeof(string)), - Tuple.Create(Fields.AXLE_MANUFACTURER, typeof(string)), - Tuple.Create(Fields.AXLE_MODEL, typeof(string)), - Tuple.Create(Fields.AXLE_RATIO, typeof(ConvertedSI)), - Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.SteeringPump), typeof(string)), - Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.Fan), typeof(string)), - Tuple.Create( - string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.HeatingVentilationAirCondition), - typeof(string)), - Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem), typeof(string)), - Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem), typeof(string)), - Tuple.Create(Fields.TCU_MODEL, typeof(string)), - Tuple.Create(Fields.ADAS_TECHNOLOGY_COMBINATION, typeof(string)), - Tuple.Create(Fields.PTO_TECHNOLOGY, typeof(string)), - Tuple.Create(Fields.REESS_CAPACITY, typeof(string)), + Tuple.Create(Fields.SORT, typeof(int)), + Tuple.Create(Fields.JOB, typeof(string)), + Tuple.Create(Fields.INPUTFILE, typeof(string)), + Tuple.Create(Fields.CYCLE, typeof(string)), + Tuple.Create(Fields.STATUS, typeof(string)), + Tuple.Create(Fields.VEHICLE_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.VIN_NUMBER, typeof(string)), + Tuple.Create(Fields.VEHICLE_MODEL, typeof(string)), + Tuple.Create(Fields.HDV_CO2_VEHICLE_CLASS, typeof(string)), + Tuple.Create(Fields.CURB_MASS, typeof(ConvertedSI)), + Tuple.Create(Fields.LOADING, typeof(ConvertedSI)), + Tuple.Create(Fields.PassengerCount, typeof(double)), + Tuple.Create(Fields.TOTAL_VEHICLE_MASS, typeof(ConvertedSI)), + Tuple.Create(Fields.ENGINE_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.ENGINE_MODEL, typeof(string)), + Tuple.Create(Fields.ENGINE_FUEL_TYPE, typeof(string)), + Tuple.Create(Fields.ENGINE_RATED_POWER, typeof(ConvertedSI)), + Tuple.Create(Fields.ENGINE_IDLING_SPEED, typeof(ConvertedSI)), + Tuple.Create(Fields.ENGINE_RATED_SPEED, typeof(ConvertedSI)), + Tuple.Create(Fields.ENGINE_DISPLACEMENT, typeof(ConvertedSI)), + Tuple.Create(Fields.ENGINE_WHTC_URBAN, typeof(string)), + Tuple.Create(Fields.ENGINE_WHTC_RURAL, typeof(string)), + Tuple.Create(Fields.ENGINE_WHTC_MOTORWAY, typeof(string)), + Tuple.Create(Fields.ENGINE_BF_COLD_HOT, typeof(string)), + Tuple.Create(Fields.ENGINE_CF_REG_PER, typeof(string)), + Tuple.Create(Fields.ENGINE_ACTUAL_CORRECTION_FACTOR, typeof(string)), + Tuple.Create(Fields.VEHICLE_FUEL_TYPE, typeof(string)), + Tuple.Create(Fields.AIRDRAG_MODEL, typeof(string)), + Tuple.Create(Fields.CD_x_A_DECLARED, typeof(ConvertedSI)), + Tuple.Create(Fields.CD_x_A, typeof(ConvertedSI)), + Tuple.Create(Fields.SLEEPER_CAB, typeof(string)), + Tuple.Create(Fields.DECLARED_RRC_AXLE1, typeof(double)), + Tuple.Create(Fields.DECLARED_FZISO_AXLE1, typeof(ConvertedSI)), + Tuple.Create(Fields.DECLARED_RRC_AXLE2, typeof(double)), + Tuple.Create(Fields.DECLARED_FZISO_AXLE2, typeof(ConvertedSI)), + Tuple.Create(Fields.DECLARED_RRC_AXLE3, typeof(double)), + Tuple.Create(Fields.DECLARED_FZISO_AXLE3, typeof(ConvertedSI)), + Tuple.Create(Fields.DECLARED_RRC_AXLE4, typeof(double)), + Tuple.Create(Fields.DECLARED_FZISO_AXLE4, typeof(ConvertedSI)), + Tuple.Create(Fields.ROLLING_RESISTANCE_COEFFICIENT_W_TRAILER, typeof(double)), + Tuple.Create(Fields.ROLLING_RESISTANCE_COEFFICIENT_WO_TRAILER, typeof(double)), + Tuple.Create(Fields.R_DYN, typeof(ConvertedSI)), + Tuple.Create(Fields.NUM_AXLES_DRIVEN, typeof(int)), + Tuple.Create(Fields.NUM_AXLES_NON_DRIVEN, typeof(int)), + Tuple.Create(Fields.NUM_AXLES_TRAILER, typeof(int)), + Tuple.Create(Fields.GEARBOX_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.GEARBOX_MODEL, typeof(string)), + Tuple.Create(Fields.GEARBOX_TYPE, typeof(string)), + Tuple.Create(Fields.GEAR_RATIO_FIRST_GEAR, typeof(ConvertedSI)), + Tuple.Create(Fields.GEAR_RATIO_LAST_GEAR, typeof(ConvertedSI)), + Tuple.Create(Fields.TORQUECONVERTER_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.TORQUECONVERTER_MODEL, typeof(string)), + Tuple.Create(Fields.RETARDER_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.RETARDER_MODEL, typeof(string)), + Tuple.Create(Fields.RETARDER_TYPE, typeof(string)), + Tuple.Create(Fields.ANGLEDRIVE_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.ANGLEDRIVE_MODEL, typeof(string)), + Tuple.Create(Fields.ANGLEDRIVE_RATIO, typeof(string)), + Tuple.Create(Fields.AXLE_MANUFACTURER, typeof(string)), + Tuple.Create(Fields.AXLE_MODEL, typeof(string)), + Tuple.Create(Fields.AXLE_RATIO, typeof(ConvertedSI)), + Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.SteeringPump), + typeof(string)), + Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.Fan), + typeof(string)), + Tuple.Create( + string.Format(Fields.AUX_TECH_FORMAT, + Constants.Auxiliaries.IDs.HeatingVentilationAirCondition), + typeof(string)), + Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.PneumaticSystem), + typeof(string)), + Tuple.Create(string.Format(Fields.AUX_TECH_FORMAT, Constants.Auxiliaries.IDs.ElectricSystem), + typeof(string)), + Tuple.Create(Fields.TCU_MODEL, typeof(string)), + Tuple.Create(Fields.ADAS_TECHNOLOGY_COMBINATION, typeof(string)), + Tuple.Create(Fields.PTO_TECHNOLOGY, typeof(string)), + Tuple.Create(Fields.REESS_CAPACITY, typeof(string)), //Tuple.Create(PTO_OTHER_ELEMENTS, typeof(string)), }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); Table.Columns.AddRange( new[] { - Fields.CARGO_VOLUME, Fields.TIME, Fields.DISTANCE, Fields.SPEED, Fields.ALTITUDE_DELTA, + Fields.CARGO_VOLUME, Fields.TIME, Fields.DISTANCE, Fields.SPEED, Fields.ALTITUDE_DELTA, }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); Table.Columns.AddRange( new[] { - Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, Fields.CO2_PKM, Fields.P_WHEEL, Fields.P_WHEEL_POS, Fields.P_FCMAP, Fields.P_FCMAP_POS, - Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, Fields.E_AUX_EL_HV, Fields.E_CLUTCH_LOSS, - Fields.E_TC_LOSS, Fields.E_SHIFT_LOSS, Fields.E_GBX_LOSS, Fields.E_RET_LOSS, Fields.E_ANGLE_LOSS, - Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, Fields.E_ROLL, Fields.E_GRAD, - Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn, - Fields.E_BusAux_ES_consumed, Fields.E_BusAux_ES_generated, Fields.Delta_E_BusAux_Battery, - Fields.E_BusAux_PS_corr, Fields.E_BusAux_ES_mech_corr, - Fields.E_BusAux_HVAC_Mech, Fields.E_BusAux_HVAC_El, - Fields.E_BusAux_AuxHeater, - Fields.E_WHR_EL, Fields.E_WHR_MECH, Fields.E_ICE_START, Fields.E_AUX_ESS_missing, Fields.NUM_ICE_STARTS, Fields.ACC, - Fields.ACC_POS, Fields.ACC_NEG, Fields.ACC_TIMESHARE, Fields.DEC_TIMESHARE, Fields.CRUISE_TIMESHARE, - Fields.MAX_SPEED, Fields.MAX_ACCELERATION, Fields.MAX_DECELERATION, Fields.AVG_ENGINE_SPEED, - Fields.MAX_ENGINE_SPEED, Fields.NUM_GEARSHIFTS, Fields.STOP_TIMESHARE, Fields.ICE_FULL_LOAD_TIME_SHARE, Fields.ICE_OFF_TIME_SHARE, - Fields.COASTING_TIME_SHARE, Fields.BRAKING_TIME_SHARE, Fields.AVERAGE_POS_ACC + Fields.CO2_KM, Fields.CO2_TKM, Fields.CO2_M3KM, Fields.CO2_PKM, Fields.P_WHEEL, + Fields.P_WHEEL_POS, Fields.P_FCMAP, Fields.P_FCMAP_POS, + Fields.E_FCMAP_POS, Fields.E_FCMAP_NEG, Fields.E_POWERTRAIN_INERTIA, Fields.E_AUX, + Fields.E_AUX_EL_HV, Fields.E_CLUTCH_LOSS, + Fields.E_TC_LOSS, Fields.E_SHIFT_LOSS, Fields.E_GBX_LOSS, Fields.E_RET_LOSS, + Fields.E_ANGLE_LOSS, + Fields.E_AXL_LOSS, Fields.E_BRAKE, Fields.E_VEHICLE_INERTIA, Fields.E_WHEEL, Fields.E_AIR, + Fields.E_ROLL, Fields.E_GRAD, + Fields.AirConsumed, Fields.AirGenerated, Fields.E_PS_CompressorOff, Fields.E_PS_CompressorOn, + Fields.E_BusAux_ES_consumed, Fields.E_BusAux_ES_generated, Fields.Delta_E_BusAux_Battery, + Fields.E_BusAux_PS_corr, Fields.E_BusAux_ES_mech_corr, + Fields.E_BusAux_HVAC_Mech, Fields.E_BusAux_HVAC_El, + Fields.E_BusAux_AuxHeater, + Fields.E_WHR_EL, Fields.E_WHR_MECH, Fields.E_ICE_START, Fields.E_AUX_ESS_missing, + Fields.NUM_ICE_STARTS, Fields.ACC, + Fields.ACC_POS, Fields.ACC_NEG, Fields.ACC_TIMESHARE, Fields.DEC_TIMESHARE, + Fields.CRUISE_TIMESHARE, + Fields.MAX_SPEED, Fields.MAX_ACCELERATION, Fields.MAX_DECELERATION, Fields.AVG_ENGINE_SPEED, + Fields.MAX_ENGINE_SPEED, Fields.NUM_GEARSHIFTS, Fields.STOP_TIMESHARE, + Fields.ICE_FULL_LOAD_TIME_SHARE, Fields.ICE_OFF_TIME_SHARE, + Fields.COASTING_TIME_SHARE, Fields.BRAKING_TIME_SHARE, Fields.AVERAGE_POS_ACC }.Select(x => new DataColumn(x, typeof(ConvertedSI))).ToArray()); Table.Columns.AddRange( new[] { - Tuple.Create(Fields.ENGINE_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AVERAGE_ENGINE_EFFICIENCY, typeof(double)), - Tuple.Create(Fields.TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(Fields.TORQUE_CONVERTER_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP, typeof(double)), - Tuple.Create(Fields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP, typeof(double)), - Tuple.Create(Fields.GEARBOX_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(Fields.GEARBOX_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AVERAGE_GEARBOX_EFFICIENCY, typeof(double)), - Tuple.Create(Fields.RETARDER_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(Fields.RETARDER_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.ANGLEDRIVE_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(Fields.ANGLEDRIVE_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)), - Tuple.Create(Fields.AXLEGEAR_CERTIFICATION_METHOD, typeof(string)), - Tuple.Create(Fields.AXLEGEAR_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)), - Tuple.Create(Fields.AIRDRAG_CERTIFICATION_NUMBER, typeof(string)), - Tuple.Create(Fields.AIRDRAG_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.ENGINE_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AVERAGE_ENGINE_EFFICIENCY, typeof(double)), + Tuple.Create(Fields.TORQUE_CONVERTER_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.TORQUE_CONVERTER_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITHOUT_LOCKUP, typeof(double)), + Tuple.Create(Fields.AVERAGE_TORQUE_CONVERTER_EFFICIENCY_WITH_LOCKUP, typeof(double)), + Tuple.Create(Fields.GEARBOX_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.GEARBOX_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AVERAGE_GEARBOX_EFFICIENCY, typeof(double)), + Tuple.Create(Fields.RETARDER_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.RETARDER_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.ANGLEDRIVE_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.ANGLEDRIVE_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AVERAGE_ANGLEDRIVE_EFFICIENCY, typeof(double)), + Tuple.Create(Fields.AXLEGEAR_CERTIFICATION_METHOD, typeof(string)), + Tuple.Create(Fields.AXLEGEAR_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AVERAGE_AXLEGEAR_EFFICIENCY, typeof(double)), + Tuple.Create(Fields.AIRDRAG_CERTIFICATION_NUMBER, typeof(string)), + Tuple.Create(Fields.AIRDRAG_CERTIFICATION_METHOD, typeof(string)), }.Select(x => new DataColumn(x.Item1, x.Item2)).ToArray()); } } @@ -227,9 +240,11 @@ namespace TUGraz.VectoCore.OutputData lock (Table) { var view = new DataView(Table, "", Fields.SORT, DataViewRowState.CurrentRows).ToTable(); - var probablyEmptyCols = new[] { Fields.E_WHEEL, Fields.SPECIFIC_FC }.Select(x => x.Contains("{") ? x.Substring(0, x.IndexOf("{", StringComparison.Ordinal)) : x).ToArray(); + var probablyEmptyCols = new[] { Fields.E_WHEEL, Fields.SPECIFIC_FC }.Select(x => + x.Contains("{") ? x.Substring(0, x.IndexOf("{", StringComparison.Ordinal)) : x).ToArray(); var removeCandidates = - view.Columns.Cast<DataColumn>().Where(column => probablyEmptyCols.Any(x => column.ColumnName.StartsWith(x))).ToList(); + view.Columns.Cast<DataColumn>() + .Where(column => probablyEmptyCols.Any(x => column.ColumnName.StartsWith(x))).ToList(); var toRemove = new List<string>(); foreach (var column in removeCandidates) { //var column = view.Columns[colName]; @@ -239,7 +254,9 @@ namespace TUGraz.VectoCore.OutputData } toRemove = toRemove.Concat( - view.Columns.Cast<DataColumn>().Where(column => column.ColumnName.StartsWith(Fields.INTERNAL_PREFIX)).Select(x => x.ColumnName)).ToList(); + view.Columns.Cast<DataColumn>() + .Where(column => column.ColumnName.StartsWith(Fields.INTERNAL_PREFIX)) + .Select(x => x.ColumnName)).ToList(); foreach (var dataColumn in toRemove) { view.Columns.Remove(dataColumn); @@ -254,11 +271,15 @@ namespace TUGraz.VectoCore.OutputData } } - private void UpdateTableColumns(ICollection<IFuelProperties> modDataFuelData, bool engineDataMultipleEngineFuelModes) + private void UpdateTableColumns(ICollection<IFuelProperties> modDataFuelData, + bool engineDataMultipleEngineFuelModes) { foreach (var entry in modDataFuelData) { foreach (var column in FcColumns.Reverse()) { - var colName = string.Format(column, modDataFuelData.Count <= 1 && !engineDataMultipleEngineFuelModes ? "" : "_" + entry.FuelType.GetLabel()); + var colName = string.Format(column, + modDataFuelData.Count <= 1 && !engineDataMultipleEngineFuelModes + ? "" + : "_" + entry.FuelType.GetLabel()); lock (Table) { if (!Table.Columns.Contains(colName)) { var col = new DataColumn(colName, typeof(ConvertedSI)); @@ -273,23 +294,59 @@ namespace TUGraz.VectoCore.OutputData /// <summary> /// Writes the result of one run into the summary data container. /// </summary> + //[MethodImpl(MethodImplOptions.Synchronized)] protected DataRow GetResultRow(IModalDataContainer modData, VectoRunData runData) { - if (modData.HasCombustionEngine) { - UpdateTableColumns(modData.FuelData, runData.EngineData.MultipleEngineFuelModes); + lock (_tableLock) { + if (modData.HasCombustionEngine) { + UpdateTableColumns(modData.FuelData, runData.EngineData.MultipleEngineFuelModes); + } } lock (Table) { var row = Table.NewRow(); + //Table.Rows.Add(row); return row; } } - //[MethodImpl(MethodImplOptions.Synchronized)] + protected Dictionary<string, object> GetResultDictionary(IModalDataContainer modData, VectoRunData runData) + { + if (modData.HasCombustionEngine) { + lock (_tableLock) { + UpdateTableColumns(modData.FuelData, runData.EngineData.MultipleEngineFuelModes); + } + } + + return new Dictionary<string, object>(); + } + + protected void AddResultRow(DataRow row) + { + lock (_tableLock) { + Table.Rows.Add(row); + } + } + + private void AddResultDictionary(Dictionary<string, object> row) + { + lock (_tableLock) { + var tableRow = Table.NewRow(); + foreach (var keyValuePair in row) { + tableRow[keyValuePair.Key] = keyValuePair.Value; + } + + Table.Rows.Add(tableRow); + } + } + + + //[MethodImpl(MethodImplOptions.Synchronized)] public virtual void Write(IModalDataContainer modData, int jobNr, int runNr, VectoRunData runData) { - var row = GetResultRow(modData, runData); + //var row = GetResultRow(modData, runData); // Replace row with dictionary + var row = GetResultDictionary(modData, runData); row[Fields.SORT] = jobNr * 1000 + runNr; row[Fields.JOB] = $"{jobNr}-{runNr}"; //ReplaceNotAllowedCharacters(current); row[Fields.INPUTFILE] = ReplaceNotAllowedCharacters(runData.JobName); @@ -331,11 +388,14 @@ namespace TUGraz.VectoCore.OutputData WriteFuelConsumptionEntries(modData, row, vehicleLoading, cargoVolume, passengerCount, runData); } else { if (runData.ElectricMachinesData.Count > 0) { - lock (Table) + lock (Table) { if (!Table.Columns.Contains(Fields.ElectricEnergyConsumptionPerKm)) { - var col = Table.Columns.Add(Fields.ElectricEnergyConsumptionPerKm, typeof(ConvertedSI)); - col.SetOrdinal(Table.Columns[Fields.CO2_KM].Ordinal); + lock (_tableLock) { + var col = Table.Columns.Add(Fields.ElectricEnergyConsumptionPerKm, typeof(ConvertedSI)); + col.SetOrdinal(Table.Columns[Fields.CO2_KM].Ordinal); + } } + } row[Fields.ElectricEnergyConsumptionPerKm] = (-modData.TimeIntegral<WattSecond>(ModalResultField.P_reess_int) / modData.Distance).Cast<JoulePerMeter>().ConvertToKiloWattHourPerKiloMeter(); @@ -373,15 +433,17 @@ namespace TUGraz.VectoCore.OutputData row[Fields.NUM_ICE_STARTS] = (ConvertedSI)modData.NumICEStarts().SI<Scalar>(); } - if (gearCount > 0) + if (gearCount > 0) { WriteGearshiftStats(modData, row, gearCount); - - lock (Table) - Table.Rows.Add(row); + } + + //AddResultRow(row); //Add dictionary to datatable + AddResultDictionary(row); } + private void WriteFuelConsumptionEntries( - IModalDataContainer modData, DataRow row, Kilogram vehicleLoading, + IModalDataContainer modData, Dictionary<string, object> row, Kilogram vehicleLoading, CubicMeter cargoVolume, double? passengers, VectoRunData runData) { var multipleEngineModes = runData.EngineData.MultipleEngineFuelModes; @@ -500,7 +562,7 @@ namespace TUGraz.VectoCore.OutputData return string.Format(col, suffix); } - private void WriteAuxiliaries(IModalDataContainer modData, DataRow row, bool writeBusAux) + private void WriteAuxiliaries(IModalDataContainer modData, Dictionary<string, object> row, bool writeBusAux) { foreach (var aux in modData.Auxiliaries) { string colName; @@ -512,11 +574,13 @@ namespace TUGraz.VectoCore.OutputData lock (Table) if (!Table.Columns.Contains(colName)) { + lock (_tableLock) { var col = Table.Columns.Add(colName, typeof(ConvertedSI)); // move the new column to correct position col.SetOrdinal(Table.Columns[Fields.E_AUX].Ordinal); } + } row[colName] = modData.AuxiliaryWork(aux.Value).ConvertToKiloWattHour(); } @@ -527,7 +591,7 @@ namespace TUGraz.VectoCore.OutputData } } - private void WriteGearshiftStats(IModalDataContainer modData, DataRow row, uint gearCount) + private void WriteGearshiftStats(IModalDataContainer modData, Dictionary<string, object> row, uint gearCount) { row[Fields.NUM_GEARSHIFTS] = (ConvertedSI)modData.GearshiftCount(); var timeSharePerGear = modData.TimeSharePerGear(gearCount); @@ -536,13 +600,15 @@ namespace TUGraz.VectoCore.OutputData var colName = string.Format(Fields.TIME_SHARE_PER_GEAR_FORMAT, i); lock (Table) if (!Table.Columns.Contains(colName)) { + lock (_tableLock) { Table.Columns.Add(colName, typeof(ConvertedSI)); } + } row[colName] = (ConvertedSI)timeSharePerGear[i]; } } - private void WritePerformanceEntries(VectoRunData runData, IModalDataContainer modData, DataRow row) + private void WritePerformanceEntries(VectoRunData runData, IModalDataContainer modData, Dictionary<string, object> row) { row[Fields.ACC] = (ConvertedSI)modData.AccelerationAverage(); row[Fields.ACC_POS] = (ConvertedSI)modData.AccelerationsPositive(); @@ -628,7 +694,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.AVERAGE_AXLEGEAR_EFFICIENCY] = eAxlIn.IsEqual(0, 1e-9) ? 0 : (eAxlOut / eAxlIn).Value(); } - private void WriteWorkEntries(IModalDataContainer modData, DataRow row, VectoRunData runData) + private void WriteWorkEntries(IModalDataContainer modData, Dictionary<string, object> row, VectoRunData runData) { row[Fields.E_FCMAP_POS] = modData.TotalEngineWorkPositive().ConvertToKiloWattHour(); row[Fields.E_FCMAP_NEG] = (-modData.TotalEngineWorkNegative()).ConvertToKiloWattHour(); @@ -695,11 +761,15 @@ namespace TUGraz.VectoCore.OutputData emColumns.Reverse(); foreach (var entry in emColumns) { var colName = string.Format(entry.Item1, em.Item1.GetName()); - lock (Table) + lock (Table) { if (!Table.Columns.Contains(colName)) { - var col = Table.Columns.Add(colName, typeof(ConvertedSI)); - col.SetOrdinal(Table.Columns[Fields.E_GRAD].Ordinal + 1); + lock (_tableLock) { + var col = Table.Columns.Add(colName, typeof(ConvertedSI)); + col.SetOrdinal(Table.Columns[Fields.E_GRAD].Ordinal + 1); + } } + } + row[colName] = entry.Item2; } } @@ -710,8 +780,11 @@ namespace TUGraz.VectoCore.OutputData if (Table.Columns.Contains(field)) { continue; } - var col = Table.Columns.Add(field, typeof(double)); - col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); + + lock (_tableLock) { + var col = Table.Columns.Add(field, typeof(double)); + col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); + } } } @@ -724,8 +797,10 @@ namespace TUGraz.VectoCore.OutputData continue; } - var col = Table.Columns.Add(field, typeof(ConvertedSI)); - col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); + lock (_tableLock) { + var col = Table.Columns.Add(field, typeof(ConvertedSI)); + col.SetOrdinal(Table.Columns[Fields.P_WHEEL].Ordinal); + } } } row[Fields.E_REESS_LOSS] = modData.REESSLoss().ConvertToKiloWattHour(); @@ -750,7 +825,7 @@ namespace TUGraz.VectoCore.OutputData } } - private void WriteFullPowertrain(VectoRunData runData, DataRow row) + private void WriteFullPowertrain(VectoRunData runData, Dictionary<string, object> row) { WriteVehicleData(runData, row); @@ -781,7 +856,7 @@ namespace TUGraz.VectoCore.OutputData } - private static void WriteVehicleData(VectoRunData runData, DataRow row) + private static void WriteVehicleData(VectoRunData runData, Dictionary<string, object> row) { var data = runData.VehicleData; //if (runData.VehicleData.b) @@ -823,7 +898,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.REESS_CAPACITY] = cap; } - private static void WriteAirdragData(AirdragData data, DataRow row) + private static void WriteAirdragData(AirdragData data, Dictionary<string, object> row) { row[Fields.AIRDRAG_MODEL] = data.ModelName; row[Fields.AIRDRAG_CERTIFICATION_METHOD] = data.CertificationMethod.GetName(); @@ -833,7 +908,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.CD_x_A] = (ConvertedSI)data.CrossWindCorrectionCurve.AirDragArea; } - private static void WriteEngineData(CombustionEngineData data, DataRow row) + private static void WriteEngineData(CombustionEngineData data, Dictionary<string, object> row) { if (data == null) { return; @@ -859,7 +934,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.ENGINE_ACTUAL_CORRECTION_FACTOR] = data.Fuels.Select(x => x.FuelConsumptionCorrectionFactor).Join(" / "); } - private static void WriteAxleWheelsData(List<Axle> data, DataRow row) + private static void WriteAxleWheelsData(List<Axle> data, Dictionary<string, object> row) { var fields = new[] { Tuple.Create(Fields.DECLARED_RRC_AXLE1, Fields.DECLARED_FZISO_AXLE1), @@ -881,7 +956,7 @@ namespace TUGraz.VectoCore.OutputData row[Fields.NUM_AXLES_TRAILER] = data.Count(x => x.AxleType == AxleType.Trailer); } - private static void WriteAxlegearData(AxleGearData data, DataRow row) + private static void WriteAxlegearData(AxleGearData data, Dictionary<string, object> row) { if (data == null) { return; @@ -895,7 +970,7 @@ namespace TUGraz.VectoCore.OutputData : data.CertificationNumber; } - private void WriteAuxTechnologies(VectoRunData runData, DataRow row) + private void WriteAuxTechnologies(VectoRunData runData, Dictionary<string, object> row) { var auxData = runData.Aux; var busAux = runData.BusAuxiliaries; @@ -908,11 +983,13 @@ namespace TUGraz.VectoCore.OutputData lock (Table) if (!Table.Columns.Contains(colName)) { + lock (_tableLock) { var col = Table.Columns.Add(colName, typeof(string)); // move the new column to correct position col.SetOrdinal(Table.Columns[Fields.CARGO_VOLUME].Ordinal); } + } row[colName] = aux.Technology == null ? "" : aux.Technology.Join("; "); } @@ -929,7 +1006,7 @@ namespace TUGraz.VectoCore.OutputData busAux.PneumaticUserInputsConfig.CompressorMap.Technology; } - private static void WriteAngledriveData(AngledriveData data, DataRow row) + private static void WriteAngledriveData(AngledriveData data, Dictionary<string, object> row) { if (data != null) { row[Fields.ANGLEDRIVE_MANUFACTURER] = data.Manufacturer; @@ -949,7 +1026,7 @@ namespace TUGraz.VectoCore.OutputData } } - private static void WriteRetarderData(RetarderData data, DataRow row) + private static void WriteRetarderData(RetarderData data, Dictionary<string, object> row) { row[Fields.RETARDER_TYPE] = (data?.Type ?? RetarderType.None).GetLabel(); if (data != null && data.Type.IsDedicatedComponent()) { @@ -967,7 +1044,7 @@ namespace TUGraz.VectoCore.OutputData } } - private static void WriteGearboxData(GearboxData data, DataRow row) + private static void WriteGearboxData(GearboxData data, Dictionary<string, object> row) { if (data == null) { return; diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriter.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..4dca9ebe06a2df6cf36382ed8e18dba2cbecd5f0 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriter.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter +{ + public abstract class ComponentWriter + { + protected readonly XNamespace _writerNamespace; + + public ComponentWriter(XNamespace writerNamespace) + { + _writerNamespace = writerNamespace; + } + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs new file mode 100644 index 0000000000000000000000000000000000000000..3f3db79d76b2e71da25560524c8385f86ad378ec --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/ComponentWriterNinjectModule.cs @@ -0,0 +1,33 @@ +using System.Xml.Linq; +using Ninject.Extensions.Factory; +using TUGraz.VectoCore.OutputData.XML.GroupWriter; +using TUGraz.VectoCore.Utils.Ninject; + +namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter +{ + public class ComponentWriterNinjectModule : AbstractNinjectModule{ + + private string GetName(string groupName, XNamespace xNamespace) + { + return UseFirstTwoArgumentsAsInstanceProvider.GetName(groupName, xNamespace.ToString()); + } + + #region Overrides of NinjectModule + + public override void Load() + { + Bind<IComponentWriterFactory>().ToFactory(() => new UseFirstTwoArgumentsAsInstanceProvider(1, false)); + + + //ADASTypes + var v2102 = XMLDeclarationNamespaces.v2_10_2; + Bind<IDeclarationAdasWriter>().To<AdasConventionalWriter>(). + Named(GetName(GroupNames.ADAS_Conventional_Type, v2102)); + + + + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs new file mode 100644 index 0000000000000000000000000000000000000000..2160ebc6ceb4d461ad8b1b5caa3552f95997706a --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/ADAS_Writer.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; + +namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter +{ + public interface IDeclarationAdasWriter + { + XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas); + + XElement GetComponent(IAdvancedDriverAssistantSystemDeclarationInputData adas); + } + + public class AdasConventionalWriter : ComponentWriter, IDeclarationAdasWriter + { + public AdasConventionalWriter(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IADASWriter + + public XElement[] GetComponentElements(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + var elements = new List<XElement>(); + + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_EngineStopStart, adas.EngineStopStart)); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adas.EcoRollWithOutEngineStop())); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adas.EcoRollWithEngineStop())); + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_PCC,adas.PredictiveCruiseControl.ToXMLFormat())); + if (adas.ATEcoRollReleaseLockupClutch != null) { + elements.Add(new XElement(_writerNamespace + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, adas.ATEcoRollReleaseLockupClutch)); + } + + return elements.ToArray(); + } + + public XElement GetComponent(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + return new XElement(_writerNamespace + XMLNames.Vehicle_ADAS, + new XAttribute(XMLDeclarationNamespaces.Xsi + XMLNames.Attr_Type, "ADAS_Conventional_Type"), + GetComponentElements(adas)); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/Components_Conventional.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/Components_Conventional.cs new file mode 100644 index 0000000000000000000000000000000000000000..3623e10c6d2e8de5b5f777f8c56d376224f76948 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/Declaration/Components_Conventional.cs @@ -0,0 +1,36 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter.Declaration +{ + public interface IComponentWriter + { + XElement[] GetComponentElements(IVehicleComponentsDeclaration components); + + XElement GetComponentsElement(IVehicleComponentsDeclaration components); + } + + class Components_Conventional_CompletedBus : ComponentWriter, IComponentWriter + { + public Components_Conventional_CompletedBus(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IComponentWriter + + public XElement[] GetComponentElements(IVehicleComponentsDeclaration components) + { + throw new NotImplementedException(); + } + + public XElement GetComponentsElement(IVehicleComponentsDeclaration components) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/ComponentWriter/IComponentWriterFactory.cs b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/IComponentWriterFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..e31906cf6e1833b41f344d9ddb657320b868e34e --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/ComponentWriter/IComponentWriterFactory.cs @@ -0,0 +1,9 @@ +using System.Xml.Linq; + +namespace TUGraz.VectoCore.OutputData.XML.ComponentWriter +{ + public interface IComponentWriterFactory + { + IDeclarationAdasWriter getDeclarationAdasWriter(string componentName, XNamespace writerNamespace); + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs index 13d7ef317cbce2574043c6b702ba4624fcd41a4d..4c65a69830f2860cc6c764b01ceeb38f1c2277b7 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportCompletedBus.cs @@ -68,7 +68,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation tns + "RegisteredPassengers", modelData.VehicleData.InputData.NumberPassengerSeatsLowerDeck + modelData.VehicleData.InputData.NumberPassengerSeatsUpperDeck ), new XElement(tns + XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry), - new XElement(tns + XMLNames.Bus_HeighIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)), + new XElement(tns + XMLNames.Bus_HeightIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)), new XElement(tns + XMLNames.Bus_VehicleLength, modelData.VehicleData.InputData.Length.ToXMLFormat(3)), new XElement(tns + XMLNames.Bus_VehicleWidth, modelData.VehicleData.InputData.Width.ToXMLFormat(3)), GetADAS(modelData.VehicleData.ADAS), diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs index b9311f3be29972aed8e2f5c2de575c50a1b7178a..0fdb84069614a29c9a09359acde0ea9d379381b4 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/CustomerInformationFile/XMLCustomerReportExemptedCompletedBus.cs @@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.CustomerInformation modelData.VehicleData.InputData.NumberPassengerSeatsUpperDeck ), new XElement(tns + XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry), - new XElement(tns + XMLNames.Bus_HeighIntegratedBody, + new XElement(tns + XMLNames.Bus_HeightIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)) ); VehiclePart.Add( diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs index 4d5f123ef363ab9f8c7ee63f73d7619f18f4b060..a2882b7a4367511435d51782312effc9de893846 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/AbstractXMLManufacturerReport.cs @@ -259,8 +259,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport protected virtual XElement CreateADAS(VehicleData.ADASData adasData) { - var ns = XMLADASReaderV23.NAMESPACE_URI; - var type = XMLADASReaderV23.XSD_TYPE; + var ns = XMLADASReaderV21.NAMESPACE_URI; + var type = XMLADASReaderV21.XSD_TYPE; const string adasPrefix = "adas"; return new XElement( @@ -270,8 +270,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport new XElement(ns + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart), new XElement(ns + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()), new XElement(ns + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()), - new XElement(ns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl.ToXMLFormat()), - new XElement(ns + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, adasData.InputData.ATEcoRollReleaseLockupClutch ?? false) + new XElement(ns + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl.ToXMLFormat()) + //new XElement(ns + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, adasData.InputData.ATEcoRollReleaseLockupClutch ?? false) ); } diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs index fa5e1da48332c2b45a6b24cc0bf433e84d7be142..dc29a872ee98c7cf7dc702ad78b372ab9445617c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportCompletedBus.cs @@ -56,7 +56,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport new XElement(tns + XMLNames.Bus_UpperDeck, modelData.VehicleData.InputData.NumberPassengerSeatsUpperDeck) ), new XElement(tns +XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry), - new XElement(tns + XMLNames.Bus_HeighIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)), + new XElement(tns + XMLNames.Bus_HeightIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)), new XElement(tns + XMLNames.Bus_VehicleLength, modelData.VehicleData.InputData.Length.ToXMLFormat(3)), new XElement(tns + XMLNames.Bus_VehicleWidth, modelData.VehicleData.InputData.Width.ToXMLFormat(3)), new XElement(tns + XMLNames.BusAux_PneumaticSystem_DoorDriveTechnology, modelData.VehicleData.InputData.DoorDriveTechnology.ToXMLFormat()), diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs index 095ab3214d5d9d00d21a5e36d9266e3cb40b9a05..39bc841a7a608484aae7fe04edda00dbf181e484 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExemptedCompletedBus.cs @@ -23,14 +23,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport new XElement(tns + XMLNames.Component_ManufacturerAddress, modelData.VehicleData.ManufacturerAddress), new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), - new XElement(tns + XMLNames.Bus_LegislativeCategory, + new XElement(tns + XMLNames.Vehicle_LegislativeCategory, modelData.VehicleData.LegislativeClass.ToXMLFormat()), new XElement(tns + XMLNames.Report_Vehicle_VehicleGroup, modelData.VehicleData.VehicleClass.GetClassNumber()), new XElement(tns + XMLNames.Vehicle_RegisteredClass, modelData.VehicleData.RegisteredClass.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_BodyworkCode, modelData.VehicleData.VehicleCode.ToXMLFormat()), - new XElement(tns + XMLNames.Bus_CorrectedActualMass, + new XElement(tns + XMLNames.CorrectedActualMass, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)), new XElement(tns + XMLNames.TPMLM, XMLHelper.ValueAsUnit(modelData.VehicleData.GrossVehicleMass, XMLNames.Unit_t, 2)), @@ -42,7 +42,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle), new XElement(tns + XMLNames.Bus_LowEntry, modelData.VehicleData.InputData.LowEntry), - new XElement(tns + XMLNames.Bus_HeighIntegratedBody, + new XElement(tns + XMLNames.Bus_HeightIntegratedBody, modelData.VehicleData.InputData.Height.ToXMLFormat(3)), GetInputDataSignature(modelData) diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs index 018177047aeccd2ac9b40f807feda5a93b50b5af..0ffdd2282aede0b4e3f0109b14ec06fdfcf49c0e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/ManufacturerReport/XMLManufacturerReportExeptedPrimaryBus.cs @@ -25,7 +25,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.ManufacturerReport new XElement(vns + XMLNames.Component_Model, modelData.VehicleData.ModelName), new XElement(vns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), new XElement(vns + "LegislativeCategory", modelData.VehicleData.LegislativeClass.ToXMLFormat()), - new XElement(vns + XMLNames.Bus_ChassisConfiguration, "Bus"), + new XElement(vns + XMLNames.ChassisConfiguration, "Bus"), new XElement(vns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()), new XElement(vns + XMLNames.Vehicle_Articulated, modelData.VehicleData.InputData.Articulated), new XElement( diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs index c7a715a19ee98fc1d92efa3778b3bf2d734ee2a4..5529ff1f3722a86225c7160cf69337ba8e29935c 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLExemptedPrimaryBusVehicleReport.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.Hashing; @@ -17,14 +18,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF public override void Initialize(VectoRunData modelData, List<List<FuelData.Entry>> fuelModes) { VehiclePart.Add( - new XAttribute(xsi + "type", "VehicleExemptedPrimaryBusType"), + new XAttribute(xsi + XMLNames.Attr_Type, "VehicleExemptedPrimaryBusType"), new XElement(tns + XMLNames.ManufacturerPrimaryVehicle, modelData.VehicleData.Manufacturer), new XElement(tns + XMLNames.ManufacturerAddressPrimaryVehicle, modelData.VehicleData.ManufacturerAddress), new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName), new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(modelData.VehicleData.Date, XmlDateTimeSerializationMode.Utc)), - new XElement(tns + "LegislativeCategory", modelData.VehicleData.LegislativeClass.ToXMLFormat()), - new XElement(tns + XMLNames.Bus_ChassisConfiguration, "Bus"), + new XElement(tns + XMLNames.Vehicle_LegislativeCategory, modelData.VehicleData.LegislativeClass.ToXMLFormat()), + new XElement(tns + XMLNames.ChassisConfiguration, "Bus"), new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()), new XElement(tns + XMLNames.Vehicle_Articulated, modelData.VehicleData.InputData.Articulated), new XElement( @@ -33,8 +34,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF //new XElement( // tns + XMLNames.Vehicle_CurbMassChassis, XMLHelper.ValueAsUnit(modelData.VehicleData.CurbMass, XMLNames.Unit_kg)), new XElement(tns + XMLNames.Vehicle_ZeroEmissionVehicle, modelData.VehicleData.ZeroEmissionVehicle), - new XElement(tns + "SumNetPower", XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)), - new XElement(tns + "Technology", modelData.VehicleData.InputData.ExemptedTechnology) + new XElement(tns + XMLNames.Exempted_SumNetPower, XMLHelper.ValueAsUnit(modelData.VehicleData.MaxNetPower1, XMLNames.Unit_W)), + new XElement(tns + XMLNames.Exempted_Technology, modelData.VehicleData.InputData.ExemptedTechnology) ); Results.Add(new XElement(tns + XMLNames.Report_ExemptedVehicle)); diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs index 7548a6139dcc0cc77a77d8fcbf1086445d93df0b..7349f080ee0d2081f5341792e2f889c2f68536a2 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLMultistageBusReport.cs @@ -26,37 +26,40 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected override XElement GetVehicleElement(string vehicleId) { return new XElement(tns + XMLNames.Tag_Vehicle, - new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:ExemptedInterimStageInputType"), + new XAttribute("xmlns", v24), + new XAttribute(xsi + XMLNames.Attr_Type, "Vehicle_Exempted_CompletedBusDeclarationType"), new XAttribute(XMLNames.Component_ID_Attr, vehicleId), - new XElement(v28 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), - new XElement(v28 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), - new XElement(v28 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN), - new XElement(v28 + XMLNames.Component_Date, + new XElement(v24 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), + new XElement(v24 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), + new XElement(v24 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN), + new XElement(v24 + XMLNames.Component_Date, XmlConvert.ToString(_vehicleInputData.Date, XmlDateTimeSerializationMode.Utc)), _vehicleInputData.Model != null - ? new XElement(v28 + XMLNames.Component_Model, _vehicleInputData.Model) : null, + ? new XElement(v24 + XMLNames.Component_Model, _vehicleInputData.Model) : null, _vehicleInputData.LegislativeClass != null - ? new XElement(v28 + XMLNames.Bus_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null, _vehicleInputData.CurbMassChassis != null - ? new XElement(v28 + XMLNames.Bus_CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null, _vehicleInputData.GrossVehicleMassRating != null - ? new XElement(v28 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null, + _vehicleInputData.AirdragModifiedMultistep != null ? + new XElement(v24 + XMLNames.Bus_AirdragModifiedMultistep, _vehicleInputData.AirdragModifiedMultistep) : null, _vehicleInputData.RegisteredClass != null - ? new XElement(v28 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null, _vehicleInputData.NumberPassengerSeatsLowerDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null, _vehicleInputData.NumberPassengersStandingLowerDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null, _vehicleInputData.NumberPassengerSeatsUpperDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null, _vehicleInputData.NumberPassengersStandingUpperDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null, _vehicleInputData.VehicleCode != null - ? new XElement(v28 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null, _vehicleInputData.LowEntry != null - ? new XElement(v28 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null, + ? new XElement(v24 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null, _vehicleInputData.Height != null - ? new XElement(v28 + XMLNames.Bus_HeighIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null + ? new XElement(v24 + XMLNames.Bus_HeightIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null ); } } @@ -68,8 +71,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected XNamespace xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); protected XNamespace v20 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"; - protected XNamespace v23 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"; - protected XNamespace v28 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"; + protected XNamespace v23 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"; + protected XNamespace v24 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"; protected XNamespace v10 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"; private XElement _primaryVehicle; @@ -113,7 +116,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { if(xElement.Name.LocalName == XMLNames.Bus_PrimaryVehicle) _primaryVehicle = xElement; - else if (xElement.Name.LocalName == XMLNames.ManufacturingStage) + else if (xElement.Name.LocalName == XMLNames.ManufacturingStep) _manufacturingStages.Add(xElement); } @@ -148,7 +151,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF return; XmlAttributeCollection namespaceAttributes = null; foreach (var node in nodes) { - if (node.LocalName == XMLNames.VectoOutputMultistage) { + if (node.LocalName == XMLNames.VectoOutputMultistep) { namespaceAttributes = node.Attributes; break; } @@ -184,7 +187,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var retVal = new XDocument(); retVal.Add( - new XElement(tns + XMLNames.VectoOutputMultistage, + new XElement(tns + XMLNames.VectoOutputMultistep, _namespaceAttributes, _primaryVehicle, _manufacturingStages, @@ -199,28 +202,29 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetSignatureElement(XElement stage) { var stream = new MemoryStream(); - var writer = new StreamWriter(stream); - writer.Write(stage); - writer.Flush(); + var w = new XmlTextWriter(stream, Encoding.UTF8); + stage.WriteTo(w); + w.Flush(); stream.Seek(0, SeekOrigin.Begin); - return new XElement(tns + XMLNames.DI_Signature, - VectoHash.Load(stream).ComputeXmlHash - (VectoHash.DefaultCanonicalizationMethod, VectoHash.DefaultDigestMethod)); + return new XElement(tns + XMLNames.DI_Signature , + VectoHash.Load(stream).ComputeXmlHash + (VectoHash.DefaultCanonicalizationMethod, VectoHash.DefaultDigestMethod) + ); } private XElement GenerateInputManufacturingStage() { - var multistageId = $"{VectoComponents.VectoManufacturingStage.HashIdPrefix()}{GetGUID()}"; + var multistageId = $"{VectoComponents.VectoManufacturingStep.HashIdPrefix()}{GetGUID()}"; var vehicleId = $"{VectoComponents.Vehicle.HashIdPrefix()}{GetGUID()}"; - var stage = new XElement(tns + XMLNames.ManufacturingStage, - new XAttribute("stageCount", GetStageNumber()), + var stage = new XElement(tns + XMLNames.ManufacturingStep, + new XAttribute(XMLNames.ManufacturingStep_StepCount, GetStageNumber()), new XElement(tns + XMLNames.Report_DataWrap, - new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStageDataType"), + new XAttribute(xsi + XMLNames.Attr_Type, "BusManufacturingStepDataType"), new XAttribute(XMLNames.Component_ID_Attr, multistageId), - GetHashPreviousStageElement(), + GetHashPreviousStepElement(), GetVehicleElement(vehicleId), GetApplicationInformation())); @@ -234,10 +238,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (_manufacturingStageInputData == null || _manufacturingStageInputData.Count == 0) return 2; - return _manufacturingStageInputData.Last().StageCount + 1; + return _manufacturingStageInputData.Last().StepCount + 1; } - private XElement GetHashPreviousStageElement() + private XElement GetHashPreviousStepElement() { DigestData digitData; if (_manufacturingStageInputData == null || _manufacturingStageInputData.Count == 0) { @@ -246,7 +250,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF digitData = _manufacturingStageInputData.Last().Signature; } - return new XElement(tns + "HashPreviousStage", + return new XElement(tns + "HashPreviousStep", digitData.ToXML(di)); } @@ -254,49 +258,50 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected virtual XElement GetVehicleElement(string vehicleId) { return new XElement(tns + XMLNames.Tag_Vehicle, - new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:InterimStageInputType"), + new XAttribute("xmlns", v24), + new XAttribute(xsi + XMLNames.Attr_Type, "Vehicle_Conventional_CompletedBusDeclarationType"), new XAttribute(XMLNames.Component_ID_Attr, vehicleId), - new XElement(v28 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), - new XElement(v28 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), - new XElement(v28 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN), - new XElement(v28 + XMLNames.Component_Date, + new XElement(v24 + XMLNames.Component_Manufacturer, _vehicleInputData.Manufacturer), + new XElement(v24 + XMLNames.Component_ManufacturerAddress, _vehicleInputData.ManufacturerAddress), + new XElement(v24 + XMLNames.Vehicle_VIN, _vehicleInputData.VIN), + new XElement(v24 + XMLNames.Component_Date, XmlConvert.ToString(_vehicleInputData.Date, XmlDateTimeSerializationMode.Utc)), _vehicleInputData.Model != null - ? new XElement(v28 + XMLNames.Component_Model, _vehicleInputData.Model) : null, + ? new XElement(v24 + XMLNames.Component_Model, _vehicleInputData.Model) : null, _vehicleInputData.LegislativeClass != null - ? new XElement(v28 + XMLNames.Bus_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_LegislativeCategory, _vehicleInputData.LegislativeClass.ToXMLFormat()) : null, _vehicleInputData.CurbMassChassis != null - ? new XElement(v28 + XMLNames.Bus_CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.CorrectedActualMass, _vehicleInputData.CurbMassChassis.ToXMLFormat(0)) : null, _vehicleInputData.GrossVehicleMassRating != null - ? new XElement(v28 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.TPMLM, _vehicleInputData.GrossVehicleMassRating.ToXMLFormat(0)) : null, GetAirdragModifiedMultistageEntry(), - _vehicleInputData.TankSystem != null - ? new XElement(v28 + XMLNames.Vehicle_NgTankSystem, _vehicleInputData.TankSystem.ToString()) : null, _vehicleInputData.RegisteredClass != null - ? new XElement(v28 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_RegisteredClass, _vehicleInputData.RegisteredClass.ToXMLFormat()) : null, + _vehicleInputData.TankSystem != null + ? new XElement(v24 + XMLNames.Vehicle_NgTankSystem, _vehicleInputData.TankSystem.ToString()) : null, _vehicleInputData.NumberPassengerSeatsLowerDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengerSeatsLowerDeck, _vehicleInputData.NumberPassengerSeatsLowerDeck) : null, _vehicleInputData.NumberPassengersStandingLowerDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengersStandingLowerDeck, _vehicleInputData.NumberPassengersStandingLowerDeck) : null, _vehicleInputData.NumberPassengerSeatsUpperDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengerSeatsUpperDeck, _vehicleInputData.NumberPassengerSeatsUpperDeck) : null, _vehicleInputData.NumberPassengersStandingUpperDeck != null - ? new XElement(v28 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null, + ? new XElement(v24 + XMLNames.Bus_NumberPassengersStandingUpperDeck, _vehicleInputData.NumberPassengersStandingUpperDeck) : null, _vehicleInputData.VehicleCode != null - ? new XElement(v28 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null, + ? new XElement(v24 + XMLNames.Vehicle_BodyworkCode, _vehicleInputData.VehicleCode.ToXMLFormat()) : null, _vehicleInputData.LowEntry != null - ? new XElement(v28 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null, + ? new XElement(v24 + XMLNames.Bus_LowEntry, _vehicleInputData.LowEntry) : null, _vehicleInputData.Height != null - ? new XElement(v28 + XMLNames.Bus_HeighIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.Bus_HeightIntegratedBody, _vehicleInputData.Height.ConvertToMilliMeter().ToXMLFormat(0)) : null, _vehicleInputData.Length != null - ? new XElement(v28 + XMLNames.Bus_VehicleLength, _vehicleInputData.Length.ConvertToMilliMeter().ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.Bus_VehicleLength, _vehicleInputData.Length.ConvertToMilliMeter().ToXMLFormat(0)) : null, _vehicleInputData.Width != null - ? new XElement(v28 + XMLNames.Bus_VehicleWidth, _vehicleInputData.Width.ConvertToMilliMeter().ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.Bus_VehicleWidth, _vehicleInputData.Width.ConvertToMilliMeter().ToXMLFormat(0)) : null, _vehicleInputData.EntranceHeight != null - ? new XElement(v28 + XMLNames.Bus_EntranceHeight, _vehicleInputData.EntranceHeight.ConvertToMilliMeter().ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.Bus_EntranceHeight, _vehicleInputData.EntranceHeight.ConvertToMilliMeter().ToXMLFormat(0)) : null, _vehicleInputData.DoorDriveTechnology != null - ? new XElement(v28 + XMLNames.Bus_DoorDriveTechnology, _vehicleInputData.DoorDriveTechnology.ToXMLFormat()) : null, - new XElement(v28 + XMLNames.Bus_VehicleDeclarationType, _vehicleInputData.VehicleDeclarationType.GetLabel()), + ? new XElement(v24 + XMLNames.Bus_DoorDriveTechnology, _vehicleInputData.DoorDriveTechnology.ToXMLFormat()) : null, + new XElement(v24 + XMLNames.Bus_VehicleDeclarationType, _vehicleInputData.VehicleDeclarationType.GetLabel()), GetADAS(_vehicleInputData.ADAS), GetBusVehicleComponents(_vehicleInputData.Components) ); @@ -307,11 +312,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (_consolidatedInputData?.Vehicle?.Components?.AirdragInputData == null) return null; - switch (_vehicleInputData.AirdragModifiedMultistage) { + switch (_vehicleInputData.AirdragModifiedMultistep) { case null: throw new VectoException("AirdragModifiedMultistage must be set if an airdrag component has been set in previous stages."); default: - return new XElement(v28 + XMLNames.Bus_AirdragModifiedMultistage, _vehicleInputData.AirdragModifiedMultistage); + return new XElement(v24 + XMLNames.Bus_AirdragModifiedMultistep, _vehicleInputData.AirdragModifiedMultistep); } } @@ -321,13 +326,14 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF return null; return new XElement( - v28 + XMLNames.Vehicle_ADAS, - new XElement(v23 + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart), - new XElement(v23 + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()), - new XElement(v23 + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()), - new XElement(v23 + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl.ToXMLFormat()), + v24 + XMLNames.Vehicle_ADAS, + new XAttribute(xsi + "type", "ADAS_Conventional_Type"), + new XElement(v24 + XMLNames.Vehicle_ADAS_EngineStopStart, adasData.EngineStopStart), + new XElement(v24 + XMLNames.Vehicle_ADAS_EcoRollWithoutEngineStop, adasData.EcoRoll.WithoutEngineStop()), + new XElement(v24 + XMLNames.Vehicle_ADAS_EcoRollWithEngineStopStart, adasData.EcoRoll.WithEngineStop()), + new XElement(v24 + XMLNames.Vehicle_ADAS_PCC, adasData.PredictiveCruiseControl.ToXMLFormat()), adasData.ATEcoRollReleaseLockupClutch != null - ? new XElement(v23 + XMLNames.Bus_ADAS_APTEcoRollReleaseLockupClutch, adasData.ATEcoRollReleaseLockupClutch) + ? new XElement(v24 + XMLNames.Vehicle_ADAS_ATEcoRollReleaseLockupClutch, adasData.ATEcoRollReleaseLockupClutch) : null ); } @@ -340,9 +346,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (busAirdrag == null && busAux == null) return null; - return new XElement(v28 + XMLNames.Vehicle_Components, - new XAttribute(XNamespace.Xmlns + "v2.8", v28), - new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:CompletedVehicleComponentsDeclarationType"), + return new XElement(v24 + XMLNames.Vehicle_Components, + new XAttribute(xsi + XMLNames.Attr_Type, "Components_Conventional_CompletedBusType"), busAirdrag, busAux ); @@ -350,10 +355,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetBusAirdrag(IAirdragDeclarationInputData airdrag) { - if (airdrag != null && _vehicleInputData.AirdragModifiedMultistage != false) + if (airdrag != null && _vehicleInputData.AirdragModifiedMultistep != false) return GetAirdragElement(airdrag); - return _vehicleInputData.AirdragModifiedMultistage == true + return _vehicleInputData.AirdragModifiedMultistep == true ? GetBusAirdragUseStandardValues() : null; } @@ -391,7 +396,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetAirdragXMLElementV1(XmlNode dataNode, XmlNode signatureNode) { - return new XElement(v28 + XMLNames.Component_AirDrag, + return new XElement(v24 + XMLNames.Component_AirDrag, new XElement(v20 + XMLNames.Report_DataWrap, new XAttribute(xsi + XMLNames.Component_Type_Attr, XMLNames.AirDrag_Data_Type_Attr), //new XAttribute("xmlns", v10.NamespaceName), @@ -412,7 +417,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF var signatureElement = XElement.Parse(signatureNode.OuterXml); dataElement.Attribute(XNamespace.Xmlns + "xsi")?.Remove(); - return new XElement(v28 + XMLNames.Component_AirDrag, + return new XElement(v24 + XMLNames.Component_AirDrag, dataElement, signatureElement); } @@ -434,10 +439,9 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var id = $"{VectoComponents.Airdrag.HashIdPrefix()}{GetGUID()}"; - return new XElement(v28 + XMLNames.Component_AirDrag, + return new XElement(v24 + XMLNames.Component_AirDrag, new XElement(v20 + XMLNames.ComponentDataWrapper, - new XAttribute(XNamespace.Xmlns + "v2.0", v20), - new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:AirDragModifiedUseStandardValueType"), + new XAttribute(xsi + XMLNames.Attr_Type, "AirDragModifiedUseStandardValueType"), new XAttribute(XMLNames.Component_ID_Attr, id) ), new XElement(v20 + XMLNames.DI_Signature, XMLHelper.CreateDummySig(di))); @@ -455,11 +459,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF if (electricSystemEntry == null && hvacEntry == null) return null; - return new XElement(v28 + XMLNames.Component_Auxiliaries, - - new XElement(v28 + XMLNames.ComponentDataWrapper, - new XAttribute(xsi + XMLNames.Attr_Type, "v2.8:CompletedVehicleAuxiliaryDataDeclarationType"), - electricSystemEntry != null + return new XElement(v24 + XMLNames.Component_Auxiliaries, + new XElement(v24 + XMLNames.ComponentDataWrapper, + new XAttribute(xsi + XMLNames.Attr_Type, "AUX_Conventional_CompletedBusType"), + electricSystemEntry != null ? GetElectricSystem(busAux.ElectricConsumers) : null, hvacEntry != null ? GetHVAC(busAux.HVACAux) : null @@ -477,18 +480,18 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF electricConsumer.HeadlightsLED == null) return null; - return new XElement(v28 + XMLNames.BusAux_ElectricSystem, - new XElement(v28 + XMLNames.BusAux_LEDLights, + return new XElement(v24 + XMLNames.BusAux_ElectricSystem, + new XElement(v24 + XMLNames.BusAux_LEDLights, electricConsumer.InteriorLightsLED != null - ? new XElement(v28 + XMLNames.Bus_Interiorlights, electricConsumer.InteriorLightsLED) : null, + ? new XElement(v24 + XMLNames.Bus_Interiorlights, electricConsumer.InteriorLightsLED) : null, electricConsumer.DayrunninglightsLED != null - ? new XElement(v28 + XMLNames.Bus_Dayrunninglights, electricConsumer.DayrunninglightsLED) : null, + ? new XElement(v24 + XMLNames.Bus_Dayrunninglights, electricConsumer.DayrunninglightsLED) : null, electricConsumer.PositionlightsLED != null - ? new XElement(v28 + XMLNames.Bus_Positionlights, electricConsumer.PositionlightsLED) : null, + ? new XElement(v24 + XMLNames.Bus_Positionlights, electricConsumer.PositionlightsLED) : null, electricConsumer.BrakelightsLED != null - ? new XElement(v28 + XMLNames.Bus_Brakelights, electricConsumer.BrakelightsLED) : null, + ? new XElement(v24 + XMLNames.Bus_Brakelights, electricConsumer.BrakelightsLED) : null, electricConsumer.HeadlightsLED != null - ? new XElement(v28 + XMLNames.Bus_Headlights, electricConsumer.HeadlightsLED) : null + ? new XElement(v24 + XMLNames.Bus_Headlights, electricConsumer.HeadlightsLED) : null )); } @@ -498,52 +501,41 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF return null; if (hvac.SystemConfiguration == null && - hvac.HeatPumpModeDriverCompartment == null && hvac.HeatPumpTypeDriverCompartment == null && - hvac.HeatPumpPassengerCompartments?.Any() != true && hvac.AuxHeaterPower == null && hvac.DoubleGlazing == null && + hvac.HeatPumpTypeCoolingDriverCompartment == null && hvac.HeatPumpTypeHeatingDriverCompartment == null && + hvac.HeatPumpTypeCoolingPassengerCompartment == null && hvac.HeatPumpTypeHeatingPassengerCompartment == null && + hvac.AuxHeaterPower == null && hvac.DoubleGlazing == null && hvac.AdjustableAuxiliaryHeater == null && hvac.SeparateAirDistributionDucts == null && hvac.WaterElectricHeater == null && hvac.AirElectricHeater == null && hvac.OtherHeatingTechnology == null) return null; - return new XElement(v28 + XMLNames.BusAux_HVAC, + return new XElement(v24 + XMLNames.BusAux_HVAC, hvac.SystemConfiguration != null - ? new XElement(v28 + XMLNames.Bus_SystemConfiguration, hvac.SystemConfiguration.GetXmlFormat()) : null, - hvac.HeatPumpTypeDriverCompartment != null - ? new XElement(v28 + XMLNames.Bus_HeatPumpTypeDriver, hvac.HeatPumpTypeDriverCompartment.GetLabel()) : null, - hvac.HeatPumpModeDriverCompartment != null - ? new XElement(v28 + XMLNames.Bus_HeatPumpModeDriver, hvac.HeatPumpModeDriverCompartment.GetLabel()) : null, - GetHeatPumpPassengerCompartments(hvac.HeatPumpPassengerCompartments), + ? new XElement(v24 + XMLNames.Bus_SystemConfiguration, hvac.SystemConfiguration.GetXmlFormat()) : null, + hvac.HeatPumpTypeCoolingDriverCompartment != null && hvac.HeatPumpTypeHeatingDriverCompartment != null + ? new XElement(v24 + XMLNames.Bus_HeatPumpTypeDriver, + new XElement(v24 + XMLNames.BusHVACHeatPumpCooling, hvac.HeatPumpTypeCoolingDriverCompartment.GetLabel()), + new XElement(v24 + XMLNames.BusHVACHeatPumpHeating, hvac.HeatPumpTypeHeatingDriverCompartment.GetLabel())) : null, + hvac.HeatPumpTypeCoolingPassengerCompartment != null && hvac.HeatPumpTypeHeatingPassengerCompartment != null + ? new XElement(v24 + XMLNames.Bus_HeatPumpTypePassenger, + new XElement(v24 + XMLNames.BusHVACHeatPumpCooling, hvac.HeatPumpTypeCoolingPassengerCompartment.GetLabel()), + new XElement(v24 + XMLNames.BusHVACHeatPumpHeating, hvac.HeatPumpTypeHeatingPassengerCompartment.GetLabel())) : null, hvac.AuxHeaterPower != null - ? new XElement(v28 + XMLNames.Bus_AuxiliaryHeaterPower, hvac.AuxHeaterPower.ToXMLFormat(0)) : null, + ? new XElement(v24 + XMLNames.Bus_AuxiliaryHeaterPower, hvac.AuxHeaterPower.ToXMLFormat(0)) : null, hvac.DoubleGlazing != null - ? new XElement(v28 + XMLNames.Bus_DoubleGlazing, hvac.DoubleGlazing) : null, + ? new XElement(v24 + XMLNames.Bus_DoubleGlazing, hvac.DoubleGlazing) : null, hvac.AdjustableAuxiliaryHeater != null - ? new XElement(v28 + XMLNames.Bus_AdjustableAuxiliaryHeater, hvac.AdjustableAuxiliaryHeater) : null, + ? new XElement(v24 + XMLNames.Bus_AdjustableAuxiliaryHeater, hvac.AdjustableAuxiliaryHeater) : null, hvac.SeparateAirDistributionDucts != null - ? new XElement(v28 + XMLNames.Bus_SeparateAirDistributionDucts, hvac.SeparateAirDistributionDucts) : null, + ? new XElement(v24 + XMLNames.Bus_SeparateAirDistributionDucts, hvac.SeparateAirDistributionDucts) : null, hvac.WaterElectricHeater != null - ? new XElement(v28 + XMLNames.Bus_WaterElectricHeater, hvac.WaterElectricHeater) : null, + ? new XElement(v24 + XMLNames.Bus_WaterElectricHeater, hvac.WaterElectricHeater) : null, hvac.AirElectricHeater != null - ? new XElement(v28 + XMLNames.Bus_AirElectricHeater, hvac.AirElectricHeater) : null, + ? new XElement(v24 + XMLNames.Bus_AirElectricHeater, hvac.AirElectricHeater) : null, hvac.OtherHeatingTechnology != null - ? new XElement(v28 + XMLNames.Bus_OtherHeatingTechnology, hvac.OtherHeatingTechnology) : null + ? new XElement(v24 + XMLNames.Bus_OtherHeatingTechnology, hvac.OtherHeatingTechnology) : null ); } - private IList<XElement> GetHeatPumpPassengerCompartments(IList<Tuple<HeatPumpType,HeatPumpMode>> heatPumps) - { - if (heatPumps?.Any() != true) - return null; - - var result = new List<XElement>(); - - for (int i = 0; i < heatPumps.Count; i++) { - result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpTypePassenger, heatPumps[i].Item1.GetLabel())); - result.Add(new XElement(v28 + XMLNames.Bus_HeatPumpModePassenger, heatPumps[i].Item2.GetLabel())); - } - - return result; - } - private XElement GetApplicationInformation() { diff --git a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs index a016a410dd9f68f0e61797cbf0daa8b3b1bb4d17..29d5de3a55aaf693d5b5aa82b493b63d248da16e 100644 --- a/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs +++ b/VectoCore/VectoCore/OutputData/XML/DeclarationReports/VehicleInformationFile/XMLPrimaryBusVehicleReport.cs @@ -1,7 +1,9 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; +using System.Text; using System.Xml; using System.Xml.Linq; using TUGraz.VectoCommon.BusAuxiliaries; @@ -31,9 +33,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected XNamespace v20 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"; protected XNamespace v21 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"; - protected XNamespace v23 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"; - protected XNamespace v26 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"; - protected XNamespace v28 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"; + protected XNamespace v23 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"; + protected XNamespace v24 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"; protected XNamespace v10 = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"; protected XElement VehiclePart; @@ -56,20 +57,21 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF { var retVal = new XDocument(); retVal.Add( - new XElement(XMLNames.VectoOutputMultistage, - new XAttribute("xmlns", tns), + new XElement(tns + XMLNames.VectoOutputMultistep, new XAttribute(XNamespace.Xmlns + "di", di), new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName), + new XAttribute(XNamespace.Xmlns + "vif0.1", tns), new XAttribute(XNamespace.Xmlns + "v2.0", v20), new XAttribute(XNamespace.Xmlns + "v2.1", v21), new XAttribute(XNamespace.Xmlns + "v2.3", v23), - new XAttribute(XNamespace.Xmlns + "v2.6", v26), - new XAttribute(XNamespace.Xmlns + "v2.8", v28), - new XAttribute(xsi + "schemaLocation", $"{tns.NamespaceName} "+ @"V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"), - + new XAttribute(XNamespace.Xmlns + "v2.8", v24), + new XAttribute(xsi + "schemaLocation", $"{tns.NamespaceName} "+ @"V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"), + new XAttribute("xmlns", tns), + GeneratePrimaryVehicle(resultSignature)) ); - + + Debug.WriteLine(retVal.ToString()); Report = retVal; } @@ -79,10 +81,11 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF results.AddFirst(new XElement(tns + XMLNames.Report_Result_Status, _allSuccess ? "success" : "error")); var vehicleId = $"{VectoComponents.Vehicle.HashIdPrefix()}{GetGUID()}"; - var primaryVehicle = new XElement( tns + XMLNames.Bus_PrimaryVehicle, + var primaryVehicle = new XElement(tns + XMLNames.Bus_PrimaryVehicle, new XElement(tns + XMLNames.Report_DataWrap, new XAttribute(XMLNames.Component_ID_Attr, vehicleId), new XAttribute(xsi + "type", "PrimaryVehicleDataType"), + new XAttribute("xmlns", tns), VehiclePart, InputDataIntegrity, new XElement(tns + "ManufacturerRecordSignature", resultSignature), @@ -98,8 +101,10 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF protected XElement GetSignatureElement(XElement stage) { var stream = new MemoryStream(); - var writer = new StreamWriter(stream); - writer.Write(stage); + //var writer = new StreamWriter(stream); + //writer.Write(stage); + var writer = new XmlTextWriter(stream, Encoding.UTF8); + stage.WriteTo(writer); writer.Flush(); stream.Seek(0, SeekOrigin.Begin); @@ -132,8 +137,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF new XElement(tns + XMLNames.Component_Model, modelData.VehicleData.ModelName), new XElement(tns + XMLNames.Vehicle_VIN, modelData.VehicleData.VIN), new XElement(tns + XMLNames.Component_Date, XmlConvert.ToString(modelData.VehicleData.Date, XmlDateTimeSerializationMode.Utc)), - new XElement(tns + XMLNames.Bus_LegislativeCategory, modelData.VehicleData.LegislativeClass.ToXMLFormat()), - new XElement(tns + XMLNames.Bus_ChassisConfiguration, modelData.VehicleData.VehicleCategory.ToXMLFormat()), + new XElement(tns + XMLNames.Vehicle_LegislativeCategory, modelData.VehicleData.LegislativeClass.ToXMLFormat()), + new XElement(tns + XMLNames.ChassisConfiguration, modelData.VehicleData.VehicleCategory.ToXMLFormat()), new XElement(tns + XMLNames.Vehicle_AxleConfiguration, modelData.VehicleData.AxleConfiguration.GetName()), new XElement(tns + XMLNames.Vehicle_Articulated, modelData.VehicleData.InputData.Articulated), new XElement(tns + XMLNames.TPMLM, modelData.VehicleData.InputData.GrossVehicleMassRating.ToXMLFormat(0)), @@ -148,7 +153,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF GetTorqueLimits(modelData), VehicleComponents(modelData, fuelModes) ); - + InputDataIntegrity = new XElement(tns + XMLNames.Report_InputDataSignature, modelData.InputDataHash == null ? XMLHelper.CreateDummySig(di) : new XElement(modelData.InputDataHash)); } @@ -156,13 +161,13 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetADAS(VehicleData.ADASData adasData) { var ns = XNamespace.Get(adasData.InputData.XMLSource.SchemaInfo.SchemaType.QualifiedName.Namespace); - const string adasPrefix = "adas"; + //const string adasPrefix = "adas"; return new XElement( tns + XMLNames.Vehicle_ADAS, - new XAttribute(XNamespace.Xmlns + adasPrefix, ns.NamespaceName), new XAttribute( xsi + "type", - $"{adasPrefix}:{adasData.InputData.XMLSource.SchemaInfo.SchemaType.QualifiedName.Name}"), + $"{adasData.InputData.XMLSource.SchemaInfo.SchemaType.QualifiedName.Name}"), + new XAttribute("xmlns", ns), XElement.Parse(adasData.InputData.XMLSource.OuterXml).Elements() ); } @@ -176,12 +181,12 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF } var ns = XNamespace.Get(tcLimits.SchemaInfo.SchemaType.QualifiedName.Namespace); - const string adasPrefix = "tcl"; + //const string adasPrefix = "tcl"; return new XElement( tns + XMLNames.Vehicle_TorqueLimits, - new XAttribute(XNamespace.Xmlns + adasPrefix, ns.NamespaceName), new XAttribute( - xsi + "type", $"{adasPrefix}:{tcLimits.SchemaInfo.SchemaType.QualifiedName.Name}"), + xsi + "type", $"{tcLimits.SchemaInfo.SchemaType.QualifiedName.Name}"), + new XAttribute("xmlns", ns.NamespaceName), XElement.Parse(tcLimits.OuterXml).Elements() ); } @@ -252,21 +257,24 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF private XElement GetAuxiliariesDescription(VectoRunData modelData) { var aux = modelData.BusAuxiliaries.InputData; - var supplyHevPossible = XmlConvert.ToBoolean( - aux.XMLSource.SelectSingleNode( - $".//*[local-name()='{XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible}']")?.InnerText); + //var supplyHevPossible = XmlConvert.ToBoolean( + // aux.XMLSource.SelectSingleNode( + // $".//*[local-name()='{XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible}']")?.InnerText); - return new XElement(tns + XMLNames.Component_Auxiliaries, + var result = new XElement(tns + XMLNames.Component_Auxiliaries, new XElement(tns + XMLNames.ComponentDataWrapper, new XAttribute(xsi + "type", "AuxiliaryDataPIFType"), - new XAttribute("xmlns", tns.NamespaceName), + //new XAttribute("xmlns", tns.NamespaceName), //automically created new XElement(tns + XMLNames.BusAux_Fan, new XElement(tns + XMLNames.BusAux_Technology, aux.FanTechnology)), GetSteeringPumpElement(aux.SteeringPumpTechnology), - GetElectricSystem(aux.ElectricSupply, supplyHevPossible), + GetElectricSystem(aux.ElectricSupply), GetPneumaticSystem(aux.PneumaticSupply, aux.PneumaticConsumers), GetHvac(aux.HVACAux)) ); + + + return result; } @@ -286,7 +294,7 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF ); } - private XElement GetElectricSystem(IElectricSupplyDeclarationData electricSupply, bool supplyHevPossible) + private XElement GetElectricSystem(IElectricSupplyDeclarationData electricSupply) { var alternatorTech = new XElement(tns + XMLNames.Bus_AlternatorTechnology, electricSupply.AlternatorTechnology.ToXMLFormat()); @@ -333,8 +341,8 @@ namespace TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationF alternatorTech, smartAlternators, auxBattery, - auxCapacitor, - new XElement(tns + XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible, supplyHevPossible) + auxCapacitor//, + //new XElement(tns + XMLNames.BusAux_ElectricSystem_SupplyFromHEVPossible, supplyHevPossible) ); } diff --git a/VectoCore/VectoCore/OutputData/XML/Engineering/XMLEngineeringWriterInjectModule.cs b/VectoCore/VectoCore/OutputData/XML/Engineering/XMLEngineeringWriterInjectModule.cs index d2673ae862a092f9d5d65f09d43fec807e35a803..03aa8b77a17625398259ad63629bf75585356864 100644 --- a/VectoCore/VectoCore/OutputData/XML/Engineering/XMLEngineeringWriterInjectModule.cs +++ b/VectoCore/VectoCore/OutputData/XML/Engineering/XMLEngineeringWriterInjectModule.cs @@ -31,14 +31,13 @@ using Ninject.Extensions.Factory; using Ninject.Modules; -using TUGraz.VectoCore.OutputData.XML.Engineering; using TUGraz.VectoCore.OutputData.XML.Engineering.Factory; using TUGraz.VectoCore.OutputData.XML.Engineering.Interfaces; using TUGraz.VectoCore.OutputData.XML.Factory; using TUGraz.VectoCore.OutputData.XML.NinjectModules; using TUGraz.VectoCore.Utils.Ninject; -namespace TUGraz.VectoCore.OutputData.XML +namespace TUGraz.VectoCore.OutputData.XML.Engineering { public class XMLEngineeringWriterInjectModule : NinjectModule { diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/IGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/IGroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..82d2ffebf1074ca5e599b05528cbac1c7b1c55a6 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/IGroupWriter.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration +{ + public interface IVehicleDeclarationGroupWriter + { + XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle); + } + + public interface IBusAuxiliariesDeclarationGroupWriter + { + XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux); + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..c0d005308ac847441b8a6449d9c4d99170284096 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusDimensionsWriter.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus +{ + class CompletedBusDimensionsWriter_V2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + { + public CompletedBusDimensionsWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) + { + if (vehicle.IsAnyNull(vehicle.Height, vehicle.Length, vehicle.Width, vehicle.EntranceHeight)) { + return new XElement[0]; + } + return new XElement[] { + new XElement(writerNamespace + XMLNames.Bus_HeightIntegratedBody, + vehicle.Height.ConvertToMilliMeter()), + new XElement(writerNamespace + XMLNames.Bus_VehicleLength, vehicle.Length.ConvertToMilliMeter()), + new XElement(writerNamespace + XMLNames.Bus_VehicleWidth, vehicle.Width.ConvertToMilliMeter()), + new XElement(writerNamespace + XMLNames.Bus_EntranceHeight, + vehicle.EntranceHeight.ConvertToMilliMeter()) + }; + } + + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..cc19f92a53a27630b6ef3fec090ac9c7a3bd57a0 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusGeneralParametersWriter.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus +{ + public class CompletedBusGeneralParametersWriterV2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + { + public CompletedBusGeneralParametersWriterV2_10_2(XNamespace writerNamespace) : base(writerNamespace) + { + + } + + #region Overrides of GroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData inputData) + { + return GetGroupElements(inputData, _writerNamespace); + } + + public static XElement[] GetGroupElements(IVehicleDeclarationInputData inputData, XNamespace writerNamespace) + { + return new XElement[] { + new XElement(writerNamespace + XMLNames.Component_Manufacturer, inputData.Manufacturer), + new XElement(writerNamespace + XMLNames.Component_ManufacturerAddress, + inputData.ManufacturerAddress), + new XElement(writerNamespace + XMLNames.Vehicle_VIN, inputData.VIN), + new XElement(writerNamespace + XMLNames.Component_Date, inputData.Date.ToXmlFormat()) + }; + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..88c063c9141421612de13ed525f46b22e335cda0 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusParametersWriter.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus +{ + class CompletedBusParametersWriterV2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + { + public CompletedBusParametersWriterV2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) + { + var elements = new List<XElement>(); + + if (vehicle.Model != null) { + elements.Add(new XElement(writerNamespace + XMLNames.Component_Model, + vehicle.Model)); + } + + if (vehicle.LegislativeClass != null) { + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_LegislativeCategory, + vehicle.LegislativeClass.ToXMLFormat())); + } + + if (vehicle.CurbMassChassis != null) { + elements.Add(new XElement(writerNamespace + XMLNames.CorrectedActualMass, + vehicle.CurbMassChassis.ToXMLFormat(0))); + } + + if (vehicle.GrossVehicleMassRating != null) { + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_TPMLM, + vehicle.GrossVehicleMassRating.ToXMLFormat(0))); + } + + if (vehicle.AirdragModifiedMultistep != null) { + elements.Add(new XElement(writerNamespace + XMLNames.Bus_AirdragModifiedMultistep, + vehicle.AirdragModifiedMultistep)); + } + + if (vehicle.RegisteredClass != null) { + elements.Add(new XElement(writerNamespace + XMLNames.Vehicle_RegisteredClass, + vehicle.RegisteredClass.ToXMLFormat())); + } + + return elements.ToArray(); + } + + + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..4efe71fc36acdb9c76da679fd472f98361e9d9fd --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/CompletedBus/CompletedBusPassengerCountWriter.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus +{ + class CompletedBusPassengerCountWriter_V2_10_2 : GroupWriter, IVehicleDeclarationGroupWriter + { + public CompletedBusPassengerCountWriter_V2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + + + + public static XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle, XNamespace writerNamespace) + { + if (vehicle.IsAnyNull(vehicle.NumberPassengersStandingLowerDeck, vehicle.NumberPassengersStandingUpperDeck, + vehicle.NumberPassengerSeatsLowerDeck, vehicle.NumberPassengerSeatsUpperDeck)) { + return new XElement[0]; + } + return new XElement[] { + new XElement(writerNamespace + XMLNames.Bus_NumberPassengerSeatsLowerDeck, + vehicle.NumberPassengerSeatsLowerDeck), + + new XElement(writerNamespace + XMLNames.Bus_NumberPassengersStandingLowerDeck, + vehicle.NumberPassengersStandingLowerDeck), + + new XElement(writerNamespace + XMLNames.Bus_NumberPassengerSeatsUpperDeck, + vehicle.NumberPassengerSeatsUpperDeck), + + new XElement(writerNamespace + XMLNames.Bus_NumberPassengersStandingUpperDeck, + vehicle.NumberPassengersStandingUpperDeck), + }; + } + + + + #region Implementation of IVehicleDeclarationGroupWriter + + public XElement[] GetGroupElements(IVehicleDeclarationInputData vehicle) + { + return GetGroupElements(vehicle, _writerNamespace); + } + + #endregion + } + +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..3434644cd7f51b6692d912e76603c79a64631474 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemLightsGroupWriter.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries +{ + class BusAuxElectricSystemLightsGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + { + public BusAuxElectricSystemLightsGroupWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Overrides of GroupWriter + + public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + { + return new XElement[] { + new XElement(_writerNamespace + XMLNames.Bus_Interiorlights, aux.ElectricConsumers.InteriorLightsLED), + new XElement(_writerNamespace + XMLNames.Bus_Dayrunninglights, + aux.ElectricConsumers.DayrunninglightsLED), + new XElement(_writerNamespace + XMLNames.Bus_Positionlights, aux.ElectricConsumers.PositionlightsLED), + new XElement(_writerNamespace + XMLNames.Bus_Brakelights, aux.ElectricConsumers.BrakelightsLED), + new XElement(_writerNamespace + XMLNames.Bus_Headlights, aux.ElectricConsumers.HeadlightsLED), + }; + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..a78df6dce1f1c618631bc2e26383fe9df7f09343 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxElectricSystemSupplyGroupWriter.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries +{ + class BusAuxElectricSystemSupplyGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + { + public BusAuxElectricSystemSupplyGroupWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IBusAuxiliariesDeclarationGroupWriter + + public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..34b659e3e66db7f0a8f01556382effb2cf09ed03 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACConventionalGroupWriter.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries +{ + public class BusAuxHVACConventionalGroupWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + { + private readonly IGroupWriterFactory _groupWriterFactory; + + public BusAuxHVACConventionalGroupWriter_v2_10_2(XNamespace writerNamespace, + IGroupWriterFactory groupWriterFactory) : base(writerNamespace) + { + _groupWriterFactory = groupWriterFactory; + } + + #region Implementation of IBusAuxiliariesDeclarationGroupWriter + + public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + { + var elements = new List<XElement>(); + + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_SystemConfiguration, + aux.HVACAux.SystemConfiguration.GetXmlFormat())); + + elements.AddRange(_groupWriterFactory + .GetBusAuxiliariesDeclarationGroupWriter(GroupNames.BusAuxHVACHeatPumpSequenceGroup, _writerNamespace) + .GetGroupElements(aux)); + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AuxiliaryHeaterPower, + aux.HVACAux.AuxHeaterPower?.ToXMLFormat(0))); + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_DoubleGlazing, aux.HVACAux.DoubleGlazing)); + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_AdjustableAuxiliaryHeater, + aux.HVACAux.AdjustableAuxiliaryHeater)); + elements.Add(new XElement(_writerNamespace + XMLNames.Bus_SeparateAirDistributionDucts, + aux.HVACAux.SeparateAirDistributionDucts)); + + return elements.ToArray(); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..fbb371887bff5782cec17632ebe8dcfb4a01b729 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/Declaration/Vehicle/Components/Auxiliaries/BusAuxHVACHeatPumpWriter.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Resources; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries +{ + class BusAuxHVACHeatPumpWriter_v2_10_2 : GroupWriter, IBusAuxiliariesDeclarationGroupWriter + { + public BusAuxHVACHeatPumpWriter_v2_10_2(XNamespace writerNamespace) : base(writerNamespace) { } + + #region Implementation of IBusAuxiliariesDeclarationGroupWriter + + public XElement[] GetGroupElements(IBusAuxiliariesDeclarationData aux) + { + return new XElement[] { + GetHeatPumpGroupElement( + xmlNameWrapper: XMLNames.Bus_HeatPumpTypeDriver, + xmlNameFirstComponent: XMLNames.BusHVACHeatPumpCooling, + firstValue: aux.HVACAux.HeatPumpTypeCoolingDriverCompartment.GetLabel(), + xmlNameSecondComponent: XMLNames.BusHVACHeatPumpHeating, + secondValue: aux.HVACAux.HeatPumpTypeHeatingDriverCompartment.GetLabel()), + + GetHeatPumpGroupElement( + xmlNameWrapper: XMLNames.Bus_HeatPumpTypePassenger, + xmlNameFirstComponent: XMLNames.BusHVACHeatPumpCooling, + firstValue: aux.HVACAux.HeatPumpTypeCoolingPassengerCompartment.GetLabel(), + xmlNameSecondComponent: XMLNames.BusHVACHeatPumpHeating, + secondValue: aux.HVACAux.HeatPumpTypeHeatingPassengerCompartment.GetLabel()) + }; + + } + + #endregion + + private XElement GetHeatPumpTypeElement(string xmlName, string value) + { + if (value == "~null~") + { + value = null; + } + return new XElement(_writerNamespace + xmlName, value); + } + + private XElement GetHeatPumpGroupElement(string xmlNameWrapper, string xmlNameFirstComponent, + string xmlNameSecondComponent, string firstValue, string secondValue) + { + var element = new XElement(_writerNamespace + xmlNameWrapper, + GetHeatPumpTypeElement(xmlNameFirstComponent, firstValue), + GetHeatPumpTypeElement(xmlNameSecondComponent, secondValue)); + + return element; + } + + + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs new file mode 100644 index 0000000000000000000000000000000000000000..0ae30203aab29273aa37cac01521f77a1250c101 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.Designer.cs @@ -0,0 +1,144 @@ +//------------------------------------------------------------------------------ +// <auto-generated> +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// </auto-generated> +//------------------------------------------------------------------------------ + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter { + using System; + + + /// <summary> + /// A strongly-typed resource class, for looking up localized strings, etc. + /// </summary> + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class GroupNames { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal GroupNames() { + } + + /// <summary> + /// Returns the cached ResourceManager instance used by this class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("TUGraz.VectoCore.OutputData.XML.GroupWriter.GroupNames", typeof(GroupNames).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// <summary> + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// </summary> + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// <summary> + /// Looks up a localized string similar to ADAS_Conventional_Type. + /// </summary> + internal static string ADAS_Conventional_Type { + get { + return ResourceManager.GetString("ADAS_Conventional_Type", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BusAuxElectricSystemLightsGroup. + /// </summary> + internal static string BusAuxElectricSystemLightsGroup { + get { + return ResourceManager.GetString("BusAuxElectricSystemLightsGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BusAuxElectricSystemSupplySequenceGroup. + /// </summary> + internal static string BusAuxElectricSystemSupplySequenceGroup { + get { + return ResourceManager.GetString("BusAuxElectricSystemSupplySequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BusAuxHVACConventionalSequenceGroup. + /// </summary> + internal static string BusAuxHVACConventionalSequenceGroup { + get { + return ResourceManager.GetString("BusAuxHVACConventionalSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to BusAuxHVACHeatPumpSequenceGroup. + /// </summary> + internal static string BusAuxHVACHeatPumpSequenceGroup { + get { + return ResourceManager.GetString("BusAuxHVACHeatPumpSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Vehicle_CompletedBus_DimensionsSequenceGroup. + /// </summary> + internal static string Vehicle_CompletedBus_DimensionsSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_DimensionsSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Vehicle_CompletedBus_GeneralParametersSequenceGroup. + /// </summary> + internal static string Vehicle_CompletedBus_GeneralParametersSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_GeneralParametersSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Vehicle_CompletedBus_PassengerCountSequenceGroup. + /// </summary> + internal static string Vehicle_CompletedBus_PassengerCountSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBus_PassengerCountSequenceGroup", resourceCulture); + } + } + + /// <summary> + /// Looks up a localized string similar to Vehicle_CompletedBusParametersSequenceGroup. + /// </summary> + internal static string Vehicle_CompletedBusParametersSequenceGroup { + get { + return ResourceManager.GetString("Vehicle_CompletedBusParametersSequenceGroup", resourceCulture); + } + } + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx new file mode 100644 index 0000000000000000000000000000000000000000..a6e98f3e166f325a4d47f8cb4e10e1290eacfdcf --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupNames.resx @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="utf-8"?> +<root> + <!-- + Microsoft ResX Schema + + Version 1.3 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + <resheader name="resmimetype">text/microsoft-resx</resheader> + <resheader name="version">1.3</resheader> + <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> + <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> + <data name="Name1">this is my long string</data> + <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> + <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> + [base64 mime encoded serialized .NET Framework object] + </data> + <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> + [base64 mime encoded string representing a byte array form of the .NET Framework object] + </data> + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + + <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> + <xsd:element name="root" msdata:IsDataSet="true"> + <xsd:complexType> + <xsd:choice maxOccurs="unbounded"> + <xsd:element name="data"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> + <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> + <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> + </xsd:complexType> + </xsd:element> + <xsd:element name="resheader"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + </xsd:choice> + </xsd:complexType> + </xsd:element> + </xsd:schema> + <resheader name="resmimetype"> + <value>text/microsoft-resx</value> + </resheader> + <resheader name="version"> + <value>1.3</value> + </resheader> + <resheader name="reader"> + <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <resheader name="writer"> + <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> + </resheader> + <data name="Vehicle_CompletedBus_GeneralParametersSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_GeneralParametersSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBusParametersSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBusParametersSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBus_DimensionsSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_DimensionsSequenceGroup</value> + </data> + <data name="Vehicle_CompletedBus_PassengerCountSequenceGroup" xml:space="preserve"> + <value>Vehicle_CompletedBus_PassengerCountSequenceGroup</value> + </data> + <data name="BusAuxElectricSystemLightsGroup" xml:space="preserve"> + <value>BusAuxElectricSystemLightsGroup</value> + </data> + <data name="BusAuxElectricSystemSupplySequenceGroup" xml:space="preserve"> + <value>BusAuxElectricSystemSupplySequenceGroup</value> + </data> + <data name="BusAuxHVACConventionalSequenceGroup" xml:space="preserve"> + <value>BusAuxHVACConventionalSequenceGroup</value> + </data> + <data name="BusAuxHVACHeatPumpSequenceGroup" xml:space="preserve"> + <value>BusAuxHVACHeatPumpSequenceGroup</value> + </data> + <data name="ADAS_Conventional_Type" xml:space="preserve"> + <value>ADAS_Conventional_Type</value> + </data> +</root> \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupWriter.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupWriter.cs new file mode 100644 index 0000000000000000000000000000000000000000..305dcbc82cd5adc7a49f144c07e24d220701d70d --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/GroupWriter.cs @@ -0,0 +1,19 @@ +using System.Collections.Generic; +using System.Configuration; +using System.Xml.Linq; +using Castle.Components.DictionaryAdapter; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter +{ + public abstract class GroupWriter + { + protected readonly XNamespace _writerNamespace; + + //This constructor is just used to get the right parameter names when deriving from the class ;) + protected GroupWriter(XNamespace writerNamespace) + { + _writerNamespace = writerNamespace; + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/IGroupWriterFactory.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/IGroupWriterFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..c10ba6d5425268d419870af5291a7d771746de07 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/IGroupWriterFactory.cs @@ -0,0 +1,15 @@ +using System.Xml.Linq; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter +{ + public interface IGroupWriterFactory + { + + IVehicleDeclarationGroupWriter GetVehicleDeclarationGroupWriter(string groupName, XNamespace writerNamespace); + IBusAuxiliariesDeclarationGroupWriter GetBusAuxiliariesDeclarationGroupWriter(string groupName, XNamespace writerNamespace); + + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs new file mode 100644 index 0000000000000000000000000000000000000000..8b46e43aa233bfcba2c95f6a080357daa2e20ff7 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/GroupWriter/XMLGroupWriterNinjectModule.cs @@ -0,0 +1,50 @@ +using System.Text.RegularExpressions; +using System.Xml.Linq; +using Ninject.Extensions.Factory; +using TUGraz.VectoCore.Configuration; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.CompletedBus; +using TUGraz.VectoCore.OutputData.XML.GroupWriter.Declaration.Vehicle.Components.Auxiliaries; +using TUGraz.VectoCore.Utils.Ninject; + +namespace TUGraz.VectoCore.OutputData.XML.GroupWriter +{ + public class GroupWriterNinjectModule : AbstractNinjectModule + { + #region Overrides of NinjectModule + + private string GetName(string groupName, XNamespace xNamespace) + { + return UseFirstTwoArgumentsAsInstanceProvider.GetName(groupName, xNamespace.ToString()); + } + public override void Load() + { + Bind<IGroupWriterFactory>().ToFactory(() => new UseFirstTwoArgumentsAsInstanceProvider(1, false)).InSingletonScope(); + + ///Vehicle V2_10_2 + var v2102 = XMLDeclarationNamespaces.v2_10_2; + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusGeneralParametersWriterV2_10_2>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_GeneralParametersSequenceGroup, v2102)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusParametersWriterV2_10_2>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBusParametersSequenceGroup, v2102)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusDimensionsWriter_V2_10_2>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_DimensionsSequenceGroup, v2102)); + Bind<IVehicleDeclarationGroupWriter>().To<CompletedBusPassengerCountWriter_V2_10_2>().InSingletonScope(). + Named(GetName(GroupNames.Vehicle_CompletedBus_PassengerCountSequenceGroup, v2102)); + + ///BusAuxiliaries_V2_10_2 + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemLightsGroupWriter_v2_10_2>().InSingletonScope(). + Named(GetName(GroupNames.BusAuxElectricSystemLightsGroup, v2102)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxElectricSystemSupplyGroupWriter_v2_10_2>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxElectricSystemSupplySequenceGroup, v2102)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACConventionalGroupWriter_v2_10_2>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxHVACConventionalSequenceGroup, v2102)); + Bind<IBusAuxiliariesDeclarationGroupWriter>().To<BusAuxHVACHeatPumpWriter_v2_10_2>().InSingletonScope() + .Named(GetName(GroupNames.BusAuxHVACHeatPumpSequenceGroup, v2102)); + + + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/OutputData/XML/IXMLReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/IXMLReportFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..4b7c633fedb973dea0c0ac86938704a174692e5f --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/IXMLReportFactory.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TUGraz.VectoCommon.InputData; + +namespace TUGraz.VectoCore.OutputData.XML +{ + public interface IXMLDeclarationReportFactory + { + //Creates a XMLDeclarationReport based on the type of the first argument + IDeclarationReport CreateReport(IInputDataProvider input, IOutputDataWriter outputWriter); + IVTPReport CreateVTPReport(IVTPDeclarationInputDataProvider input, IOutputDataWriter outputWriter); + + IVTPReport CreateVTPReport(IInputDataProvider input, IOutputDataWriter outputWriter); + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationNamespaces.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationNamespaces.cs new file mode 100644 index 0000000000000000000000000000000000000000..fb74d2980b0303cad5bb2489ef9e8534637d76f8 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationNamespaces.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace TUGraz.VectoCore.OutputData.XML +{ + public static class XMLDeclarationNamespaces + { + public static readonly string DeclarationDefinition = "urn:tugraz:ivt:VectoAPI:DeclarationDefinitions"; + public static readonly XNamespace Xsi = XNamespace.Get("http://www.w3.org/2001/XMLSchema-instance"); + public static readonly XNamespace Tns = "urn:tugraz:ivt:VectoAPI:DeclarationInput"; + public static readonly XNamespace Tns_v20 = Tns.NamespaceName + ":v2.0"; + public static readonly XNamespace V26 = DeclarationDefinition + ":DEV:v2.6"; + public static readonly XNamespace V21 = DeclarationDefinition + ":v2.1"; + public static readonly XNamespace V23 = DeclarationDefinition + ":DEV:v2.3"; + public static readonly XNamespace V20 = DeclarationDefinition + ":v2.0"; + public static readonly XNamespace V10 = DeclarationDefinition + ":v1.0"; + public static readonly XNamespace V28 = DeclarationDefinition + ":DEV:v2.8"; + public static readonly XNamespace v2_10_1 = DeclarationDefinition + ":DEV:v2.10.1"; + public static readonly XNamespace v2_10_2 = DeclarationDefinition + ":DEV:v2.10.2"; + public static readonly XNamespace Di = "http://www.w3.org/2000/09/xmldsig#"; + + public static readonly string DeclarationRootNamespace = "urn:tugraz:ivt:VectoAPI:DeclarationJob"; + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs new file mode 100644 index 0000000000000000000000000000000000000000..ad95a11bea40adcef0ae56fb10791115b9e70ed1 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactory.cs @@ -0,0 +1,105 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.Reader.Impl; + +namespace TUGraz.VectoCore.OutputData.XML +{ + class XMLDeclarationReportFactory : IXMLDeclarationReportFactory + { + #region Implementation of IXMLDeclarationReportFactory + + public IDeclarationReport CreateReport(IInputDataProvider input, IOutputDataWriter outputWriter) + { + switch (input) { + case IMultistageBusInputDataProvider multistageBusInputDataProvider: + break; + case ISingleBusInputDataProvider singleBusInputDataProvider: + return new XMLDeclarationReport(outputWriter); + case IDeclarationInputDataProvider declarationInputDataProvider: + return CreateDeclarationReport(declarationInputDataProvider, outputWriter); + case IMultiStageTypeInputData multiStageTypeInputData: + break; + case IMultistageVIFInputData multistageVifInputData: + return CreateDeclarationReport(multistageVifInputData, outputWriter); + case IPrimaryVehicleInformationInputDataProvider primaryVehicleInformationInputDataProvider: + break; + case IVTPDeclarationInputDataProvider vtpProvider: { + return null; + } + case IMultistagePrimaryAndStageInputDataProvider multistagePrimaryAndStageInputData: { + return null; //No Report for this type (handled in two simulation steps) + } + default: + break; + + } + throw new VectoException($"Could not create Declaration Report for {input.GetType()}"); + } + + public IVTPReport CreateVTPReport(IInputDataProvider input, IOutputDataWriter outputWriter) + { + return input is IVTPDeclarationInputDataProvider + ? new XMLVTPReport(outputWriter) + : null; + } + + private IDeclarationReport CreateDeclarationReport(IMultistageVIFInputData multistageVifInputData, IOutputDataWriter outputDataWriter) + { + if (multistageVifInputData.VehicleInputData == null) + { + var reportCompleted = new XMLDeclarationReportCompletedVehicle(outputDataWriter, true) + { + PrimaryVehicleReportInputData = multistageVifInputData.MultistageJobInputData.JobInputData.PrimaryVehicle, + }; + return reportCompleted; + } + else { + var report = new XMLDeclarationReportMultistageBusVehicle(outputDataWriter); + return report; + } + } + + private IDeclarationReport CreateDeclarationReport(IDeclarationInputDataProvider declarationInputDataProvider, + IOutputDataWriter outputDataWriter) + { + var vehicleCategory = declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory; + if (vehicleCategory.IsLorry()) + { + return new XMLDeclarationReport(outputDataWriter); + } + + if (vehicleCategory.IsBus()) + switch (declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory) + { + case VehicleCategory.HeavyBusCompletedVehicle: + return new XMLDeclarationReportCompletedVehicle(outputDataWriter, + declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle) + { + PrimaryVehicleReportInputData = declarationInputDataProvider.PrimaryVehicleData, + }; + case VehicleCategory.HeavyBusPrimaryVehicle: + return new XMLDeclarationReportPrimaryVehicle(outputDataWriter, + declarationInputDataProvider.JobInputData.Vehicle.VehicleCategory == VehicleCategory.HeavyBusPrimaryVehicle); + + default: + break; + } + + throw new Exception( + $"Could not create DeclarationReport for Vehicle Category{vehicleCategory}"); + } + + public IVTPReport CreateVTPReport(IVTPDeclarationInputDataProvider input, IOutputDataWriter outputWriter) + { + throw new NotImplementedException(); + } + + #endregion + } +} diff --git a/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactoryNinjectModule.cs b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactoryNinjectModule.cs new file mode 100644 index 0000000000000000000000000000000000000000..3577d3ca845be8a0bbc6d22c61c7520850c2f470 --- /dev/null +++ b/VectoCore/VectoCore/OutputData/XML/XMLDeclarationReportFactoryNinjectModule.cs @@ -0,0 +1,19 @@ +using System.Linq; +using Ninject.Extensions.Factory; +using TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile; +using TUGraz.VectoCore.Utils.Ninject; + +namespace TUGraz.VectoCore.OutputData.XML +{ + public class XMLDeclarationReportFactoryNinjectModule : AbstractNinjectModule + { + #region Overrides of NinjectModule + + public override void Load() + { + Bind<IXMLDeclarationReportFactory>().To<XMLDeclarationReportFactory>().InSingletonScope(); + } + + #endregion + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Properties/Version.cs b/VectoCore/VectoCore/Properties/Version.cs index 8148ccb37d548c718f42f1ebb98213a9afbab42c..89ec598ca5d14ea92a283c1b7bc2f4ae71a9efb0 100644 --- a/VectoCore/VectoCore/Properties/Version.cs +++ b/VectoCore/VectoCore/Properties/Version.cs @@ -30,5 +30,5 @@ */ using System.Reflection; -[assembly: AssemblyVersion("0.7.3.2171")] -[assembly: AssemblyFileVersion("0.7.3.2171")] +[assembly: AssemblyVersion("0.7.6.2527")] +[assembly: AssemblyFileVersion("0.7.6.2527")] diff --git a/VectoCore/VectoCore/Resources/XSD/ParameterDocumentation.xsd b/VectoCore/VectoCore/Resources/XSD/ParameterDocumentation.xsd index b0ec9347972f13f506276671f3bb54dcdbc1a48d..14a6e2e25b74a9424afaae4cf1094da12bace79c 100644 --- a/VectoCore/VectoCore/Resources/XSD/ParameterDocumentation.xsd +++ b/VectoCore/VectoCore/Resources/XSD/ParameterDocumentation.xsd @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> <xs:schema xmlns:tns="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="description"> <xs:complexType> @@ -8,40 +8,7 @@ <xs:complexType> <xs:simpleContent> <xs:extension base="xs:int"> - <xs:attribute name="component" use="required"> - <xs:simpleType> - <xs:restriction base="xs:token"> - <xs:enumeration value="Engine"/> - <xs:enumeration value="Engine/FLD"/> - <xs:enumeration value="Engine/FC-map"/> - <xs:enumeration value="Airdrag"/> - <xs:enumeration value="Angledrive"/> - <xs:enumeration value="Angledrive/Lossmap"/> - <xs:enumeration value="Auxiliaries"/> - <xs:enumeration value="Axlegear"/> - <xs:enumeration value="Axlegear/Lossmap"/> - <xs:enumeration value="Driver"/> - <xs:enumeration value="Engine"/> - <xs:enumeration value="ADAS"/> - <xs:enumeration value="Gearbox"/> - <xs:enumeration value="Gearbox/Gear"/> - <xs:enumeration value="Gearbox/Gear/Lossmap"/> - <xs:enumeration value="Gearbox/Gear/Shiftpolygon"/> - <xs:enumeration value="Job"/> - <xs:enumeration value="Retarder"/> - <xs:enumeration value="Retarder/Lossmap"/> - <xs:enumeration value="Torqueconverter"/> - <xs:enumeration value="Torqueconverter/Characteristics"/> - <xs:enumeration value="Tyre"/> - <xs:enumeration value="Vehicle"/> - <xs:enumeration value="Vehicle/Auxiliaries"/> - <xs:enumeration value="Vehicle/Axle"/> - <xs:enumeration value="Vehicle/TorqueLimits"/> - <xs:enumeration value="Gearshiftstrategy"/> - <xs:enumeration value="Vehicle/ADAS"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> + <xs:attribute name="component" type="tns:ComponentType" use="required"/> <xs:attribute name="status"> <xs:simpleType> <xs:restriction base="xs:string"> @@ -63,30 +30,7 @@ </xs:simpleContent> </xs:complexType> </xs:element> - <xs:element name="unit"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="kg"/> - <xs:enumeration value="m"/> - <xs:enumeration value="s"/> - <xs:enumeration value="m/s²"/> - <xs:enumeration value="1/min"/> - <xs:enumeration value="°"/> - <xs:enumeration value="kgm²"/> - <xs:enumeration value="m²"/> - <xs:enumeration value="-"/> - <xs:enumeration value="N"/> - <xs:enumeration value="W"/> - <xs:enumeration value="cm³"/> - <xs:enumeration value="Nm"/> - <xs:enumeration value="g/h"/> - <xs:enumeration value="%"/> - <xs:enumeration value="km/h"/> - <xs:enumeration value="m/s"/> - <xs:enumeration value="mm"/> - </xs:restriction> - </xs:simpleType> - </xs:element> + <xs:element name="unit" type="tns:UnitType"/> <xs:element name="genericValueType" minOccurs="0"> <xs:simpleType> <xs:restriction base="xs:string"> @@ -107,4 +51,82 @@ </xs:sequence> </xs:complexType> </xs:element> + <xs:simpleType name="ComponentType"> + <xs:restriction base="xs:token"> + <xs:enumeration value="Engine"/> + <xs:enumeration value="Engine/FLD"/> + <xs:enumeration value="Engine/FC-map"/> + <xs:enumeration value="Airdrag"/> + <xs:enumeration value="Angledrive"/> + <xs:enumeration value="Angledrive/Lossmap"/> + <xs:enumeration value="Auxiliaries"/> + <xs:enumeration value="Axlegear"/> + <xs:enumeration value="Axlegear/Lossmap"/> + <xs:enumeration value="Driver"/> + <xs:enumeration value="Engine"/> + <xs:enumeration value="ADAS"/> + <xs:enumeration value="Gearbox"/> + <xs:enumeration value="Gearbox/Gear"/> + <xs:enumeration value="Gearbox/Gear/Lossmap"/> + <xs:enumeration value="Gearbox/Gear/Shiftpolygon"/> + <xs:enumeration value="Job"/> + <xs:enumeration value="Retarder"/> + <xs:enumeration value="Retarder/Lossmap"/> + <xs:enumeration value="Torqueconverter"/> + <xs:enumeration value="Torqueconverter/Characteristics"/> + <xs:enumeration value="Tyre"/> + <xs:enumeration value="Vehicle"/> + <xs:enumeration value="Vehicle/Auxiliaries"/> + <xs:enumeration value="Vehicle/Axle"/> + <xs:enumeration value="Vehicle/TorqueLimits"/> + <xs:enumeration value="Gearshiftstrategy"/> + <xs:enumeration value="Vehicle/ADAS"/> + <xs:enumeration value="ElectricMachine"/> + <xs:enumeration value="ElectricMachine/VoltageLevel"/> + <xs:enumeration value="ElectricMachine/MaxMinTorque"/> + <xs:enumeration value="ElectricMachine/DragTorque"/> + <xs:enumeration value="ElectricMachine/PowerMap"/> + <xs:enumeration value="ElectricMachine/Conditioning"/> + <xs:enumeration value="IEPC"/> + <xs:enumeration value="IEPC/Gear"/> + <xs:enumeration value="IEPC/VoltageLevel"/> + <xs:enumeration value="IEPC/MaxMinTorque"/> + <xs:enumeration value="IEPC/PowerMap"/> + <xs:enumeration value="IEPC/Conditioning"/> + <xs:enumeration value="BatterySystem"/> + <xs:enumeration value="BatterySystem/OCV"/> + <xs:enumeration value="BatterySystem/DCIR"/> + <xs:enumeration value="BatterySystem/CurrentLimits"/> + <xs:enumeration value="CapacitorSystem"/> + <xs:enumeration value="IEPC/DragTorque"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="UnitType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="kg"/> + <xs:enumeration value="m"/> + <xs:enumeration value="s"/> + <xs:enumeration value="m/s²"/> + <xs:enumeration value="1/min"/> + <xs:enumeration value="°"/> + <xs:enumeration value="kgm²"/> + <xs:enumeration value="m²"/> + <xs:enumeration value="-"/> + <xs:enumeration value="N"/> + <xs:enumeration value="W"/> + <xs:enumeration value="cm³"/> + <xs:enumeration value="Nm"/> + <xs:enumeration value="g/h"/> + <xs:enumeration value="%"/> + <xs:enumeration value="km/h"/> + <xs:enumeration value="m/s"/> + <xs:enumeration value="mm"/> + <xs:enumeration value="V"/> + <xs:enumeration value="A"/> + <xs:enumeration value="°C"/> + <xs:enumeration value="F"/> + <xs:enumeration value="mOhm"/> + <xs:enumeration value="Ah"/> + </xs:restriction> + </xs:simpleType> </xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoComponent.2.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoComponent.2.1.xsd new file mode 100644 index 0000000000000000000000000000000000000000..636aa3ed2cd4de3f5d55c0f78261fefb68110099 --- /dev/null +++ b/VectoCore/VectoCore/Resources/XSD/VectoComponent.2.1.xsd @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:vdecdef1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:vdecdef2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3.xsd"/> + <xs:element name="VectoInputDeclaration"> + <xs:annotation> + <xs:documentation>Root Node Declaration Data</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:choice> + <xs:element name="Engine" type="vdecdef2.0:EngineComponentDeclarationType"/> + <xs:element name="Gearbox" type="vdecdef2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="vdecdef2.0:TorqueConverterComponentDeclarationType"/> + <xs:element name="Retarder" type="vdecdef2.0:RetarderComponentDeclarationType"/> + <xs:element name="Axlegear" type="vdecdef2.0:AxlegearComponentDeclarationType"/> + <xs:element name="Tyre" type="vdecdef2.0:TyreComponentDeclarationType"/> + <xs:element name="Angledrive" type="vdecdef2.0:AngledriveComponentDeclarationType"/> + <xs:element name="AirDrag" type="vdecdef2.0:AirDragComponentDeclarationType"/> + <xs:element name="ElectricMachineSystem" type="v2.3:ElectricMachineSystemComponentDeclarationType"/> + <xs:element name="IEPC" type="v2.3:IEPCComponentDeclarationType"/> + <xs:element name="BatterySystem" type="v2.3:BatteryComponentDeclarationType"/> + <xs:element name="CapacitorSystem" type="v2.3:CapacitorSystemComponentDeclarationType"/> + <xs:element name="ADC" type="v2.3:ADCComponentDeclarationType"/> + </xs:choice> + <xs:attribute name="schemaVersion" use="required"> + <xs:simpleType> + <xs:restriction base="xs:decimal"> + <xs:minExclusive value="0"/> + <xs:fractionDigits value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> +</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationComponent.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationComponent.xsd index 7052c4d1ab16b2c6475bb4625ee437f61a730fc8..f29249611a42f2cdb1689d272bd605dfc55f3300 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationComponent.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationComponent.xsd @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:c2.0="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:vdc="urn:tugraz:ivt:VectoAPI:DeclarationComponent" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:c2.0="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:vdc="urn:tugraz:ivt:VectoAPI:DeclarationComponent" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:ns1="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:ns2="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> <!-- This is a convienience file that imports the schema for declaration input (i.e., job data) and all supported declaration definitions @@ -8,5 +8,6 @@ --> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" schemaLocation="VectoComponent.1.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" schemaLocation="VectoComponent.2.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" schemaLocation="VectoComponent.2.1.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> </xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.0.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.0.xsd index 2862c5962a1ad1b62eebd0997c0c5c9a7c01d5bf..1cb148e1cd6066621d9b9595dee9260c43a9b9bf 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.0.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.0.xsd @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> <?xml-stylesheet type="text/xsl" href="../RenderTable.xslt"?> <xs:schema xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.2.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.2.xsd index 7215cf114389ea81500d747c27605d9883218614..d983e525fdddfa2a6e605a1fe869fd3c0976a855 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.2.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.2.xsd @@ -11,27 +11,27 @@ <xs:sequence> <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> <xs:annotation> - <xs:documentation>P230</xs:documentation> + <xs:documentation>P230 - [-]</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Model" type="v1.0:ModelType"> <xs:annotation> - <xs:documentation>P231</xs:documentation> + <xs:documentation>P231 - [-]</xs:documentation> </xs:annotation> </xs:element> <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> <xs:annotation> - <xs:documentation>P267</xs:documentation> + <xs:documentation>P267 - [-]</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> <xs:annotation> - <xs:documentation>P233</xs:documentation> + <xs:documentation>P233 - [-]</xs:documentation> </xs:annotation> </xs:element> <xs:element name="AppVersion" type="v1.0:AppVersionType"> <xs:annotation> - <xs:documentation>P234</xs:documentation> + <xs:documentation>P234 - [-]</xs:documentation> </xs:annotation> </xs:element> <xs:element name="Dimension" type="v2.2:TyreDimensionType"> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3.xsd new file mode 100644 index 0000000000000000000000000000000000000000..35d1a1850b8990913920f8f5c323784ea7f49e60 --- /dev/null +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3.xsd @@ -0,0 +1,2365 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> + <xs:complexType name="AbstractADCDataDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v1.0:AbstractAngledriveDataDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractBatterySystemDataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractREESSDataType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractCapacitorSystemDataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractREESSDataType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractElectricMachineSystemDataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v1.0:VectoSimulationComponent"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractElectricMachineSystemVoltageLevelType" abstract="true"/> + <xs:complexType name="AbstractIEPCDataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v1.0:VectoSimulationComponent"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractIEPCGearsDeclarationType" abstract="true"/> + <xs:complexType name="AbstractREESSDataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v1.0:VectoSimulationComponent"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ADCComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractADCDataDeclarationType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ADCDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractADCDataDeclarationType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P220 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P221 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P265 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P223 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P224 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Ratio" type="v1.0:AngledriveRatioType"> + <xs:annotation> + <xs:documentation>P176 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationMethod" type="v1.0:AngledriveCertificationOptionType"> + <xs:annotation> + <xs:documentation>P258 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TorqueLossMap"> + <xs:complexType> + <xs:sequence minOccurs="4" maxOccurs="unbounded"> + <xs:element name="Entry" type="v2.0:AngledriveLossMapEntryType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BatteryComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractBatterySystemDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="BatterySystemCurrentLimitsEntryType"> + <xs:attribute name="SoC" type="v2.3:BatterySoCType" use="required"> + <xs:annotation> + <xs:documentation>P529 - [%]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="maxChargingCurrent" type="v2.3:BatteryMaxCurrentType" use="required"> + <xs:annotation> + <xs:documentation>P530 - A]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="maxDischargingCurrent" type="v2.3:BatteryMaxCurrentType" use="required"> + <xs:annotation> + <xs:documentation>P531 - [A]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="BatterySystemDataType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractBatterySystemDataType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P511 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">511</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P512 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">512</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P513 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">513</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P514 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">514</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P515 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">515</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationMethod" type="v2.3:CertificationMethodType"> + <xs:annotation> + <xs:documentation>P516 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="BatteryType" type="v2.3:BatteryTypeType"> + <xs:annotation> + <xs:documentation>P517 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RatedCapacity"> + <xs:annotation> + <xs:documentation>P518 - [Ah]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">518</vectoParam:parameterId> + <vectoParam:unit>Ah</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="ConnectorsSubsystemsIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P519 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">519</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="JunctionboxIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P520 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">520</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="TestingTemperature" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:documentation>P521 - [°C]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">521</vectoParam:parameterId> + <vectoParam:unit>°C</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="OCV"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:BatterySystemOCVEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="InternalResistance"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:BatterySystemInternalResistanceEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="CurrentLimits"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:BatterySystemCurrentLimitsEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BatterySystemInternalResistanceEntryType"> + <xs:attribute name="SoC" type="v2.3:BatterySoCType" use="required"> + <xs:annotation> + <xs:documentation>P524 - [%]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="R_2" type="v2.3:InternalResistanceType" use="required"> + <xs:annotation> + <xs:documentation>P525 - [mOhm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="R_10" type="v2.3:InternalResistanceType" use="required"> + <xs:annotation> + <xs:documentation>P526 - [mOhm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="R_20" type="v2.3:InternalResistanceType" use="required"> + <xs:annotation> + <xs:documentation>P527 - [mOhm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="R_120" type="v2.3:InternalResistanceType"> + <xs:annotation> + <xs:documentation>P528 - [mOhm]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="BatterySystemOCVEntryType"> + <xs:attribute name="SoC" type="v2.3:BatterySoCType" use="required"> + <xs:annotation> + <xs:documentation>P522 - [%]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="OCV" type="v2.3:BatteryOCVType" use="required"> + <xs:annotation> + <xs:documentation>P523 - [V]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="CapacitorSystemComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractCapacitorSystemDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="CapacitorSystemDataType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractCapacitorSystemDataType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P532 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">532</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P533 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">533</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P534 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">534</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P535 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">535</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P536 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">536</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationMethod" type="v2.3:CertificationMethodType"> + <xs:annotation> + <xs:documentation>P537 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">537</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Capacitance" type="v2.3:CapacitanceType"> + <xs:annotation> + <xs:documentation>P538 - [F]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">538</vectoParam:parameterId> + <vectoParam:unit>F</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="InternalResistance" type="v2.3:InternalResistanceType"> + <xs:annotation> + <xs:documentation>P539 - [mOhm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">539</vectoParam:parameterId> + <vectoParam:unit>mOhm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="MinVoltage" type="v2.3:CapacitorVoltageType"> + <xs:annotation> + <xs:documentation>P540 - [V]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">540</vectoParam:parameterId> + <vectoParam:unit>V</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="MaxVoltage" type="v2.3:CapacitorVoltageType"> + <xs:annotation> + <xs:documentation>P541 - [V]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxChargingCurrent" type="v2.3:CapacitorMaxCurrentType"> + <xs:annotation> + <xs:documentation>P542 - [A]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxDischargingCurrent" type="v2.3:CapacitorMaxCurrentType"> + <xs:annotation> + <xs:documentation>P543 - [A]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestingTemperature" type="xs:int" minOccurs="0"> + <xs:annotation> + <xs:documentation>P544 - [°C]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">544</vectoParam:parameterId> + <vectoParam:unit>°C</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractElectricMachineSystemDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemConditioningEntryType"> + <xs:attribute name="coolantTempInlet" type="v2.3:CoolantTempInletType" use="required"> + <xs:annotation> + <xs:documentation>P476 - [°C]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="coolingPower" type="v2.3:CoolingPowerType" use="required"> + <xs:annotation> + <xs:documentation>P477 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemDragTorqueEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P471 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="dragTorque" type="v2.3:DragTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P472 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemIHPCMeasuredDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemDataType"> + <xs:sequence> + <xs:group ref="v2.3:ElectricMachineSystemCommonParametersSequenceGroup"/> + <xs:element name="CertificationMethod"> + <xs:annotation> + <xs:documentation>P456 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">456</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:CertificationMethodType"> + <xs:enumeration value="Measured"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.3:ElectricMachineSystemPowerRatingsSequenceGroup"/> + <xs:element name="DcDcConverterIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P465 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">465</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="IHPCType"> + <xs:annotation> + <xs:documentation>P466 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">466</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:IHPCTypeType"> + <xs:enumeration value="IHPC Type 1"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="VoltageLevel" type="v2.3:ElectricMachineSystemIHPCVoltageLevelMeasuredType" minOccurs="2" maxOccurs="unbounded"/> + <xs:element name="DragCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemDragTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Conditioning" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemConditioningEntryType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemIHPCVoltageLevelMeasuredType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemVoltageLevelType"> + <xs:sequence> + <xs:element name="Voltage" type="v2.3:VoltageLevelVoltageType"> + <xs:annotation> + <xs:documentation>P467 - [V]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ContinuousTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P459 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedContinuousTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P460 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P461 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedOverloadTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P462 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadDuration" type="v2.3:OverloadDurationType"> + <xs:annotation> + <xs:documentation>P463 - [s]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxTorqueCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemMaxTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PowerMap" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemPowerMapEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="gear" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemMaxTorqueCurveType"> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemMaxTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemMaxTorqueEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P468 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="maxTorque" type="v2.3:maxTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P469 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="minTorque" type="v2.3:minTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P470 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemMeasuredDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemDataType"> + <xs:sequence> + <xs:group ref="v2.3:ElectricMachineSystemCommonParametersSequenceGroup"/> + <xs:element name="CertificationMethod"> + <xs:annotation> + <xs:documentation>P456 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">456</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:CertificationMethodType"> + <xs:enumeration value="Measured"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.3:ElectricMachineSystemPowerRatingsSequenceGroup"/> + <xs:element name="DcDcConverterIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P465 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">465</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="IHPCType"> + <xs:annotation> + <xs:documentation>P466 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:IHPCTypeType"> + <xs:enumeration value="None"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="VoltageLevel" type="v2.3:ElectricMachineSystemVoltageLevelMeasuredType" minOccurs="2" maxOccurs="unbounded"/> + <xs:element name="DragCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemDragTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Conditioning" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemConditioningEntryType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemPowerMapEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P473 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="torque" type="v2.3:PowerMapTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P474 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="electricPower" type="v2.3:PowerMapElectricPowerType" use="required"> + <xs:annotation> + <xs:documentation>P475 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemStandardValuesDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemDataType"> + <xs:sequence> + <xs:group ref="v2.3:ElectricMachineSystemCommonParametersSequenceGroup"/> + <xs:element name="CertificationMethod"> + <xs:annotation> + <xs:documentation>P456 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">456</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:CertificationMethodType"> + <xs:enumeration value="Standard values"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.3:ElectricMachineSystemPowerRatingsSequenceGroup"/> + <xs:element name="DcDcConverterIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P465 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">465</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="IHPCType"> + <xs:annotation> + <xs:documentation>P466 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">466</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:IHPCTypeType"> + <xs:enumeration value="None"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="VoltageLevel" type="v2.3:ElectricMachineSystemVoltageLevelStandardValuesType"/> + <xs:element name="DragCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemDragTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemVoltageLevelMeasuredType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemVoltageLevelType"> + <xs:sequence> + <xs:element name="Voltage" type="v2.3:VoltageLevelVoltageType"> + <xs:annotation> + <xs:documentation>P467 - [V]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ContinuousTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P459 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedContinuousTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P460 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P461 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedOverloadTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P462 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadDuration" type="v2.3:OverloadDurationType"> + <xs:annotation> + <xs:documentation>P463 - [s]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxTorqueCurve" type="v2.3:ElectricMachineSystemMaxTorqueCurveType"/> + <xs:element name="PowerMap"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemPowerMapEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineSystemVoltageLevelStandardValuesType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemVoltageLevelType"> + <xs:sequence> + <xs:element name="ContinuousTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P459 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedContinuousTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P460 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P461 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedOverloadTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P462 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadDuration" type="v2.3:OverloadDurationType"> + <xs:annotation> + <xs:documentation>P463 - [s]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxTorqueCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemMaxTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PowerMap"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:ElectricMachineSystemPowerMapEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="EngineDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v1.0:AbstractCombustionEngineDataDeclarationType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P200 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P201 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P261 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P203 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P204 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Displacement" type="v1.0:EngineDisplacementType" nillable="false"> + <xs:annotation> + <xs:documentation>P061 - [cm³]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RatedSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P249 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RatedPower" type="v1.0:EngineRatedPower"> + <xs:annotation> + <xs:documentation>P250 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxEngineTorque" type="v1.0:EngineMaxTorque"> + <xs:annotation> + <xs:documentation>P259 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="WHRType" type="v2.3:WHRTypeType"/> + <xs:element name="Mode" type="v2.3:EngineFuelModeType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="EngineFuelModeType"> + <xs:sequence> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P063 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="FullLoadAndDragCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v1.0:FullLoadAndDragCurveEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Fuel" type="v2.3:EngineFuelType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="EngineFuelType"> + <xs:sequence> + <xs:element name="WHTCUrban" type="v1.0:EngineWHTCType"> + <xs:annotation> + <xs:documentation>P109 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="WHTCRural" type="v1.0:EngineWHTCType"> + <xs:annotation> + <xs:documentation>P110 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="WHTCMotorway" type="v1.0:EngineWHTCType"> + <xs:annotation> + <xs:documentation>P111 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="BFColdHot" type="v1.0:EngineColdHotBalancingFactorType"> + <xs:annotation> + <xs:documentation>P159 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CFRegPer" type="v1.0:EngineCFRegPerType"> + <xs:annotation> + <xs:documentation>P192 [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CFNCV" type="v1.0:EngineNCVCFType"> + <xs:annotation> + <xs:documentation>P260 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="WHRCorrectionFactors" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Electrical" type="v2.3:WHRElectricalCorrectionFactorsType" minOccurs="0"/> + <xs:element name="Mechanical" type="v2.3:WHRMechanicalCorrectionFactorsType" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="FuelConsumptionMap"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:FuelConsumptionEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + <xs:attribute name="type" type="v1.0:FuelTypeType" use="required"> + <xs:annotation> + <xs:documentation>P193 [enum]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="FuelConsumptionEntryType"> + <xs:attribute name="engineSpeed" type="v1.0:EngineSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P072 - [1/min]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="torque" type="v1.0:EngineFuelConsumptionMapTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P073 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="fuelConsumption" type="v1.0:EngineFuelConsumptionMapFuelConsumptionType" use="required"> + <xs:annotation> + <xs:documentation>P074 - [g/h]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="electricPower" type="v1.0:Double2"> + <xs:annotation> + <xs:documentation>P348 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="mechanicalPower" type="v1.0:Double2"> + <xs:annotation> + <xs:documentation>P349 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="GearboxDataDeclarationType"> + <xs:annotation> + <xs:documentation>Gearbox Component</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v1.0:AbstractTransmissionDataDeclarationType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P205 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P206 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P262 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P208 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P209 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TransmissionType" type="v2.3:GearboxTransmissionTypeType"> + <xs:annotation> + <xs:documentation>P076 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MainCertificationMethod" type="v1.0:GearboxCertificationOptionType"> + <xs:annotation> + <xs:documentation>P254 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Gears" type="v2.0:AbstractGearsDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="GearboxFWDDataDeclarationType"> + <xs:annotation> + <xs:documentation>Gearbox Component</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v1.0:AbstractTransmissionDataDeclarationType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P205 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P206 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P262 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P208 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P209 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TransmissionType" type="v1.0:GearboxTransmissionTypeType"> + <xs:annotation> + <xs:documentation>P076 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MainCertificationMethod" type="v1.0:GearboxCertificationOptionType"> + <xs:annotation> + <xs:documentation>P254 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DifferentialIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P353 - [bool]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxlegearRatio" type="v1.0:Double3"> + <xs:annotation> + <xs:documentation>P150 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Gears" type="v2.0:AbstractGearsDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="IEPCComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractIEPCDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="IEPCGearDeclarationType"> + <xs:sequence> + <xs:element name="Ratio" type="v1.0:GearboxGearRatioType"> + <xs:annotation> + <xs:documentation>P497 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxOutShaftTorque" minOccurs="0"> + <xs:annotation> + <xs:documentation>P498 - [Nm]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="MaxOutShaftSpeed" minOccurs="0"> + <xs:annotation> + <xs:documentation>P499 - [1/min]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + <xs:attribute name="number" type="v1.0:GearboxGearNumberType" use="required"> + <xs:annotation> + <xs:documentation>P496 - [-]</xs:documentation> + <xs:appinfo> + </xs:appinfo> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="IEPCGearsDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractIEPCGearsDeclarationType"> + <xs:sequence> + <xs:element name="Gear" type="v2.3:IEPCGearDeclarationType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="IEPCMeasuredDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractIEPCDataType"> + <xs:sequence> + <xs:group ref="v2.3:IEPCCommonParametersSequenceGroup"/> + <xs:element name="CertificationMethod"> + <xs:annotation> + <xs:documentation>P484 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:IEPCCertificationMethodType"> + <xs:enumeration value="Measured for complete component"/> + <xs:enumeration value="Measured for EM and standard values for other components"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.3:IEPCPowerRatingsSequenceGroup"/> + <xs:element name="DifferentialIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P493 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">493</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="DesignTypeWheelMotor" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P494 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">494</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="NrOfDesignTypeWheelMotorMeasured" type="v2.3:NrOfDesignTypeWheelMotorMeasuredType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P495 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Gears" type="v2.3:AbstractIEPCGearsDeclarationType"/> + <xs:element name="VoltageLevel" type="v2.3:IEPCSystemVoltageLevelMeasuredType" minOccurs="2" maxOccurs="unbounded"/> + <xs:element name="DragCurve" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemDragTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="gear" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + <xs:element name="Conditioning" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemConditioningEntryType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="IEPCStandardValuesDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractIEPCDataType"> + <xs:sequence> + <xs:group ref="v2.3:IEPCCommonParametersSequenceGroup"/> + <xs:element name="CertificationMethod"> + <xs:annotation> + <xs:documentation>P484 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v2.3:IEPCCertificationMethodType"> + <xs:enumeration value="Standard values for all components"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.3:IEPCPowerRatingsSequenceGroup"/> + <xs:element name="DifferentialIncluded" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P493 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="DesignTypeWheelMotor" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P494 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NrOfDesignTypeWheelMotorMeasured" type="v2.3:NrOfDesignTypeWheelMotorMeasuredType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P495 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Gears" type="v2.3:AbstractIEPCGearsDeclarationType"/> + <xs:element name="VoltageLevel" type="v2.3:IEPCSystemVoltageLevelStandardValuesType"/> + <xs:element name="DragCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemDragTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="IEPCSystemConditioningEntryType"> + <xs:attribute name="coolantTempInlet" type="v2.3:CoolantTempInletType" use="required"> + <xs:annotation> + <xs:documentation>P509 - [°C]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="coolingPower" type="v2.3:CoolingPowerType" use="required"> + <xs:annotation> + <xs:documentation>P510 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="IEPCSystemDragTorqueEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P504 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="dragTorque" type="v2.3:DragTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P505 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="IEPCSystemMaxTorqueEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P501 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="maxTorque" type="v2.3:maxTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P502 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="minTorque" type="v2.3:minTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P503 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="IEPCSystemPowerMapEntryType"> + <xs:attribute name="outShaftSpeed" type="v2.3:OutShaftSpeedType" use="required"> + <xs:annotation> + <xs:documentation>P506 - [rpm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="torque" type="v2.3:PowerMapTorqueType" use="required"> + <xs:annotation> + <xs:documentation>P507 - [Nm]</xs:documentation> + </xs:annotation> + </xs:attribute> + <xs:attribute name="electricPower" type="v2.3:PowerMapElectricPowerType" use="required"> + <xs:annotation> + <xs:documentation>P508 - [W]</xs:documentation> + </xs:annotation> + </xs:attribute> + </xs:complexType> + <xs:complexType name="IEPCSystemVoltageLevelMeasuredType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemVoltageLevelType"> + <xs:sequence> + <xs:element name="Voltage" type="v2.3:VoltageLevelVoltageType"> + <xs:annotation> + <xs:documentation>P500 - [V]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ContinuousTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P487 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedContinuousTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P488 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P489 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedOverloadTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P490 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadDuration" type="v2.3:OverloadDurationType"> + <xs:annotation> + <xs:documentation>P491 - [s]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxTorqueCurve" type="v2.3:ElectricMachineSystemMaxTorqueCurveType"/> + <xs:element name="PowerMap" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemPowerMapEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="gear" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="IEPCSystemVoltageLevelStandardValuesType"> + <xs:complexContent> + <xs:extension base="v2.3:AbstractElectricMachineSystemVoltageLevelType"> + <xs:sequence> + <xs:element name="ContinuousTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P487 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedContinuousTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P488 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadTorque" type="v2.3:MaxTorqueType"> + <xs:annotation> + <xs:documentation>P489 - [Nm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TestSpeedOverloadTorque" type="v2.3:TestSpeedType"> + <xs:annotation> + <xs:documentation>P490 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OverloadDuration" type="v2.3:OverloadDurationType"> + <xs:annotation> + <xs:documentation>P491 - [s]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxTorqueCurve"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemMaxTorqueEntryType" minOccurs="2" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PowerMap"> + <xs:complexType> + <xs:sequence> + <xs:element name="Entry" type="v2.3:IEPCSystemPowerMapEntryType" minOccurs="4" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="REESSComponentDeclarationType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractREESSDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="TyreDataDeclarationType"> + <xs:complexContent> + <xs:extension base="v1.0:AbstractTyreDataDeclarationType"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P230 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P231 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P267 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P233 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P234 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Dimension" type="v2.3:TyreDimensionType"> + <xs:annotation> + <xs:documentation>P108 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TyreClass"> + <xs:annotation> + <xs:documentation>P370 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Tyre">370</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:enumeration value="C1"/> + <xs:enumeration value="C2"/> + <xs:enumeration value="C3"/> + <xs:enumeration value="N/A"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="FuelEfficiencyClass"> + <xs:annotation> + <xs:documentation>P371 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Tyre">371</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="A"/> + <xs:enumeration value="B"/> + <xs:enumeration value="C"/> + <xs:enumeration value="D"/> + <xs:enumeration value="E"/> + <xs:enumeration value="F"/> + <xs:enumeration value="G"/> + <xs:enumeration value="N/A"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="RRCDeclared" type="v1.0:TyreRRCISOType"> + <xs:annotation> + <xs:documentation>P046 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="FzISO" type="v1.0:TyreFzISOType"> + <xs:annotation> + <xs:documentation>P047 - [N]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="WHRElectricalCorrectionFactorsType"> + <xs:sequence> + <xs:element name="Urban"> + <xs:annotation> + <xs:documentation>P338 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Rural"> + <xs:annotation> + <xs:documentation>P339 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Motorway"> + <xs:annotation> + <xs:documentation>P340 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="BFColdHot"> + <xs:annotation> + <xs:documentation>P341 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="CFRegPer"> + <xs:annotation> + <xs:documentation>P342 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="WHRMechanicalCorrectionFactorsType"> + <xs:sequence> + <xs:element name="Urban"> + <xs:annotation> + <xs:documentation>P343 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Rural"> + <xs:annotation> + <xs:documentation>P344 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Motorway"> + <xs:annotation> + <xs:documentation>P345 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="BFColdHot"> + <xs:annotation> + <xs:documentation>P346 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="CFRegPer"> + <xs:annotation> + <xs:documentation>P347 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double4"> + <xs:minExclusive value="0.0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="WHRTypeType"> + <xs:sequence> + <xs:element name="MechanicalOutputICE" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P335 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MechanicalOutputDrivetrain" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P336 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ElectricalOutput" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P337 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:simpleType name="AuxSPTechnologyType"> + <xs:annotation> + <xs:documentation>P182</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle/Auxiliaries">182</vectoParam:parameterId> + <vectoParam:comment>Multiple entires allowed, one per steered axle</vectoParam:comment> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Fixed displacement"/> + <xs:enumeration value="Fixed displacement with elec. control"/> + <xs:enumeration value="Dual displacement with mech. control"/> + <xs:enumeration value="Dual displacement with elec. control"/> + <xs:enumeration value="Variable displacement mech. controlled"/> + <xs:enumeration value="Variable displacement elec. controlled"/> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BatteryMaxCurrentType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem/CurrentLimits">530</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/CurrentLimits">531</vectoParam:parameterId> + <vectoParam:unit>A</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BatteryOCVType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem/OCV">523</vectoParam:parameterId> + <vectoParam:unit>V</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BatterySoCType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem/OCV">522</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/DCIR">524</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/CurrentLimits">529</vectoParam:parameterId> + <vectoParam:unit>%</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="100"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="BatteryTypeType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem">517</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="HPBS"/> + <xs:enumeration value="HEBS"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CapacitanceType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">538</vectoParam:parameterId> + <vectoParam:unit>F</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CapacitorMaxCurrentType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">542</vectoParam:parameterId> + <vectoParam:parameterId component="CapacitorSystem">543</vectoParam:parameterId> + <vectoParam:unit>A</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CapacitorVoltageType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="CapacitorSystem">540</vectoParam:parameterId> + <vectoParam:parameterId component="CapacitorSystem">541</vectoParam:parameterId> + <vectoParam:unit>V</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CertificationMethodType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">456</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">484</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem">516</vectoParam:parameterId> + <vectoParam:parameterId component="CapacitorSystem">537</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Measured"/> + <xs:enumeration value="Standard values"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="CoolantTempInletType"> + <xs:annotation> + <xs:documentation>P476, P509 - [°C]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/Conditioning">476</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/Conditioning">509</vectoParam:parameterId> + <vectoParam:unit>°C</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"/> + </xs:simpleType> + <xs:simpleType name="CoolingPowerType"> + <xs:annotation> + <xs:documentation>P477, P510 - [W]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/Conditioning">477</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/Conditioning">510</vectoParam:parameterId> + <vectoParam:unit>W</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"/> + </xs:simpleType> + <xs:simpleType name="DragTorqueType"> + <xs:annotation> + <xs:documentation>P472, P505 - [Nm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/DragTorque">472</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/DragTorque">505</vectoParam:parameterId> + <vectoParam:unit>Nm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"/> + </xs:simpleType> + <xs:simpleType name="ElectricMachineTypeType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">455</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">483</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="ASM"/> + <xs:enumeration value="ESM"/> + <xs:enumeration value="PSM"/> + <xs:enumeration value="RM"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="GearboxTransmissionTypeType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Gearbox">076</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P076 - [-]</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="SMT"/> + <xs:enumeration value="AMT"/> + <xs:enumeration value="APT-S"/> + <xs:enumeration value="APT-P"/> + <xs:enumeration value="APT-N"/> + <xs:enumeration value="IHPC Type 1"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="IEPCCertificationMethodType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Measured for complete component"/> + <xs:enumeration value="Measured for EM and standard values for other components"/> + <xs:enumeration value="Standard values for all components"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="IHPCTypeType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">466</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="None"/> + <xs:enumeration value="IHPC Type 1"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="InternalResistanceType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="BatterySystem/DCIR">525</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/DCIR">526</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/DCIR">527</vectoParam:parameterId> + <vectoParam:parameterId component="BatterySystem/DCIR">528</vectoParam:parameterId> + <vectoParam:unit>mOhm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="MaxTorqueType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">459</vectoParam:parameterId> + <vectoParam:parameterId component="ElectricMachine">461</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">487</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">489</vectoParam:parameterId> + <vectoParam:unit>Nm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="maxTorqueType"> + <xs:annotation> + <xs:documentation>P469, P502 - [Nm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/MaxMinTorque">469</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/MaxMinTorque">502</vectoParam:parameterId> + <vectoParam:unit>Nm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="minTorqueType"> + <xs:annotation> + <xs:documentation>P470, P503 - [Nm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/MaxMinTorque">470</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/MaxMinTorque">503</vectoParam:parameterId> + <vectoParam:unit>Nm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:maxInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="NrOfDesignTypeWheelMotorMeasuredType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">495</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:enumeration value="1"/> + <xs:enumeration value="2"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OutShaftSpeedType"> + <xs:annotation> + <xs:documentation>P468, P471, P473, P501, P504, P506 - [rpm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/MaxMinTorque">468</vectoParam:parameterId> + <vectoParam:parameterId component="ElectricMachine/PowerMap">473</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/MaxMinTorque">501</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/PowerMap">506</vectoParam:parameterId> + <vectoParam:parameterId component="ElectricMachine/DragTorque">471</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/DragTorque">504</vectoParam:parameterId> + <vectoParam:unit>1/min</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="OverloadDurationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">463</vectoParam:parameterId> + <vectoParam:unit>s</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PowerMapElectricPowerType"> + <xs:annotation> + <xs:documentation>P475, P508 - [W]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/PowerMap">475</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/PowerMap">508</vectoParam:parameterId> + <vectoParam:unit>W</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"/> + </xs:simpleType> + <xs:simpleType name="PowerMapTorqueType"> + <xs:annotation> + <xs:documentation>P474, P507 - [Nm]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/PowerMap">474</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/PowerMap">507</vectoParam:parameterId> + <vectoParam:unit>Nm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"/> + </xs:simpleType> + <xs:simpleType name="R85RatedPowerType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">457</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">483</vectoParam:parameterId> + <vectoParam:unit>W</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="RotationalInertiaType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">458</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">486</vectoParam:parameterId> + <vectoParam:unit>kgm²</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="TestSpeedType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">460</vectoParam:parameterId> + <vectoParam:parameterId component="ElectricMachine">462</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">488</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC">490</vectoParam:parameterId> + <vectoParam:unit>1/min</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="v1.0:Double2"> + <xs:minExclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="TyreDimensionType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Tyre">108</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P108 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="9 R22.5"/> + <xs:enumeration value="9.00 R20"/> + <xs:enumeration value="9.5 R17.5"/> + <xs:enumeration value="10 R17.5"/> + <xs:enumeration value="10 R22.5"/> + <xs:enumeration value="10.00 R20"/> + <xs:enumeration value="11 R22.5"/> + <xs:enumeration value="11.00 R20"/> + <xs:enumeration value="12 R22.5"/> + <xs:enumeration value="12.00 R20"/> + <xs:enumeration value="12.00 R24"/> + <xs:enumeration value="12.5 R20"/> + <xs:enumeration value="13 R22.5"/> + <xs:enumeration value="14.00 R20"/> + <xs:enumeration value="14.5 R20"/> + <xs:enumeration value="16.00 R20"/> + <xs:enumeration value="205/75 R17.5"/> + <xs:enumeration value="215/75 R17.5"/> + <xs:enumeration value="225/70 R17.5"/> + <xs:enumeration value="225/75 R17.5"/> + <xs:enumeration value="235/75 R17.5"/> + <xs:enumeration value="245/70 R17.5"/> + <xs:enumeration value="245/70 R19.5"/> + <xs:enumeration value="255/70 R22.5"/> + <xs:enumeration value="265/70 R17.5"/> + <xs:enumeration value="265/70 R19.5"/> + <xs:enumeration value="275/70 R22.5"/> + <xs:enumeration value="275/80 R22.5"/> + <xs:enumeration value="285/60 R22.5"/> + <xs:enumeration value="285/70 R19.5"/> + <xs:enumeration value="295/55 R22.5"/> + <xs:enumeration value="295/60 R22.5"/> + <xs:enumeration value="295/80 R22.5"/> + <xs:enumeration value="305/60 R22.5"/> + <xs:enumeration value="305/70 R19.5"/> + <xs:enumeration value="305/70 R22.5"/> + <xs:enumeration value="305/75 R24.5"/> + <xs:enumeration value="315/45 R22.5"/> + <xs:enumeration value="315/60 R22.5"/> + <xs:enumeration value="315/70 R22.5"/> + <xs:enumeration value="315/80 R22.5"/> + <xs:enumeration value="325/95 R24"/> + <xs:enumeration value="335/80 R20"/> + <xs:enumeration value="355/50 R22.5"/> + <xs:enumeration value="365/70 R22.5"/> + <xs:enumeration value="365/80 R20"/> + <xs:enumeration value="365/85 R20"/> + <xs:enumeration value="375/45 R22.5"/> + <xs:enumeration value="375/50 R22.5"/> + <xs:enumeration value="375/90 R22.5"/> + <xs:enumeration value="385/55 R22.5"/> + <xs:enumeration value="385/65 R22.5"/> + <xs:enumeration value="395/85 R20"/> + <xs:enumeration value="425/65 R22.5"/> + <xs:enumeration value="495/45 R22.5"/> + <xs:enumeration value="525/65 R20.5"/> + <xs:enumeration value="11.00 R16"/> + <xs:enumeration value="6.00 R9"/> + <xs:enumeration value="205/65 R17.5"/> + <xs:enumeration value="225/75 R16C"/> + <xs:enumeration value="255/100 R16"/> + <xs:enumeration value="255/60 R19.5"/> + <xs:enumeration value="265/55 R19.5"/> + <xs:enumeration value="275/60 R19.5"/> + <xs:enumeration value="275/80 R20"/> + <xs:enumeration value="285/65 R16C"/> + <xs:enumeration value="295/75 R22.5"/> + <xs:enumeration value="325/85 R16"/> + <xs:enumeration value="435/50 R19.5"/> + <xs:enumeration value="435/50 R22.5"/> + <xs:enumeration value="445/40 R22.5"/> + <xs:enumeration value="445/45 R19.5"/> + <xs:enumeration value="445/65 R22.5"/> + <xs:enumeration value="445/75 R22.5"/> + <xs:enumeration value="455/40 R22.5"/> + <xs:enumeration value="455/45 R22.5"/> + <xs:enumeration value="475/80 R20"/> + <xs:enumeration value="7.00 R16C"/> + <xs:enumeration value="7.50 R15"/> + <xs:enumeration value="7.50 R16"/> + <xs:enumeration value="7.50 R16C"/> + <xs:enumeration value="8.25 R15"/> + <xs:enumeration value="8.25 R16C"/> + <xs:enumeration value="8.5 R17.5"/> + <xs:enumeration value="8 R17.5"/> + <xs:enumeration value="LT265/75 R16"/> + <xs:enumeration value="385/55 R19.5"/> + <xs:enumeration value="24 R21"/> + <xs:enumeration value="205/70 R15C"/> + <xs:enumeration value="215/70 R15C"/> + <xs:enumeration value="225/70 R15C"/> + <xs:enumeration value="185/75 R16C"/> + <xs:enumeration value="195/65 R16C"/> + <xs:enumeration value="195/75 R16C"/> + <xs:enumeration value="205/65 R16C"/> + <xs:enumeration value="205/75 R16C"/> + <xs:enumeration value="215/65 R16C"/> + <xs:enumeration value="215/75 R16C"/> + <xs:enumeration value="225/65 R16C"/> + <xs:enumeration value="235/65 R16C"/> + <xs:enumeration value="215/60 R17C"/> + <xs:enumeration value="235/60 R17C"/> + <xs:enumeration value="425/55 R19.5"/> + <xs:enumeration value="425/55 R19.5"/> + <xs:enumeration value="205/80 R 15"/> + <xs:enumeration value="205/70 R 15"/> + <xs:enumeration value="205/70 R17C"/> + <xs:enumeration value="285/55 R16C"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="VoltageLevelVoltageType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine/VoltageLevel">467</vectoParam:parameterId> + <vectoParam:parameterId component="IEPC/VoltageLevel">500</vectoParam:parameterId> + <vectoParam:unit>V</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + <xs:group name="ElectricMachineSystemCommonParametersSequenceGroup"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P450 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">450</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P451 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">451</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P452 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">452</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P453 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">453</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P454 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">454</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ElectricMachineType" type="v2.3:ElectricMachineTypeType"> + <xs:annotation> + <xs:documentation>P455 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="ElectricMachine">455</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="ElectricMachineSystemPowerRatingsSequenceGroup"> + <xs:sequence> + <xs:element name="R85RatedPower" type="v2.3:R85RatedPowerType"> + <xs:annotation> + <xs:documentation>P457 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RotationalInertia" type="v2.3:RotationalInertiaType"> + <xs:annotation> + <xs:documentation>P458 - [kgm²]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="IEPCCommonParametersSequenceGroup"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P478 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">478</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P479 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">479</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> + <xs:annotation> + <xs:documentation>P480 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">480</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P481 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">481</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="AppVersion" type="v1.0:AppVersionType"> + <xs:annotation> + <xs:documentation>P482 - [-]</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="IEPC">482</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ElectricMachineType" type="v2.3:ElectricMachineTypeType"> + <xs:annotation> + <xs:documentation>P483 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="IEPCPowerRatingsSequenceGroup"> + <xs:sequence> + <xs:element name="R85RatedPower" type="v2.3:R85RatedPowerType"> + <xs:annotation> + <xs:documentation>P485 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RotationalInertia" type="v2.3:RotationalInertiaType"> + <xs:annotation> + <xs:documentation>P486 [ kgm2]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> +</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3_DEV.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3_DEV.xsd deleted file mode 100644 index 6d0b3d17a604d82700205f812631c9f3b50666aa..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.3_DEV.xsd +++ /dev/null @@ -1,508 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> -<xs:schema xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" schemaLocation="VectoDeclarationDefinitions.2.2.xsd"/> - <xs:complexType name="AdvancedDriverAssistantSystemsType"> - <xs:complexContent> - <xs:extension base="v2.1:AbstractAdvancedDriverAssistantSystemsType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle/ADAS">333</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:sequence> - <xs:element name="EngineStopStart" type="v2.1:EngineStopStartType"/> - <xs:element name="EcoRollWithoutEngineStop" type="v2.1:EcoRollWithoutEngineStopType"/> - <xs:element name="EcoRollWithEngineStop" type="v2.1:EcoRollWithEngineStopType"/> - <xs:element name="PredictiveCruiseControl" type="v2.1:PredictiveCruiseControlType"/> - <xs:element name="APTEcoRollReleaseLockupClutch" type="xs:boolean" minOccurs="0"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="AuxiliariesDataDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractAuxiliaryDataDeclarationType"> - <xs:sequence> - <xs:element name="Fan"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" type="v1.0:AuxFanTechnologyType"> - <xs:annotation> - <xs:documentation>P181</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="SteeringPump"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" type="v2.3:AuxSPTechnologyType" maxOccurs="4"> - <xs:annotation> - <xs:documentation>P182</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="ElectricSystem"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" type="v1.0:AuxESTechnologyType"> - <xs:annotation> - <xs:documentation>P183</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="PneumaticSystem"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" type="v1.0:AuxPSTechnologyType"> - <xs:annotation> - <xs:documentation>P184</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="HVAC"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" type="v1.0:AuxHVACTechnologyType"> - <xs:annotation> - <xs:documentation>P185</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="EngineDataDeclarationType"> - <xs:complexContent> - <xs:extension base="v1.0:AbstractCombustionEngineDataDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P200</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P201</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> - <xs:annotation> - <xs:documentation>P261</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P203</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AppVersion" type="v1.0:AppVersionType"> - <xs:annotation> - <xs:documentation>P204</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Displacement" type="v1.0:EngineDisplacementType" nillable="false"> - <xs:annotation> - <xs:documentation>P061 - [cm³]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RatedSpeed" type="v1.0:EngineDeclaredSpeedType"> - <xs:annotation> - <xs:documentation>P249 - [1/min]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RatedPower" type="v1.0:EngineRatedPower"> - <xs:annotation> - <xs:documentation>P250 - [W]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MaxEngineTorque" type="v1.0:EngineMaxTorque"> - <xs:annotation> - <xs:documentation>P259 - [Nm]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="WHRType" type="v2.3:WHRTypeType"/> - <xs:element name="Mode" type="v2.3:EngineFuelModeType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="EngineFuelModeType"> - <xs:sequence> - <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> - <xs:annotation> - <xs:documentation>P063 - [1/min]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="FullLoadAndDragCurve"> - <xs:complexType> - <xs:sequence> - <xs:element name="Entry" type="v1.0:FullLoadAndDragCurveEntryType" minOccurs="2" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="Fuel" type="v2.3:EngineFuelType" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="EngineFuelType"> - <xs:sequence> - <xs:element name="WHTCUrban" type="v1.0:EngineWHTCType"> - <xs:annotation> - <xs:documentation>P109 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="WHTCRural" type="v1.0:EngineWHTCType"> - <xs:annotation> - <xs:documentation>P110 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="WHTCMotorway" type="v1.0:EngineWHTCType"> - <xs:annotation> - <xs:documentation>P111 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="BFColdHot" type="v1.0:EngineColdHotBalancingFactorType"> - <xs:annotation> - <xs:documentation>P159 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CFRegPer" type="v1.0:EngineCFRegPerType"> - <xs:annotation> - <xs:documentation>P192 [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CFNCV" type="v1.0:EngineNCVCFType"> - <xs:annotation> - <xs:documentation>P260 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="WHRCorrectionFactors" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="Electrical" type="v2.3:WHRCorrectionFactorsType" minOccurs="0"/> - <xs:element name="Mechanical" type="v2.3:WHRCorrectionFactorsType" minOccurs="0"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="FuelConsumptionMap"> - <xs:complexType> - <xs:sequence> - <xs:element name="Entry" type="v2.3:FuelConsumptionEntryType" minOccurs="4" maxOccurs="unbounded"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:attribute name="type" type="v1.0:FuelTypeType" use="required"> - <xs:annotation> - <xs:documentation>P193 [enum]</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:complexType name="FuelConsumptionEntryType"> - <xs:attribute name="engineSpeed" type="v1.0:EngineSpeedType" use="required"> - <xs:annotation> - <xs:documentation>P072 - [1/min]</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="torque" type="v1.0:EngineFuelConsumptionMapTorqueType" use="required"> - <xs:annotation> - <xs:documentation>P073 - [Nm]</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="fuelConsumption" type="v1.0:EngineFuelConsumptionMapFuelConsumptionType" use="required"> - <xs:annotation> - <xs:documentation>P074 - [g/h]</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="electricPower" type="v1.0:Double2"> - <xs:annotation> - <xs:documentation>Pxxx - [W]</xs:documentation> - </xs:annotation> - </xs:attribute> - <xs:attribute name="mechanicalPower" type="v1.0:Double2"> - <xs:annotation> - <xs:documentation>Pxxx - [W]</xs:documentation> - </xs:annotation> - </xs:attribute> - </xs:complexType> - <xs:complexType name="TyreDataDeclarationType"> - <xs:complexContent> - <xs:extension base="v1.0:AbstractTyreDataDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P230</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P231</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> - <xs:annotation> - <xs:documentation>P267</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P233</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AppVersion" type="v1.0:AppVersionType"> - <xs:annotation> - <xs:documentation>P234</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Dimension" type="v2.3:TyreDimensionType"> - <xs:annotation> - <xs:documentation>P108 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TyreClass"> - <xs:annotation> - <xs:documentation>Pxxx - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:enumeration value="C1"/> - <xs:enumeration value="C2"/> - <xs:enumeration value="C3"/> - <xs:enumeration value="N/A"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="FuelEfficiencyClass"> - <xs:annotation> - <xs:documentation>Pxxx - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="A"/> - <xs:enumeration value="B"/> - <xs:enumeration value="C"/> - <xs:enumeration value="D"/> - <xs:enumeration value="E"/> - <xs:enumeration value="F"/> - <xs:enumeration value="G"/> - <xs:enumeration value="N/A"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="RRCDeclared" type="v1.0:TyreRRCISOType"> - <xs:annotation> - <xs:documentation>P046 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="FzISO" type="v1.0:TyreFzISOType"> - <xs:annotation> - <xs:documentation>P047 - [N]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="WHRCorrectionFactorsType"> - <xs:sequence> - <xs:element name="Urban"> - <xs:simpleType> - <xs:restriction base="v1.0:Double4"> - <xs:minExclusive value="0.0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="Rural"> - <xs:simpleType> - <xs:restriction base="v1.0:Double4"> - <xs:minExclusive value="0.0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="Motorway"> - <xs:simpleType> - <xs:restriction base="v1.0:Double4"> - <xs:minExclusive value="0.0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="BFColdHot"> - <xs:simpleType> - <xs:restriction base="v1.0:Double4"> - <xs:minExclusive value="0.0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="CFRegPer"> - <xs:simpleType> - <xs:restriction base="v1.0:Double4"> - <xs:minExclusive value="0.0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:complexType> - <xs:complexType name="WHRTypeType"> - <xs:sequence> - <xs:element name="MechanicalOutputICE" type="xs:boolean"/> - <xs:element name="MechanicalOutputDrivetrain" type="xs:boolean"/> - <xs:element name="ElectricalOutput" type="xs:boolean"/> - </xs:sequence> - </xs:complexType> - <xs:simpleType name="AuxSPTechnologyType"> - <xs:annotation> - <xs:documentation>P182</xs:documentation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle/Auxiliaries">182</vectoParam:parameterId> - <vectoParam:comment>Multiple entires allowed, one per steered axle</vectoParam:comment> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="Fixed displacement"/> - <xs:enumeration value="Fixed displacement with elec. control"/> - <xs:enumeration value="Dual displacement with mech. control"/> - <xs:enumeration value="Dual displacement with elec. control"/> - <xs:enumeration value="Variable displacement mech. controlled"/> - <xs:enumeration value="Variable displacement elec. controlled"/> - <xs:enumeration value="Electric driven pump"/> - <xs:enumeration value="Full electric steering gear"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="TyreDimensionType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Tyre">108</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P108 - enum</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="9 R22.5"/> - <xs:enumeration value="9.00 R20"/> - <xs:enumeration value="9.5 R17.5"/> - <xs:enumeration value="10 R17.5"/> - <xs:enumeration value="10 R22.5"/> - <xs:enumeration value="10.00 R20"/> - <xs:enumeration value="11 R22.5"/> - <xs:enumeration value="11.00 R20"/> - <xs:enumeration value="12 R22.5"/> - <xs:enumeration value="12.00 R20"/> - <xs:enumeration value="12.00 R24"/> - <xs:enumeration value="12.5 R20"/> - <xs:enumeration value="13 R22.5"/> - <xs:enumeration value="14.00 R20"/> - <xs:enumeration value="14.5 R20"/> - <xs:enumeration value="16.00 R20"/> - <xs:enumeration value="205/75 R17.5"/> - <xs:enumeration value="215/75 R17.5"/> - <xs:enumeration value="225/70 R17.5"/> - <xs:enumeration value="225/75 R17.5"/> - <xs:enumeration value="235/75 R17.5"/> - <xs:enumeration value="245/70 R17.5"/> - <xs:enumeration value="245/70 R19.5"/> - <xs:enumeration value="255/70 R22.5"/> - <xs:enumeration value="265/70 R17.5"/> - <xs:enumeration value="265/70 R19.5"/> - <xs:enumeration value="275/70 R22.5"/> - <xs:enumeration value="275/80 R22.5"/> - <xs:enumeration value="285/60 R22.5"/> - <xs:enumeration value="285/70 R19.5"/> - <xs:enumeration value="295/55 R22.5"/> - <xs:enumeration value="295/60 R22.5"/> - <xs:enumeration value="295/80 R22.5"/> - <xs:enumeration value="305/60 R22.5"/> - <xs:enumeration value="305/70 R19.5"/> - <xs:enumeration value="305/70 R22.5"/> - <xs:enumeration value="305/75 R24.5"/> - <xs:enumeration value="315/45 R22.5"/> - <xs:enumeration value="315/60 R22.5"/> - <xs:enumeration value="315/70 R22.5"/> - <xs:enumeration value="315/80 R22.5"/> - <xs:enumeration value="325/95 R24"/> - <xs:enumeration value="335/80 R20"/> - <xs:enumeration value="355/50 R22.5"/> - <xs:enumeration value="365/70 R22.5"/> - <xs:enumeration value="365/80 R20"/> - <xs:enumeration value="365/85 R20"/> - <xs:enumeration value="375/45 R22.5"/> - <xs:enumeration value="375/50 R22.5"/> - <xs:enumeration value="375/90 R22.5"/> - <xs:enumeration value="385/55 R22.5"/> - <xs:enumeration value="385/65 R22.5"/> - <xs:enumeration value="395/85 R20"/> - <xs:enumeration value="425/65 R22.5"/> - <xs:enumeration value="495/45 R22.5"/> - <xs:enumeration value="525/65 R20.5"/> - <xs:enumeration value="11.00 R16"/> - <xs:enumeration value="6.00 R9"/> - <xs:enumeration value="205/65 R17.5"/> - <xs:enumeration value="225/75 R16C"/> - <xs:enumeration value="255/100 R16"/> - <xs:enumeration value="255/60 R19.5"/> - <xs:enumeration value="265/55 R19.5"/> - <xs:enumeration value="275/60 R19.5"/> - <xs:enumeration value="275/80 R20"/> - <xs:enumeration value="285/65 R16C"/> - <xs:enumeration value="295/75 R22.5"/> - <xs:enumeration value="325/85 R16"/> - <xs:enumeration value="435/50 R19.5"/> - <xs:enumeration value="435/50 R22.5"/> - <xs:enumeration value="445/40 R22.5"/> - <xs:enumeration value="445/45 R19.5"/> - <xs:enumeration value="445/65 R22.5"/> - <xs:enumeration value="445/75 R22.5"/> - <xs:enumeration value="455/40 R22.5"/> - <xs:enumeration value="455/45 R22.5"/> - <xs:enumeration value="475/80 R20"/> - <xs:enumeration value="7.00 R16C"/> - <xs:enumeration value="7.50 R15"/> - <xs:enumeration value="7.50 R16"/> - <xs:enumeration value="7.50 R16C"/> - <xs:enumeration value="8.25 R15"/> - <xs:enumeration value="8.25 R16C"/> - <xs:enumeration value="8.5 R17.5"/> - <xs:enumeration value="8 R17.5"/> - <xs:enumeration value="LT265/75 R16"/> - <xs:enumeration value="385/55 R19.5"/> - <xs:enumeration value="24 R21"/> - <xs:enumeration value="205/70 R15C"/> - <xs:enumeration value="215/70 R15C"/> - <xs:enumeration value="225/70 R15C"/> - <xs:enumeration value="185/75 R16C"/> - <xs:enumeration value="195/65 R16C"/> - <xs:enumeration value="195/75 R16C"/> - <xs:enumeration value="205/65 R16C"/> - <xs:enumeration value="205/75 R16C"/> - <xs:enumeration value="215/65 R16C"/> - <xs:enumeration value="215/75 R16C"/> - <xs:enumeration value="225/65 R16C"/> - <xs:enumeration value="235/65 R16C"/> - <xs:enumeration value="215/60 R17C"/> - <xs:enumeration value="235/60 R17C"/> - </xs:restriction> - </xs:simpleType> -</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.4.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.4.xsd new file mode 100644 index 0000000000000000000000000000000000000000..7d6590cec787bbb1a7ba7193dbee9ee54bb8ee8d --- /dev/null +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.4.xsd @@ -0,0 +1,3773 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> + <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3.xsd"/> + <xs:complexType name="Abstract_ADAS_ConventionalType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.1:AbstractAdvancedDriverAssistantSystemsType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_ADAS_HEVType" abstract="true"/> + <xs:complexType name="Abstract_ADAS_IEPCType" abstract="true"/> + <xs:complexType name="Abstract_ADAS_PEVType" abstract="true"/> + <xs:complexType name="Abstract_AUX_Conventional_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_Conventional_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_Conventional_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_HEV_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_HEV-P_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_HEV-P_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_HEV-S_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_HEV-S_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_IEPC_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_IEPC_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_IEPC_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_PEV_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_PEV_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_PEV_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_AUX_xEV_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_Components_Conventional_CompletedBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_Components_Conventional_LorryDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_Components_Conventional_PrimaryBusDeclarationType" abstract="true"/> + <xs:complexType name="Abstract_Components_HEV-IEPC-S_LorryDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_HEV-IEPC-S_PrimaryBusDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_HEV-Px_LorryDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_HEV-Px_PrimaryBusDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_HEV-Sx_LorryDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_HEV-Sx_PrimaryBusDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_IEPC_LorryDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_IEPC_PrimaryBusDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_PEV_LorryDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_PEV_PrimaryBusDeclarationType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Abstract_Components_xEV_CompletedBusType" abstract="true"/> + <xs:complexType name="AbstractBoostingLimitationsDeclarationType" abstract="true"/> + <xs:complexType name="AbstractCompletedBusVehicleType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AbstractElectricMotorVehicleTorqueLimitsDeclarationType" abstract="true"/> + <xs:complexType name="AbstractPTODataType" abstract="true"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractPTODataType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ADAS_Conventional_Type"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_ADAS_ConventionalType"> + <xs:sequence> + <xs:element name="EngineStopStart" type="v2.1:EngineStopStartType"> + <xs:annotation> + <xs:documentation>P271 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EcoRollWithoutEngineStop" type="v2.1:EcoRollWithoutEngineStopType"> + <xs:annotation> + <xs:documentation>P272 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EcoRollWithEngineStop" type="v2.1:EcoRollWithEngineStopType"> + <xs:annotation> + <xs:documentation>P273 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PredictiveCruiseControl" type="v2.1:PredictiveCruiseControlType"> + <xs:annotation> + <xs:documentation>P274 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="APTEcoRollReleaseLockupClutch" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P333 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">333</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ADAS_HEV_Type"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_ADAS_HEVType"> + <xs:sequence> + <xs:element name="EngineStopStart" type="v2.1:EngineStopStartType"> + <xs:annotation> + <xs:documentation>P271 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PredictiveCruiseControl" type="v2.1:PredictiveCruiseControlType"> + <xs:annotation> + <xs:documentation>P274 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ADAS_IEPC_Type"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_ADAS_IEPCType"> + <xs:sequence> + <xs:element name="PredictiveCruiseControl" type="v2.1:PredictiveCruiseControlType"> + <xs:annotation> + <xs:documentation>P274 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ADAS_PEV_Type"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_ADAS_PEVType"> + <xs:sequence> + <xs:element name="PredictiveCruiseControl" type="v2.1:PredictiveCruiseControlType"> + <xs:annotation> + <xs:documentation>P274 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AirDragModifiedUseStandardValueType"> + <xs:complexContent> + <xs:extension base="v1.0:AbstractAirdragDataDeclarationType"/> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_Component_Conventional_CompletedBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_Conventional_CompletedBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_Conventional_Lorry_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.0:AbstractAuxiliaryDataDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_Conventional_PrimaryBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_Conventional_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_HEV-P_Lorry_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_HEV-P_LorryDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_HEV-P_PrimaryBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_HEV-P_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_HEV-S_Lorry_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_HEV-S_LorryDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_HEV-S_PrimaryBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_HEV-S_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_IEPC_Lorry_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_IEPC_LorryDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_IEPC_PrimaryBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_IEPC_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_PEV_Lorry_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_PEV_LorryDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Component_PEV_PrimaryBus_Type"> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_PEV_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="AUX_Conventional_CompletedBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_Conventional_CompletedBusDeclarationType"> + <xs:sequence minOccurs="0"> + <xs:element name="ElectricSystem" minOccurs="0"> + <xs:complexType> + <xs:group ref="v2.4:BusAuxElectricSystemLightsGroup"/> + </xs:complexType> + </xs:element> + <xs:element name="HVAC" minOccurs="0"> + <xs:complexType> + <xs:group ref="v2.4:BusAuxHVACConventionalSequenceGroup" minOccurs="0"/> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_Conventional_LorryDataType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractAuxiliaryDataDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P181 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - [-]</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnologyLorryType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxESTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P183 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxPSTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P184 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxHVACTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P185</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_Conventional_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_Conventional_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyPrimaryBusType"> + <xs:annotation> + <xs:documentation>P181 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnologyPrimaryBusType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="AlternatorTechnology" type="v2.4:AlternatorTechnology_Conventional_Type"> + <xs:annotation> + <xs:documentation>P294 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:BusAuxElectricSystemSupplySequenceGroup" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxPneumaticSystemGen_Conventional_SequenceGroup"/> + <xs:group ref="v2.4:BusAuxPneumaticSystemConsumerSequenceGroup"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P324 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EngineWasteGasHeatExchanger" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P326 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_HEV-P_LorryDataType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_HEV-P_LorryDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P181 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnologyLorryType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxESTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P183 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxPSTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P184 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxHVACTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P185 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_HEV-P_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_HEV-P_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyPrimaryBusType"> + <xs:annotation> + <xs:documentation>P181 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnologyPrimaryBusType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="AlternatorTechnology" type="v2.4:AlternatorTechnology_HEV_Type"> + <xs:annotation> + <xs:documentation>P294 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:BusAuxElectricSystemSupplySequenceGroup" minOccurs="0"/> + <xs:element name="SupplyFromHEVPossible" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P303 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxPneumaticSystemGen_HEV-Px_SequenceGroup"/> + <xs:group ref="v2.4:BusAuxPneumaticSystemConsumerSequenceGroup"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P324 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EngineWasteGasHeatExchanger" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P326 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_HEV-S_LorryDataType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_HEV-S_LorryDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P181 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnology_HEV-S_LorryType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxESTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P183 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxPSTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P184 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxHVACTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P185 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_HEV-S_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_HEV-S_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="Fan"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxFanTechnologyPrimaryBusType"> + <xs:annotation> + <xs:documentation>P181 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnology_HEV-S_PrimaryBusType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="AlternatorTechnology" type="v2.4:AlternatorTechnology_HEV-S_Type"> + <xs:annotation> + <xs:documentation>P294 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SupplyFromHEVPossible" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P303 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxPneumaticSystemGen_HEV-S_SequenceGroup"/> + <xs:group ref="v2.4:BusAuxPneumaticSystemConsumerSequenceGroup"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P324 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EngineWasteGasHeatExchanger" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P326 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_IEPC_LorryDataType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_IEPC_LorryDeclarationType"> + <xs:sequence> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxPSTechnology_PEV_LorryType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxESTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P183 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxPSTechnology_PEV_LorryType"> + <xs:annotation> + <xs:documentation>P184 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxHVACTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P185 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_IEPC_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_IEPC_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnology_PEV_PrimaryBusType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxPneumaticSystemGen_IEPC_SequenceGroup"/> + <xs:group ref="v2.4:BusAuxPneumaticSystemConsumerSequenceGroup"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P324 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_PEV_LorryDataType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_PEV_LorryDeclarationType"> + <xs:sequence> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182 - enum</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnology_PEV_LorryType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="ElectricSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxESTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P183 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxPSTechnology_PEV_LorryType"> + <xs:annotation> + <xs:documentation>P184 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" type="v2.4:AuxHVACTechnologyLorryType"> + <xs:annotation> + <xs:documentation>P185 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_PEV_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_PEV_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="SteeringPump"> + <xs:complexType> + <xs:sequence> + <xs:element name="Technology" maxOccurs="4"> + <xs:annotation> + <xs:documentation>P182</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v2.4:AuxSPTechnology_PEV_PrimaryBusType"> + <xs:attribute name="axleNumber" use="required"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + <xs:maxInclusive value="4"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="PneumaticSystem"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxPneumaticSystemGen_PEV_SequenceGroup"/> + <xs:group ref="v2.4:BusAuxPneumaticSystemConsumerSequenceGroup"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HVAC"> + <xs:complexType> + <xs:sequence> + <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P324 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="AUX_xEV_CompletedBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_AUX_xEV_CompletedBusDeclarationType"> + <xs:sequence minOccurs="0"> + <xs:element name="ElectricSystem" minOccurs="0"> + <xs:complexType> + <xs:group ref="v2.4:BusAuxElectricSystemLightsGroup"/> + </xs:complexType> + </xs:element> + <xs:element name="HVAC" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:group ref="v2.4:BusAuxHVACConventionalSequenceGroup" minOccurs="0"/> + <xs:group ref="v2.4:BusAuxHVACxEVSequenceGroup" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="BoostingLimitationsType"> + <xs:complexContent> + <xs:extension base="v2.4:AbstractBoostingLimitationsDeclarationType"> + <xs:sequence> + <xs:element name="Entry" minOccurs="2" maxOccurs="unbounded"> + <xs:complexType> + <xs:attribute name="rotationalSpeed" use="required"> + <xs:simpleType> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + <xs:attribute name="boostingTorque" use="required"> + <xs:simpleType> + <xs:restriction base="v1.0:Double2"> + <xs:minInclusive value="0.00"/> + </xs:restriction> + </xs:simpleType> + </xs:attribute> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_Conventional_CompletedBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_Conventional_CompletedBusDeclarationType"> + <xs:sequence> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_Conventional_CompletedBus_Type" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_Conventional_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_Conventional_LorryDeclarationType"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_Conventional_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_Conventional_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_Conventional_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_Conventional_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-IEPC-S_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-IEPC-S_LorryDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-IEPC-S_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-IEPC-S_PrimaryBus"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-IEPC-S_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-IEPC-S_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-Px_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Px_LorryDeclarationType"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-P_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-Px_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Px_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-P_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S2_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_LorryDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S2_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S3_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_LorryDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S3_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S4_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_LorryDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_HEV-S4_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_HEV-Sx_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Components_HEV-Sx_GenSetSequenceGroup"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_HEV-S_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_IEPC_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_IEPC_LorryDeclarationType"> + <xs:sequence> + <xs:element name="IEPC" type="v2.3:IEPCComponentDeclarationType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_IEPC_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_IEPC_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_IEPC_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="IEPC" type="v2.3:IEPCComponentDeclarationType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_IEPC_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E2_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_LorryDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E2_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> + <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> + <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E3_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_LorryDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E3_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E4_LorryType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_LorryDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_Lorry_Type"/> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_PEV-E4_PrimaryBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_PEV_PrimaryBusDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> + <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:AUX_Component_PEV_PrimaryBus_Type"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Components_xEV_CompletedBusType"> + <xs:complexContent> + <xs:extension base="v2.4:Abstract_Components_xEV_CompletedBusType"> + <xs:sequence> + <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> + <xs:element name="Auxiliaries" minOccurs="0"> + <xs:complexType> + <xs:sequence> + <xs:element name="Data" type="v2.4:Abstract_AUX_xEV_CompletedBusDeclarationType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricEnergyStorageType"> + <xs:choice> + <xs:element name="Capacitor" type="v2.4:REESSCapacitorType"/> + <xs:element name="Battery" type="v2.4:REESSBatteryType" maxOccurs="unbounded"/> + </xs:choice> + </xs:complexType> + <xs:complexType name="ElectricMachineGENType"> + <xs:sequence> + <xs:element name="PowertrainPosition" type="v2.4:PowertrainPositionGENType"> + <xs:annotation> + <xs:documentation>P403 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Count"> + <xs:annotation> + <xs:documentation>P404 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="ElectricMachineSystem" type="v2.3:ElectricMachineSystemComponentDeclarationType"/> + <xs:element name="ADC" type="v2.3:ADCComponentDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="ElectricMachineTorqueLimitsType"> + <xs:complexContent> + <xs:extension base="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType"> + <xs:sequence> + <xs:element name="ElectricMachine" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Position" type="v2.4:PowertrainPositionType"/> + <xs:element name="VoltageLevel" minOccurs="2" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="Voltage"> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="MaxTorqueCurve" type="v2.3:ElectricMachineSystemMaxTorqueCurveType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="ElectricMachineType"> + <xs:sequence> + <xs:element name="PowertrainPosition" type="v2.4:PowertrainPositionDriveType"> + <xs:annotation> + <xs:documentation>P403 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Count"> + <xs:annotation> + <xs:documentation>P404 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="1"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="ElectricMachineSystem" type="v2.3:ElectricMachineSystemComponentDeclarationType"/> + <xs:element name="ADC" type="v2.3:ADCComponentDeclarationType" minOccurs="0"/> + <xs:element name="P2.5GearRatios" minOccurs="0"> + <xs:annotation> + <xs:documentation>P407 - [-]</xs:documentation> + </xs:annotation> + <xs:complexType> + <xs:sequence> + <xs:element name="Ratio" maxOccurs="unbounded"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="v1.0:Double3"> + <xs:attribute name="gear" use="required"/> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:complexType> + <xs:complexType name="PTOType"> + <xs:complexContent> + <xs:extension base="v2.4:AbstractPTODataType"> + <xs:sequence> + <xs:element name="PTOShaftsGearWheels" type="v2.4:PTOShaftsGearWheelsType"> + <xs:annotation> + <xs:documentation>P247 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PTOOtherElements" type="v1.0:PTOOtherElementsType"> + <xs:annotation> + <xs:documentation>P248 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="REESSBatteryType"> + <xs:sequence> + <xs:element name="StringID"> + <xs:annotation> + <xs:documentation>P411 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="REESS"> + <xs:complexType> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractBatterySystemDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:sequence minOccurs="0"> + <xs:element name="SOCmin"> + <xs:annotation> + <xs:documentation>P413 - [%]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="100"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="SOCmax"> + <xs:annotation> + <xs:documentation>P414 - [%]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="100"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:sequence> + </xs:complexType> + <xs:complexType name="REESSCapacitorType"> + <xs:sequence> + <xs:element name="Data" type="v2.3:AbstractCapacitorSystemDataType"/> + <xs:element name="Signature" type="v2.0:SignatureType"/> + </xs:sequence> + </xs:complexType> + <xs:complexType name="Vehicle_Conventional_CompletedBusDeclarationType"> + <xs:annotation> + <xs:documentation>Vehicle stage input parts</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v2.4:AbstractCompletedBusVehicleType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_CompletedBus_GeneralParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBusParametersSequenceGroup"/> + <xs:element name="NgTankSystem" type="v1.0:NgTankSystemType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P275 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_PassengerCountSequenceGroup" minOccurs="0"/> + <xs:element name="BodyworkCode" type="v2.4:VehicleCodeType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P286 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_DimensionsSequenceGroup" minOccurs="0"/> + <xs:element name="DoorDriveTechnology" type="v2.4:DoorDriveTechnologyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P291 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleDeclarationType" type="v2.4:DeclarationType"> + <xs:annotation> + <xs:documentation>P293 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_ConventionalType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_Conventional_CompletedBusDeclarationType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Conventional_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_2"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_ConventionalType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_Conventional_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Conventional_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_2"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_ConventionalType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_Conventional_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Conventional_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_ConventionalType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_Conventional_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Exempted_CompletedBusDeclarationType"> + <xs:annotation> + <xs:documentation>Exempted vehicle stage input parts</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v2.4:AbstractCompletedBusVehicleType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_CompletedBus_GeneralParametersSequenceGroup"/> + <xs:element name="Model" type="v1.0:ModelType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P236 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryPrimaryBusDeclarationType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P038 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ClassBus" type="v2.4:RegisteredClassType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P282 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_PassengerCountSequenceGroup" minOccurs="0"/> + <xs:element name="BodyworkCode" type="v2.4:VehicleCodeType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P286 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="HeightIntegratedBody" type="v2.4:VehicleDimensionType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P287 - [mm]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Exempted_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_GeneralParametersSequenceGroup"/> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P036 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P037 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType"> + <xs:annotation> + <xs:documentation>P038 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SleeperCab" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P276 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SumNetPower" type="xs:int"> + <xs:annotation> + <xs:documentation>P331 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Technology"> + <xs:annotation> + <xs:documentation>P332 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="HEV Article 9 exempted"/> + <xs:enumeration value="PEV Article 9 exempted"/> + <xs:enumeration value="HV Article 9 exempted"/> + <xs:enumeration value="Fuel cell vehicle"/> + <xs:enumeration value="H2 ICE"/> + <xs:enumeration value="Dual fuel vehicle Article 9 exempted"/> + <xs:enumeration value="In-motion charging Article 9 exempted"/> + <xs:enumeration value="Other technology Article 9 exempted"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Exempted_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_GeneralParametersSequenceGroup"/> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P036 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P037 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType"> + <xs:annotation> + <xs:documentation>P038 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SumNetPower" type="xs:int"> + <xs:annotation> + <xs:documentation>P331 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Technology"> + <xs:annotation> + <xs:documentation>P332 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="HEV Article 9 exempted"/> + <xs:enumeration value="PEV Article 9 exempted"/> + <xs:enumeration value="HV Article 9 exempted"/> + <xs:enumeration value="Fuel cell vehicle"/> + <xs:enumeration value="H2 ICE"/> + <xs:enumeration value="Dual fuel vehicle Article 9 exempted"/> + <xs:enumeration value="In-motion charging Article 9 exempted"/> + <xs:enumeration value="Other technology Article 9 exempted"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_Exempted_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SumNetPower" type="xs:int"> + <xs:annotation> + <xs:documentation>P331 - [W]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Technology"> + <xs:annotation> + <xs:documentation>P332 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="HEV Article 9 exempted"/> + <xs:enumeration value="PEV Article 9 exempted"/> + <xs:enumeration value="HV Article 9 exempted"/> + <xs:enumeration value="Fuel cell vehicle"/> + <xs:enumeration value="H2 ICE"/> + <xs:enumeration value="Dual fuel vehicle Article 9 exempted"/> + <xs:enumeration value="In-motion charging Article 9 exempted"/> + <xs:enumeration value="Other technology Article 9 exempted"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV_CompletedBusDeclarationType"> + <xs:annotation> + <xs:documentation>Vehicle stage input parts</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v2.4:AbstractCompletedBusVehicleType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_CompletedBus_GeneralParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBusParametersSequenceGroup"/> + <xs:element name="NgTankSystem" type="v1.0:NgTankSystemType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P275 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_PassengerCountSequenceGroup" minOccurs="0"/> + <xs:element name="BodyworkCode" type="v2.4:VehicleCodeType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P286 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_DimensionsSequenceGroup" minOccurs="0"/> + <xs:element name="DoorDriveTechnology" type="v2.4:DoorDriveTechnologyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P291 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleDeclarationType" type="v2.4:DeclarationType"> + <xs:annotation> + <xs:documentation>P293 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_xEV_CompletedBusType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-IEPC-S_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-IEPC-S_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-IEPC-S_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-IEPC-S_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-IEPC-S_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-IEPC-S_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-IEPC-S_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-IEPC-S_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-IEPC-S_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Px_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Px_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Px_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Px_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Px_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Px_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Px_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Px_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="BoostingLimitations" type="v2.4:AbstractBoostingLimitationsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Px_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Sx_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Sx_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0" maxOccurs="2"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Sx_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Sx_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Sx_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0" maxOccurs="2"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Sx_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_HEV-Sx_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> + <xs:annotation> + <xs:documentation>P198 - [1/min]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_HEV-Sx_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_HEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0" maxOccurs="2"/> + <xs:element name="Components" type="v2.4:Abstract_Components_HEV-Sx_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_IEPC_CompletedBusDeclarationType"> + <xs:annotation> + <xs:documentation>Vehicle stage input parts</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v2.4:AbstractCompletedBusVehicleType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_CompletedBus_GeneralParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBusParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBus_PassengerCountSequenceGroup" minOccurs="0"/> + <xs:element name="BodyworkCode" type="v2.4:VehicleCodeType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P286 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_DimensionsSequenceGroup" minOccurs="0"/> + <xs:element name="DoorDriveTechnology" type="v2.4:DoorDriveTechnologyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P291 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleDeclarationType" type="v2.4:DeclarationType"> + <xs:annotation> + <xs:documentation>P293 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_IEPCType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_xEV_CompletedBusType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_IEPC_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:group ref="v2.4:Vehicle_HeavyLorryPEVParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_IEPC_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_IEPCType"/> + <xs:element name="Components" type="v2.4:Abstract_Components_IEPC_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_IEPC_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:group ref="v2.4:Vehicle_MediumLorryPEVParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_IEPC_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_IEPCType"/> + <xs:element name="Components" type="v2.4:Abstract_Components_IEPC_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_IEPC_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_IEPC_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_IEPCType"/> + <xs:element name="Components" type="v2.4:Abstract_Components_IEPC_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_PEV_CompletedBusDeclarationType"> + <xs:annotation> + <xs:documentation>Vehicle stage input parts</xs:documentation> + </xs:annotation> + <xs:complexContent> + <xs:extension base="v2.4:AbstractCompletedBusVehicleType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_CompletedBus_GeneralParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBusParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_CompletedBus_PassengerCountSequenceGroup" minOccurs="0"/> + <xs:element name="BodyworkCode" type="v2.4:VehicleCodeType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P286 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_CompletedBus_DimensionsSequenceGroup" minOccurs="0"/> + <xs:element name="DoorDriveTechnology" type="v2.4:DoorDriveTechnologyType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P291 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleDeclarationType" type="v2.4:DeclarationType"> + <xs:annotation> + <xs:documentation>P293 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_PEVType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_xEV_CompletedBusType" minOccurs="0"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_PEV_HeavyLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_HeavyLorryParametersSequenceGroup_1"/> + <xs:group ref="v2.4:Vehicle_HeavyLorryPEVParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_PEV_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_PEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_PEV_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_PEV_MediumLorryDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_MediumLorryParametersSequenceGroup_1"/> + <xs:group ref="v2.4:Vehicle_MediumLorryPEVParametersSequenceGroup_2"/> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_PEV_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_PEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_PEV_LorryDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:complexType name="Vehicle_PEV_PrimaryBusDeclarationType"> + <xs:complexContent> + <xs:extension base="v2.0:AbstractVehicleDeclarationType"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_PrimaryBusParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ArchitectureID" type="v2.4:ArchitectureID_PEV_Type"> + <xs:annotation> + <xs:documentation>P400 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_xEV-Parameters_SequenceGroup"/> + <xs:element name="ADAS" type="v2.4:Abstract_ADAS_PEVType"/> + <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> + <xs:element name="ElectricMotorTorqueLimits" type="v2.4:AbstractElectricMotorVehicleTorqueLimitsDeclarationType" minOccurs="0"/> + <xs:element name="Components" type="v2.4:Abstract_Components_PEV_PrimaryBusDeclarationType"/> + </xs:sequence> + </xs:extension> + </xs:complexContent> + </xs:complexType> + <xs:simpleType name="AlternatorTechnology_Conventional_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="conventional"/> + <xs:enumeration value="smart"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AlternatorTechnology_HEV_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="conventional"/> + <xs:enumeration value="smart"/> + <xs:enumeration value="no alternator"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AlternatorTechnology_HEV-S_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="conventional"/> + <xs:enumeration value="no alternator"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AlternatorTechnologyType"> + <xs:union memberTypes="v2.4:AlternatorTechnology_Conventional_Type v2.4:AlternatorTechnology_HEV_Type v2.4:AlternatorTechnology_HEV-S_Type"/> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_HEV_Type"> + <xs:union memberTypes="v2.4:ArchitectureID_HEV-Px_Type v2.4:ArchitectureID_HEV-Sx_Type v2.4:ArchitectureID_HEV-IEPC-S_Type"/> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_HEV-IEPC-S_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="S-IEPC"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_HEV-Px_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="P1"/> + <xs:enumeration value="P2"/> + <xs:enumeration value="P2.5"/> + <xs:enumeration value="P3"/> + <xs:enumeration value="P4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_HEV-Sx_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="S2"/> + <xs:enumeration value="S3"/> + <xs:enumeration value="S4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_IEPC_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="E-IEPC"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ArchitectureID_PEV_Type"> + <xs:restriction base="xs:string"> + <xs:enumeration value="E2"/> + <xs:enumeration value="E3"/> + <xs:enumeration value="E4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ArchitectureIDType"> + <xs:union memberTypes="v2.4:ArchitectureID_HEV_Type v2.4:ArchitectureID_IEPC_Type v2.4:ArchitectureID_PEV_Type"/> + </xs:simpleType> + <xs:simpleType name="AuxESTechnologyLorryType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Standard technology"/> + <xs:enumeration value="Standard technology - LED headlights, all"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxFanTechnologyLorryType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> + <xs:enumeration value="Crankshaft mounted - Bimetallic controlled visco clutch"/> + <xs:enumeration value="Crankshaft mounted - Discrete step clutch"/> + <xs:enumeration value="Crankshaft mounted - On/off clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Electronically controlled visco clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Bimetallic controlled visco clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - On/off clutch"/> + <xs:enumeration value="Hydraulic driven - Variable displacement pump"/> + <xs:enumeration value="Hydraulic driven - Constant displacement pump"/> + <xs:enumeration value="Electrically driven - Electronically controlled"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxFanTechnologyPrimaryBusType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> + <xs:enumeration value="Crankshaft mounted - Bimetallic controlled visco clutch"/> + <xs:enumeration value="Crankshaft mounted - Discrete step clutch 2 stages"/> + <xs:enumeration value="Crankshaft mounted - Discrete step clutch 3 stages"/> + <xs:enumeration value="Crankshaft mounted - On/off clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Electronically controlled visco clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Bimetallic controlled visco clutch"/> + <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 2 stages"/> + <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 3 stages"/> + <xs:enumeration value="Belt driven or driven via transm. - On/off clutch"/> + <xs:enumeration value="Hydraulic driven - Variable displacement pump"/> + <xs:enumeration value="Hydraulic driven - Constant displacement pump"/> + <xs:enumeration value="Electrically driven - Electronically controlled"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxHVACTechnologyLorryType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="None"/> + <xs:enumeration value="Default"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxPSTechnology_PEV_LorryType"> + <xs:restriction base="v2.4:AuxPSTechnologyLorryType"> + <xs:enumeration value="Small + elec. driven"/> + <xs:enumeration value="Small + ESS + elec. driven "/> + <xs:enumeration value="Medium Supply 1-stage + elec. driven"/> + <xs:enumeration value="Medium Supply 1-stage + AMS + elec. driven "/> + <xs:enumeration value="Medium Supply 2-stage + elec. driven"/> + <xs:enumeration value="Medium Supply 2-stage + AMS + elec. driven"/> + <xs:enumeration value="Large Supply + elec. driven"/> + <xs:enumeration value="Large Supply + AMS + elec. driven"/> + <xs:enumeration value="Vacuum pump + elec. driven"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxPSTechnologyLorryType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> + <xs:enumeration value="Small"/> + <xs:enumeration value="Small + ESS"/> + <xs:enumeration value="Small + visco clutch "/> + <xs:enumeration value="Small + mech. clutch"/> + <xs:enumeration value="Small + ESS + AMS"/> + <xs:enumeration value="Small + visco clutch + AMS"/> + <xs:enumeration value="Small + mech. clutch + AMS"/> + <xs:enumeration value="Medium Supply 1-stage"/> + <xs:enumeration value="Medium Supply 1-stage + ESS"/> + <xs:enumeration value="Medium Supply 1-stage + visco clutch "/> + <xs:enumeration value="Medium Supply 1-stage + mech. clutch"/> + <xs:enumeration value="Medium Supply 1-stage + ESS + AMS"/> + <xs:enumeration value="Medium Supply 1-stage + visco clutch + AMS"/> + <xs:enumeration value="Medium Supply 1-stage + mech. clutch + AMS"/> + <xs:enumeration value="Medium Supply 2-stage"/> + <xs:enumeration value="Medium Supply 2-stage + ESS"/> + <xs:enumeration value="Medium Supply 2-stage + visco clutch "/> + <xs:enumeration value="Medium Supply 2-stage + mech. clutch"/> + <xs:enumeration value="Medium Supply 2-stage + ESS + AMS"/> + <xs:enumeration value="Medium Supply 2-stage + visco clutch + AMS"/> + <xs:enumeration value="Medium Supply 2-stage + mech. clutch + AMS"/> + <xs:enumeration value="Large Supply"/> + <xs:enumeration value="Large Supply + ESS"/> + <xs:enumeration value="Large Supply + visco clutch "/> + <xs:enumeration value="Large Supply + mech. clutch"/> + <xs:enumeration value="Large Supply + ESS + AMS"/> + <xs:enumeration value="Large Supply + visco clutch + AMS"/> + <xs:enumeration value="Large Supply + mech. clutch + AMS"/> + <xs:enumeration value="Vacuum pump"/> + <xs:enumeration value="Small + elec. driven"/> + <xs:enumeration value="Small + ESS + elec. driven "/> + <xs:enumeration value="Medium Supply 1-stage + elec. driven"/> + <xs:enumeration value="Medium Supply 1-stage + AMS + elec. driven "/> + <xs:enumeration value="Medium Supply 2-stage + elec. driven"/> + <xs:enumeration value="Medium Supply 2-stage + AMS + elec. driven"/> + <xs:enumeration value="Large Supply + elec. driven"/> + <xs:enumeration value="Large Supply + AMS + elec. driven"/> + <xs:enumeration value="Vacuum pump + elec. driven"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnology_HEV-S_LorryType"> + <xs:restriction base="v2.4:AuxSPTechnologyLorryType"> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnology_HEV-S_PrimaryBusType"> + <xs:restriction base="v2.4:AuxSPTechnologyPrimaryBusType"> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnology_PEV_LorryType"> + <xs:restriction base="v2.4:AuxSPTechnologyLorryType"> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnology_PEV_PrimaryBusType"> + <xs:restriction base="v2.4:AuxSPTechnologyPrimaryBusType"> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnologyLorryType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Fixed displacement"/> + <xs:enumeration value="Fixed displacement with elec. control"/> + <xs:enumeration value="Dual displacement"/> + <xs:enumeration value="Dual displacement with elec. control"/> + <xs:enumeration value="Variable displacement mech. controlled"/> + <xs:enumeration value="Variable displacement elec. controlled"/> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AuxSPTechnologyPrimaryBusType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Fixed displacement"/> + <xs:enumeration value="Fixed displacement with elec. control"/> + <xs:enumeration value="Dual displacement"/> + <xs:enumeration value="Dual displacement with elec. control"/> + <xs:enumeration value="Variable displacement mech. controlled"/> + <xs:enumeration value="Variable displacement elec. controlled"/> + <xs:enumeration value="Electric driven pump"/> + <xs:enumeration value="Full electric steering gear"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AxleConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">037</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P037</xs:documentation> + </xs:annotation> + <xs:restriction base="v1.0:VehicleAxleConfigurationType"> + <xs:enumeration value="4x2"/> + <xs:enumeration value="6x2"/> + <xs:enumeration value="6x4"/> + <xs:enumeration value="8x4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AxleConfigurationMediumLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">037</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P037</xs:documentation> + </xs:annotation> + <xs:restriction base="v1.0:VehicleAxleConfigurationType"> + <xs:enumeration value="4x2"/> + <xs:enumeration value="6x2"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="AxleConfigurationPrimaryBusLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">037</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P037</xs:documentation> + </xs:annotation> + <xs:restriction base="v1.0:VehicleAxleConfigurationType"> + <xs:enumeration value="4x2"/> + <xs:enumeration value="6x2"/> + <xs:enumeration value="6x4"/> + <xs:enumeration value="8x2"/> + <xs:enumeration value="8x4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ChassisConfiguration"> + <xs:union memberTypes="v2.4:ChassisConfigurationHeavyLorryDeclarationType v2.4:ChassisConfigurationMediumLorryDeclarationType v2.4:ChassisConfigurationPrimaryBusDeclarationType"/> + </xs:simpleType> + <xs:simpleType name="ChassisConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">036</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P036 - enum (Declaration)</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Tractor"/> + <xs:enumeration value="Rigid Lorry"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ChassisConfigurationMediumLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">036</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P036 - enum (Declaration)</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Tractor"/> + <xs:enumeration value="Rigid Lorry"/> + <xs:enumeration value="Van"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="ChassisConfigurationPrimaryBusDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">036</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P036 - enum (Declaration)</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="Bus"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="DeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">293</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P293 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="interim"/> + <xs:enumeration value="final"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="DoorDriveTechnologyType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">291</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="electric"/> + <xs:enumeration value="pneumatic"/> + <xs:enumeration value="mixed"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="HeatPumpTypeDriverCompartmentType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="none"/> + <xs:enumeration value="not applicable"/> + <xs:enumeration value="R-744"/> + <xs:enumeration value="non R-744 2-stage"/> + <xs:enumeration value="non R-744 3-stage"/> + <xs:enumeration value="non R-744 4-stage"/> + <xs:enumeration value="non R-744 continuous"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="HeatPumpTypePassengerCompartmentType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="none"/> + <xs:enumeration value="R-744"/> + <xs:enumeration value="non R-744 2-stage"/> + <xs:enumeration value="non R-744 3-stage"/> + <xs:enumeration value="non R-744 4-stage"/> + <xs:enumeration value="non R-744 continuous"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="LegislativeCategoryHeavyLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">251</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="N2"/> + <xs:enumeration value="N3"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="LegislativeCategoryMediumLorryDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">251</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="N2"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="LegislativeCategoryPrimaryBusDeclarationType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">251</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="M3"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PassengerCountType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">283</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">284</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">355</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">354</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PneumaticSystemClutchTypeType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="none"/> + <xs:enumeration value="visco"/> + <xs:enumeration value="mechanically"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PneumaticSystemTechnologyType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="Small"/> + <xs:enumeration value="Medium Supply 1-stage"/> + <xs:enumeration value="Medium Supply 2-stage"/> + <xs:enumeration value="Large Supply 1-stage"/> + <xs:enumeration value="Large Supply 2-stage"/> + <xs:enumeration value="not applicable"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PowertrainPositionDriveType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="1"/> + <xs:enumeration value="2"/> + <xs:enumeration value="2.5"/> + <xs:enumeration value="3"/> + <xs:enumeration value="4"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PowertrainPositionGENType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="GEN"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="PowertrainPositionType"> + <xs:union memberTypes="v2.4:PowertrainPositionDriveType v2.4:PowertrainPositionGENType"/> + </xs:simpleType> + <xs:simpleType name="PTOShaftsGearWheelsType"> + <xs:annotation> + <xs:documentation>P247 - enum</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">247</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="none"/> + <xs:enumeration value="only the drive shaft of the PTO"/> + <xs:enumeration value="drive shaft and/or up to 2 gear wheels"/> + <xs:enumeration value="drive shaft and/or more than 2 gear wheels"/> + <xs:enumeration value="only one engaged gearwheel above oil level"/> + <xs:enumeration value="PTO which includes 1 or mmore additional gearmesh(es), without disconnect clutch"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="RegisteredClassType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">282</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P282 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="I"/> + <xs:enumeration value="II"/> + <xs:enumeration value="III"/> + <xs:enumeration value="A"/> + <xs:enumeration value="B"/> + <xs:enumeration value="I+II"/> + <xs:enumeration value="II+III"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="VehicleCodeType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">285</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + <xs:documentation>P285 - enum</xs:documentation> + </xs:annotation> + <xs:restriction base="xs:string"> + <xs:enumeration value="CA"/> + <xs:enumeration value="CB"/> + <xs:enumeration value="CC"/> + <xs:enumeration value="CD"/> + <xs:enumeration value="CE"/> + <xs:enumeration value="CF"/> + <xs:enumeration value="CG"/> + <xs:enumeration value="CH"/> + <xs:enumeration value="CI"/> + <xs:enumeration value="CJ"/> + </xs:restriction> + </xs:simpleType> + <xs:simpleType name="VehicleDimensionType"> + <xs:annotation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">287</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">288</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">289</vectoParam:parameterId> + <vectoParam:parameterId component="Vehicle">290</vectoParam:parameterId> + <vectoParam:unit>mm</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + <xs:restriction base="xs:int"/> + </xs:simpleType> + <xs:simpleType name="VehicleTypeApprovalNumberType"> + <xs:restriction base="xs:token"> + <xs:minLength value="1"/> + </xs:restriction> + </xs:simpleType> + <xs:group name="BusAuxElectricSystemLightsGroup"> + <xs:sequence> + <xs:element name="LEDLights"> + <xs:complexType> + <xs:sequence minOccurs="0"> + <xs:element name="Interiorlights" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P304 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Dayrunninglights" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P305 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Positionlights" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P306 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Brakelights" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P307 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Headlights" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P308 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxElectricSystemSupplySequenceGroup"> + <xs:sequence> + <xs:element name="SmartAlternator" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="RatedCurrent"> + <xs:annotation> + <xs:documentation>P295 - [A]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:integer"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="RatedVoltage"> + <xs:annotation> + <xs:documentation>P296 - [V]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:integer"> + <xs:enumeration value="12"/> + <xs:enumeration value="24"/> + <xs:enumeration value="48"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Battery" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="BatteryTechnology"> + <xs:annotation> + <xs:documentation>P296 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="lead-acid battery – conventional"/> + <xs:enumeration value="lead-acid battery – AGM"/> + <xs:enumeration value="lead-acid battery – gel"/> + <xs:enumeration value="li-ion battery - high power"/> + <xs:enumeration value="li-ion battery - high energy"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="RatedCapacity" type="xs:integer"> + <xs:annotation> + <xs:documentation>P299 - [Ah]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NominalVoltage"> + <xs:annotation> + <xs:documentation>P298 - [V]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:integer"> + <xs:enumeration value="12"/> + <xs:enumeration value="24"/> + <xs:enumeration value="48"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="Capacitor" minOccurs="0" maxOccurs="unbounded"> + <xs:complexType> + <xs:sequence> + <xs:element name="CapacitorTechnology"> + <xs:annotation> + <xs:documentation>P300 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="with DCDC converter"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="RatedCapacitance"> + <xs:annotation> + <xs:documentation>P301 - [F]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:integer"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="RatedVoltage"> + <xs:annotation> + <xs:documentation>P302 - [V]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:integer"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxHVACConventionalSequenceGroup"> + <xs:sequence> + <xs:group ref="v2.4:BusAuxHVACHeatPumpSequenceGroup" minOccurs="0"/> + <xs:element name="AuxiliaryHeaterPower" minOccurs="0"> + <xs:annotation> + <xs:documentation>P322 - [W]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="DoubleGlazing" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P323 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AdjustableAuxiliaryHeater" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P325 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SeparateAirDistributionDucts" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P327 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxHVACHeatPumpSequenceGroup"> + <xs:sequence> + <xs:element name="SystemConfiguration"> + <xs:annotation> + <xs:documentation>P317 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minInclusive value="0"/> + <xs:maxInclusive value="10"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="HeatPumpTypeDriverCompartment"> + <xs:complexType> + <xs:sequence> + <xs:element name="Cooling" type="v2.4:HeatPumpTypeDriverCompartmentType"> + <xs:annotation> + <xs:documentation>P318 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Heating" type="v2.4:HeatPumpTypeDriverCompartmentType"> + <xs:annotation> + <xs:documentation>P319 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + <xs:element name="HeatPumpTypePassengerCompartment"> + <xs:complexType> + <xs:sequence> + <xs:element name="Cooling" type="v2.4:HeatPumpTypePassengerCompartmentType"> + <xs:annotation> + <xs:documentation>P320 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Heating" type="v2.4:HeatPumpTypePassengerCompartmentType"> + <xs:annotation> + <xs:documentation>P321 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:complexType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxHVACxEVSequenceGroup"> + <xs:sequence> + <xs:element name="WaterElectricHeater" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P328 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AirElectricHeater" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P329 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="OtherHeatingTechnology" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P330 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemConsumerSequenceGroup"> + <xs:sequence> + <xs:element name="SmartRegenerationSystem" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P312 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AirsuspensionControl"> + <xs:annotation> + <xs:documentation>P315 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electronically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="PneumaticSCRReagentDosing" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P316 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGen_Conventional_SequenceGroup"> + <xs:sequence> + <xs:element name="SizeOfAirSupply" type="v2.4:PneumaticSystemTechnologyType"> + <xs:annotation> + <xs:documentation>P309 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Clutch" type="v2.4:PneumaticSystemClutchTypeType"> + <xs:annotation> + <xs:documentation>P311 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorRatio"> + <xs:annotation> + <xs:documentation>P314 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minInclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="SmartCompressionSystem" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P313 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGen_HEV-Px_SequenceGroup"> + <xs:sequence> + <xs:element name="SizeOfAirSupply" type="v2.4:PneumaticSystemTechnologyType"> + <xs:annotation> + <xs:documentation>P309 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Clutch" type="v2.4:PneumaticSystemClutchTypeType"> + <xs:annotation> + <xs:documentation>P311 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorRatio"> + <xs:annotation> + <xs:documentation>P314 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minInclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="SmartCompressionSystem" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P313 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGen_HEV-S_SequenceGroup"> + <xs:sequence> + <xs:element name="SizeOfAirSupply" type="v2.4:PneumaticSystemTechnologyType"> + <xs:annotation> + <xs:documentation>P309 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Clutch" type="v2.4:PneumaticSystemClutchTypeType"> + <xs:annotation> + <xs:documentation>P311 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorRatio"> + <xs:annotation> + <xs:documentation>P314 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minInclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGen_IEPC_SequenceGroup"> + <xs:sequence> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGen_PEV_SequenceGroup"> + <xs:sequence> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="BusAuxPneumaticSystemGroup_HEV-S"> + <xs:sequence> + <xs:element name="SizeOfAirSupply" type="v2.4:PneumaticSystemTechnologyType"> + <xs:annotation> + <xs:documentation>P309 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorDrive"> + <xs:annotation> + <xs:documentation>P310 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electrically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="Clutch" type="v2.4:PneumaticSystemClutchTypeType"> + <xs:annotation> + <xs:documentation>P311 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CompressorRatio"> + <xs:annotation> + <xs:documentation>P314 - [-]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minInclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="SmartRegenerationSystem" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P312 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AirsuspensionControl"> + <xs:annotation> + <xs:documentation>P315 - enum</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:string"> + <xs:enumeration value="mechanically"/> + <xs:enumeration value="electronically"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:element name="PneumaticSCRReagentDosing" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P316 - bool</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Components_HEV-IEPC-S_GenSetSequenceGroup"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="ElectricMachineGEN" type="v2.4:ElectricMachineGENType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="IEPC" type="v2.3:IEPCComponentDeclarationType"/> + </xs:sequence> + </xs:group> + <xs:group name="Components_HEV-Sx_GenSetSequenceGroup"> + <xs:sequence> + <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> + <xs:element name="ElectricMachineGEN" type="v2.4:ElectricMachineGENType"/> + <xs:element name="ElectricEnergyStorage" type="v2.4:ElectricEnergyStorageType"/> + <xs:element name="ElectricMachine" type="v2.4:ElectricMachineType"/> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_ChassisLorryParametersSequenceGroup"> + <xs:sequence> + <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType"> + <xs:annotation> + <xs:documentation>P038 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_ChassisPrimaryBusParametersSequenceGroup"> + <xs:sequence> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryPrimaryBusDeclarationType"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationPrimaryBusDeclarationType"> + <xs:annotation> + <xs:documentation>P036 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationPrimaryBusLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P037 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Articulated" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P281 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_CompletedBus_DimensionsSequenceGroup"> + <xs:sequence> + <xs:element name="HeightIntegratedBody" type="v2.4:VehicleDimensionType"> + <xs:annotation> + <xs:documentation>P287 - [mm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleLength" type="v2.4:VehicleDimensionType"> + <xs:annotation> + <xs:documentation>P288 - [mm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleWidth" type="v2.4:VehicleDimensionType"> + <xs:annotation> + <xs:documentation>P289 - [mm]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="EntranceHeight" type="v2.4:VehicleDimensionType"> + <xs:annotation> + <xs:documentation>P290 - [mm]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_CompletedBus_GeneralParametersSequenceGroup"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P235 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"> + <xs:annotation> + <xs:documentation>P252 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VIN" type="v1.0:VINType"> + <xs:annotation> + <xs:documentation>P238 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P239 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_CompletedBus_PassengerCountSequenceGroup"> + <xs:sequence> + <xs:element name="NumberPassengerSeatsLowerDeck" type="v2.4:PassengerCountType"> + <xs:annotation> + <xs:documentation>P283 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NumberPassengersStandingLowerDeck" type="v2.4:PassengerCountType"> + <xs:annotation> + <xs:documentation>P354 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NumberPassengerSeatsUpperDeck" type="v2.4:PassengerCountType"> + <xs:annotation> + <xs:documentation>P284 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NumberPassengersStandingUpperDeck" type="v2.4:PassengerCountType"> + <xs:annotation> + <xs:documentation>P355 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_CompletedBusParametersSequenceGroup"> + <xs:sequence> + <xs:element name="Model" type="v1.0:ModelType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P236 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryPrimaryBusDeclarationType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P038 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P041 - [kg]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AirdragModifiedMultistep" type="xs:boolean" minOccurs="0"> + <xs:annotation> + <xs:documentation>P334 - bool</xs:documentation> + <xs:appinfo> + <vectoParam:description> + <vectoParam:parameterId component="Vehicle">334</vectoParam:parameterId> + <vectoParam:unit>-</vectoParam:unit> + </vectoParam:description> + </xs:appinfo> + </xs:annotation> + </xs:element> + <xs:element name="ClassBus" type="v2.4:RegisteredClassType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P282 - enum</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_GeneralParametersSequenceGroup"> + <xs:sequence> + <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> + <xs:annotation> + <xs:documentation>P235 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"> + <xs:annotation> + <xs:documentation>P252 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Model" type="v1.0:ModelType"> + <xs:annotation> + <xs:documentation>P236 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VIN" type="v1.0:VINType"> + <xs:annotation> + <xs:documentation>P238 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> + <xs:annotation> + <xs:documentation>P239 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_HeavyLorryParametersSequenceGroup_1"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_GeneralParametersSequenceGroup"/> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P036 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationHeavyLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P037 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_ChassisLorryParametersSequenceGroup"/> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_HeavyLorryParametersSequenceGroup_2"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PTO" type="v2.4:AbstractPTODataType"/> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VocationalVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P270 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NgTankSystem" type="v2.1:NgTankSystemType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P275 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SleeperCab" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P276 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_HeavyLorryPEVParametersSequenceGroup_2"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="PTO" type="v2.4:AbstractPTODataType"/> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VocationalVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P270 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="SleeperCab" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P276 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_MediumLorryParametersSequenceGroup_1"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_GeneralParametersSequenceGroup"/> + <xs:element name="LegislativeCategory" type="v2.4:LegislativeCategoryMediumLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P251 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationMediumLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P036 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationMediumLorryDeclarationType"> + <xs:annotation> + <xs:documentation>P037 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:group ref="v2.4:Vehicle_ChassisLorryParametersSequenceGroup"/> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_MediumLorryParametersSequenceGroup_2"> + <xs:sequence> + <xs:element name="CargoVolume" minOccurs="0"> + <xs:annotation> + <xs:documentation>P292 - [m³]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minExclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="NgTankSystem" type="v1.0:NgTankSystemType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P275 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_MediumLorryPEVParametersSequenceGroup_2"> + <xs:sequence> + <xs:element name="CargoVolume" minOccurs="0"> + <xs:annotation> + <xs:documentation>P292 - [m³]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="v1.0:Double3"> + <xs:minExclusive value="0.000"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + <xs:group ref="v2.4:Vehicle_RetarderSequenceGroup"/> + <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> + <xs:annotation> + <xs:documentation>P180 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="ZeroEmissionVehicle" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P269 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="VehicleTypeApprovalNumber" type="v2.4:VehicleTypeApprovalNumberType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P352 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_PrimaryBusParametersSequenceGroup"> + <xs:sequence> + <xs:group ref="v2.4:Vehicle_GeneralParametersSequenceGroup"/> + <xs:group ref="v2.4:Vehicle_ChassisPrimaryBusParametersSequenceGroup"/> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_RetarderSequenceGroup"> + <xs:sequence> + <xs:element name="RetarderType" type="v1.0:RetarderTypeType"> + <xs:annotation> + <xs:documentation>P052 - enum</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="RetarderRatio" type="v1.0:RetarderRatioType" minOccurs="0"> + <xs:annotation> + <xs:documentation>P053 - [-]</xs:documentation> + </xs:annotation> + </xs:element> + </xs:sequence> + </xs:group> + <xs:group name="Vehicle_xEV-Parameters_SequenceGroup"> + <xs:sequence> + <xs:element name="OvcHev" type="xs:boolean"> + <xs:annotation> + <xs:documentation>P401 - bool</xs:documentation> + </xs:annotation> + </xs:element> + <xs:element name="MaxChargingPower" minOccurs="0"> + <xs:annotation> + <xs:documentation>P402 - [W]</xs:documentation> + </xs:annotation> + <xs:simpleType> + <xs:restriction base="xs:int"> + <xs:minExclusive value="0"/> + </xs:restriction> + </xs:simpleType> + </xs:element> + </xs:sequence> + </xs:group> +</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd deleted file mode 100644 index 6bb0fa8e1e20a64fc317c3642108a725dfca7c93..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.6_Buses.xsd +++ /dev/null @@ -1,712 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> -<xs:schema xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> - <xs:complexType name="AbstractCompletedVehicleAuxiliaryDataDeclarationType" abstract="true"/> - <xs:complexType name="AbstractCompletedVehicleComponentsDeclarationType" abstract="true"/> - <xs:complexType name="AbstractPrimaryVehicleAuxiliaryDataDeclarationType" abstract="true"/> - <xs:complexType name="AbstractPrimaryVehicleComponentsDeclarationType" abstract="true"/> - <xs:complexType name="GearboxDataDeclarationType"> - <xs:annotation> - <xs:documentation>Gearbox Component</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="v1.0:AbstractTransmissionDataDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P205</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P206</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CertificationNumber" type="v1.0:CertificationNumberType"> - <xs:annotation> - <xs:documentation>P262</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P208</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AppVersion" type="v1.0:AppVersionType"> - <xs:annotation> - <xs:documentation>P209</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TransmissionType" type="v1.0:GearboxTransmissionTypeType"> - <xs:annotation> - <xs:documentation>P076 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="MainCertificationMethod" type="v1.0:GearboxCertificationOptionType"> - <xs:annotation> - <xs:documentation>P254 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="DifferentialIncluded" type="xs:boolean"> - <xs:annotation> - <xs:documentation>Pxxx - [bool[</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxlegearRatio" type="v1.0:Double3"/> - <xs:element name="Gears" type="v2.0:AbstractGearsDeclarationType"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <xs:sequence> - <xs:element name="Data" type="v2.6:AbstractPrimaryVehicleAuxiliaryDataDeclarationType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="PrimaryVehicleAuxiliaryDataDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.6:AbstractPrimaryVehicleAuxiliaryDataDeclarationType"> - <xs:sequence> - <xs:element name="Fan"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology"> - <xs:annotation> - <xs:documentation>P181</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> - <xs:enumeration value="Crankshaft mounted - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 2 stages"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 3 stages"/> - <xs:enumeration value="Crankshaft mounted - On/off clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Electronically controlled visco clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 2 stages"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 3 stages"/> - <xs:enumeration value="Belt driven or driven via transm. - On/off clutch"/> - <xs:enumeration value="Hydraulic driven - Variable displacement pump"/> - <xs:enumeration value="Hydraulic driven - Constant displacement pump"/> - <xs:enumeration value="Electrically driven - Electronically controlled"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="SteeringPump"> - <xs:complexType> - <xs:sequence> - <xs:element name="Technology" maxOccurs="4"> - <xs:annotation> - <xs:documentation>P182</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="v2.6:AuxSPTechnologyType"> - <xs:attribute name="axleNumber" use="required"> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="1"/> - <xs:maxInclusive value="4"/> - </xs:restriction> - </xs:simpleType> - </xs:attribute> - </xs:extension> - </xs:simpleContent> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="ElectricSystem"> - <xs:complexType> - <xs:sequence> - <xs:element name="AlternatorTechnology"> - <xs:annotation> - <xs:documentation>P294 - enum</xs:documentation> - </xs:annotation> - <xs:complexType> - <xs:simpleContent> - <xs:extension base="v2.6:AlternatorTechnologyType"/> - </xs:simpleContent> - </xs:complexType> - </xs:element> - <xs:sequence minOccurs="0"> - <xs:element name="SmartAlternator" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="RatedCurrent" type="xs:integer"> - <xs:annotation> - <xs:documentation>P295 - [A]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RatedVoltage"> - <xs:annotation> - <xs:documentation>P296 - [V]</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:integer"> - <xs:enumeration value="12"/> - <xs:enumeration value="24"/> - <xs:enumeration value="48"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="Battery" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="BatteryTechnology"> - <xs:annotation> - <xs:documentation>P296 - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="lead-acid battery – conventional"/> - <xs:enumeration value="lead-acid battery – AGM"/> - <xs:enumeration value="lead-acid battery – gel"/> - <xs:enumeration value="li-ion battery - high power"/> - <xs:enumeration value="li-ion battery - high energy"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="RatedCapacity" type="xs:integer"> - <xs:annotation> - <xs:documentation>P299 - [Ah]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NominalVoltage"> - <xs:annotation> - <xs:documentation>P298 - [V]</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:integer"> - <xs:enumeration value="12"/> - <xs:enumeration value="24"/> - <xs:enumeration value="48"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="Capacitor" minOccurs="0" maxOccurs="unbounded"> - <xs:complexType> - <xs:sequence> - <xs:element name="CapacitorTechnology"> - <xs:annotation> - <xs:documentation>P300 - [-]</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="with DCDC converter"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="RatedCapacitance" type="xs:integer"> - <xs:annotation> - <xs:documentation>P301 - [F]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RatedVoltage" type="xs:integer"> - <xs:annotation> - <xs:documentation>P302 - [V]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - <xs:element name="SupplyFromHEVPossible" type="xs:boolean"> - <xs:annotation> - <xs:documentation>P303 - bool</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="PneumaticSystem"> - <xs:complexType> - <xs:sequence> - <xs:element name="SizeOfAirSupply" type="v2.6:PneumaticSystemTechnologyType"/> - <xs:element name="CompressorDrive"> - <xs:annotation> - <xs:documentation>P310 - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="mechanically"/> - <xs:enumeration value="electrically"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="Clutch" type="v2.6:PneumaticSystemClutchTypeType"/> - <xs:element name="CompressorRatio" type="v1.0:Double3"/> - <xs:element name="SmartCompressionSystem" type="xs:boolean"/> - <xs:element name="SmartRegenerationSystem" type="xs:boolean"/> - <xs:element name="AirsuspensionControl"> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="mechanically"/> - <xs:enumeration value="electronically"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="PneumaticSCRReagentDosing" type="xs:boolean"/> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="HVAC"> - <xs:complexType> - <xs:sequence> - <xs:element name="AdjustableCoolantThermostat" type="xs:boolean"/> - <xs:element name="EngineWasteGasHeatExchanger" type="xs:boolean"/> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PrimaryVehicleComponentsDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.6:AbstractPrimaryVehicleComponentsDeclarationType"> - <xs:sequence> - <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> - <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> - <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> - <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> - <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> - <xs:element name="Axlegear" type="v2.0:AxlegearComponentDeclarationType"/> - <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> - <xs:element name="Auxiliaries" type="v2.6:PrimaryVehicleAuxiliariesComponentDeclarationType"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="PrimaryVehicleDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractVehicleDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"/> - <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"/> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P236</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VIN" type="v1.0:VINType"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P239</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P036 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P037 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Articulated" type="xs:boolean"/> - <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> - <xs:annotation> - <xs:documentation>P041 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> - <xs:annotation> - <xs:documentation>P198 - [1/min]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RetarderType" type="v1.0:RetarderTypeType"> - <xs:annotation> - <xs:documentation>P052 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RetarderRatio" type="v1.0:RetarderRatioType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P053 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> - <xs:annotation> - <xs:documentation>P180 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ZeroEmissionVehicle" type="xs:boolean"/> - <xs:element name="ADAS" type="v2.1:AbstractAdvancedDriverAssistantSystemsType"/> - <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> - <xs:element name="Components" type="v2.6:AbstractPrimaryVehicleComponentsDeclarationType"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="VehicleComponentsNoAxlegearType"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractVehicleComponentsDeclarationType"> - <xs:sequence> - <xs:element name="Engine" type="v2.0:EngineComponentDeclarationType"/> - <xs:element name="Gearbox" type="v2.0:GearboxComponentDeclarationType"/> - <xs:element name="TorqueConverter" type="v2.0:TorqueConverterComponentDeclarationType" minOccurs="0"/> - <xs:element name="Angledrive" type="v2.0:AngledriveComponentDeclarationType" minOccurs="0"/> - <xs:element name="Retarder" type="v2.0:RetarderComponentDeclarationType" minOccurs="0"/> - <xs:element name="AxleWheels" type="v2.0:AxleWheelsComponentDeclarationType"/> - <xs:element name="Auxiliaries" type="v2.0:AuxiliariesComponentDeclarationType"/> - <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="VehicleMediumLorryDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractVehicleDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P235</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"> - <xs:annotation> - <xs:documentation>P252</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P236</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VIN" type="v1.0:VINType"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P239</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeClass" type="v1.0:LegislativeClassDeclarationType"> - <xs:annotation> - <xs:documentation>P251 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleCategory"> - <xs:annotation> - <xs:documentation>P036 - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="Rigid Lorry"/> - <xs:enumeration value="Tractor"/> - <xs:enumeration value="Van"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P037 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CurbMassChassis" type="v1.0:VehicleCurbMassChassisType"> - <xs:annotation> - <xs:documentation>P038 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> - <xs:annotation> - <xs:documentation>P041 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CargoVolume" minOccurs="0"> - <xs:simpleType> - <xs:restriction base="xs:double"> - <xs:minExclusive value="0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"> - <xs:annotation> - <xs:documentation>P198 - [1/min]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RetarderType" type="v1.0:RetarderTypeType"> - <xs:annotation> - <xs:documentation>P052 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="RetarderRatio" type="v1.0:RetarderRatioType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P053 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AngledriveType" type="v1.0:AngledriveTypeType"> - <xs:annotation> - <xs:documentation>P180 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ZeroEmissionVehicle" type="xs:boolean"/> - <xs:element name="NgTankSystem" type="v1.0:NgTankSystemType" minOccurs="0"/> - <xs:element name="ADAS" type="v2.1:AbstractAdvancedDriverAssistantSystemsType"/> - <xs:element name="TorqueLimits" type="v2.0:AbstractTorqueLimitsType" minOccurs="0"/> - <xs:element name="Components" type="v2.0:AbstractVehicleComponentsDeclarationType"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="AlternatorTechnologyType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="conventional"/> - <xs:enumeration value="smart"/> - <xs:enumeration value="no alternator"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AuxFanTechnologyType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> - <xs:enumeration value="Crankshaft mounted - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 2 stages"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 3 stages"/> - <xs:enumeration value="Crankshaft mounted - On/off clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Electronically controlled visco clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 2 stages"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 3 stages"/> - <xs:enumeration value="Belt driven or driven via transm. - On/off clutch"/> - <xs:enumeration value="Hydraulic driven - Variable displacement pump"/> - <xs:enumeration value="Hydraulic driven - Constant displacement pump"/> - <xs:enumeration value="Electrically driven - Electronically controlled"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AuxSPTechnologyType"> - <xs:annotation> - <xs:documentation>P182</xs:documentation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle/Auxiliaries">182</vectoParam:parameterId> - <vectoParam:comment>Multiple entires allowed, one per steered axle</vectoParam:comment> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="Fixed displacement"/> - <xs:enumeration value="Fixed displacement with elec. control"/> - <xs:enumeration value="Dual displacement with mech. control"/> - <xs:enumeration value="Dual displacement with elec. control"/> - <xs:enumeration value="Variable displacement mech. controlled"/> - <xs:enumeration value="Variable displacement elec. controlled"/> - <xs:enumeration value="Electric driven pump"/> - <xs:enumeration value="Full electric steering gear"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="DoorDriveTechnologyType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">291</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="electric"/> - <xs:enumeration value="pneumatic"/> - <xs:enumeration value="mixed"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="HVACTechnology"> - <xs:restriction base="xs:string"> - <xs:enumeration value="none"/> - <xs:enumeration value="2-stage"/> - <xs:enumeration value="3-stage"/> - <xs:enumeration value="4-stage"/> - <xs:enumeration value="continuous"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="LegislativeClassDeclarationType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="N2"/> - <xs:enumeration value="N3"/> - <xs:enumeration value="M3"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="PneumaticSystemClutchTypeType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="none"/> - <xs:enumeration value="visco"/> - <xs:enumeration value="mechanically"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="PneumaticSystemTechnologyType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="Small"/> - <xs:enumeration value="Medium Supply 1-stage"/> - <xs:enumeration value="Medium Supply 2-stage"/> - <xs:enumeration value="Large Supply 1-stage"/> - <xs:enumeration value="Large Supply 2-stage"/> - <xs:enumeration value="not applicable"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="RegisteredClassType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">282</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P282 - enum</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="I"/> - <xs:enumeration value="II"/> - <xs:enumeration value="III"/> - <xs:enumeration value="A"/> - <xs:enumeration value="B"/> - <xs:enumeration value="I+II"/> - <xs:enumeration value="II+III"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">037</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P037</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="4x2"/> - <xs:enumeration value="4x2F"/> - <xs:enumeration value="6x2"/> - <xs:enumeration value="6x4"/> - <xs:enumeration value="8x2"/> - <xs:enumeration value="8x4"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="ChassisConfigurationDeclarationType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">036</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P036 - enum (Declaration)</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="Bus"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VehicleCodeType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">285</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P285 - enum</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="CA"/> - <xs:enumeration value="CB"/> - <xs:enumeration value="CC"/> - <xs:enumeration value="CD"/> - <xs:enumeration value="CE"/> - <xs:enumeration value="CF"/> - <xs:enumeration value="CG"/> - <xs:enumeration value="CH"/> - <xs:enumeration value="CI"/> - <xs:enumeration value="CJ"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="ExemptedPrimaryHeavyBusType"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractVehicleDeclarationType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"/> - <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"/> - <xs:element name="Model" type="v1.0:ModelType"> - <xs:annotation> - <xs:documentation>P236</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VIN" type="v1.0:VINType"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P239</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeCategory" type="v2.6:LegislativeClassDeclarationType"> - <xs:annotation> - <xs:documentation>P251 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P036 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"> - <xs:annotation> - <xs:documentation>P037 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Articulated" type="xs:boolean"/> - <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"> - <xs:annotation> - <xs:documentation>P041 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ZeroEmissionVehicle" type="xs:boolean"/> - <xs:element name="SumNetPower" type="xs:int"> - <xs:annotation> - <xs:documentation>P331 - [W]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Technology"> - <xs:annotation> - <xs:documentation>P332 - enum</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:string"> - <xs:enumeration value="HEV Article 9 exempted"/> - <xs:enumeration value="PEV Article 9 exempted"/> - <xs:enumeration value="HV Article 9 exempted"/> - <xs:enumeration value="Fuel cell vehicle"/> - <xs:enumeration value="H2 ICE"/> - <xs:enumeration value="Dual fuel vehicle Article 9 exempted"/> - <xs:enumeration value="In-motion charging Article 9 exempted"/> - <xs:enumeration value="Other technology Article 9 exempted"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> -</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd deleted file mode 100644 index 3665c25e457be7231a3ecb0ce59c46d2f078d6ff..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.2.8_Stage.xsd +++ /dev/null @@ -1,493 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Franz Josef Kober (Technische Universität Graz) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:di="http://www.w3.org/2000/09/xmldsig#" 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.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> - <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3_DEV.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/> - <xs:complexType name="AbstractCompletedVehicleAuxiliaryDataDeclarationType" abstract="true"/> - <xs:complexType name="AbstractCompletedVehicleComponentsDeclarationType" abstract="true"/> - <xs:complexType name="CompletedVehicleComponentsDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.8:AbstractCompletedVehicleComponentsDeclarationType"> - <xs:sequence> - <xs:element name="AirDrag" type="v2.0:AirDragComponentDeclarationType" minOccurs="0"/> - <xs:element name="Auxiliaries" type="v2.8:CompletedVehicleAuxiliariesComponentDeclarationType" minOccurs="0"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="CompletedVehicleAuxiliariesComponentDeclarationType"> - <xs:sequence> - <xs:element name="Data" type="v2.8:AbstractCompletedVehicleAuxiliaryDataDeclarationType"/> - </xs:sequence> - </xs:complexType> - <xs:complexType name="CompletedVehicleAuxiliaryDataDeclarationType"> - <xs:complexContent> - <xs:extension base="v2.8:AbstractCompletedVehicleAuxiliaryDataDeclarationType"> - <xs:sequence minOccurs="0"> - <xs:element name="ElectricSystem" minOccurs="0"> - <xs:complexType> - <xs:sequence> - <xs:element name="LEDLights"> - <xs:complexType> - <xs:sequence minOccurs="0"> - <xs:element name="Interiorlights" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P304 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Dayrunninglights" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P305 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Positionlights" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P306 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Brakelights" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P307 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Headlights" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P308 - bool</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - <xs:element name="HVAC" minOccurs="0"> - <xs:complexType> - <xs:sequence minOccurs="0"> - <xs:sequence minOccurs="0"> - <xs:element name="SystemConfiguration"> - <xs:annotation> - <xs:documentation>P317 - int</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="0"/> - <xs:maxInclusive value="10"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="HeatPumpTypeDriverCompartment" type="v2.8:HVACHeatPumpType"> - <xs:annotation> - <xs:documentation>P318 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="HeatPumpModeDriverCompartment" type="v2.8:HVACHeatPumpModeType"> - <xs:annotation> - <xs:documentation>P319 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:sequence maxOccurs="unbounded"> - <xs:element name="HeatPumpTypePassengerCompartment" type="v2.8:HVACHeatPumpType"> - <xs:annotation> - <xs:documentation>P320 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="HeatPumpModePassengerCompartment" type="v2.8:HVACHeatPumpModeType"> - <xs:annotation> - <xs:documentation>P321 - enum</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:sequence> - <xs:element name="AuxiliaryHeaterPower" minOccurs="0"> - <xs:annotation> - <xs:documentation>P322 - [W]</xs:documentation> - </xs:annotation> - <xs:simpleType> - <xs:restriction base="xs:int"> - <xs:minInclusive value="0"/> - </xs:restriction> - </xs:simpleType> - </xs:element> - <xs:element name="DoubleGlazing" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P323 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AdjustableAuxiliaryHeater" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P325 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="SeparateAirDistributionDucts" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P327 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="WaterElectricHeater" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P328 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AirElectricHeater" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P329 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="OtherHeatingTechnology" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P330 - bool</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:complexType> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="ExemptedInterimStageInputType"> - <xs:annotation> - <xs:documentation>Exempted vehicle stage input parts</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="v2.8:AbstractCompletedBusVehicleType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P235</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"> - <xs:annotation> - <xs:documentation>P252</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VIN" type="v1.0:VINType"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P239</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P236</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeCategory" type="v2.8:LegislativeClassDeclarationType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P251 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P038 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P041 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ClassBus" type="v2.6:RegisteredClassType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P282 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:sequence minOccurs="0"> - <xs:element name="NumberPassengerSeatsLowerDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P283 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengersStandingLowerDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P354 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengerSeatsUpperDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P284 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengersStandingUpperDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P355 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:element name="BodyworkCode" type="v2.6:VehicleCodeType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P285 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P286 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="HeightIntegratedBody" type="v2.8:VehicleDimensionType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P287 - [mm]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="InterimStageInputType"> - <xs:annotation> - <xs:documentation>Vehicle stage input parts</xs:documentation> - </xs:annotation> - <xs:complexContent> - <xs:extension base="v2.8:AbstractCompletedBusVehicleType"> - <xs:sequence> - <xs:element name="Manufacturer" type="v1.0:ManufacturerType"> - <xs:annotation> - <xs:documentation>P235</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ManufacturerAddress" type="v1.0:ManufacturerAddressType"> - <xs:annotation> - <xs:documentation>P252</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VIN" type="v1.0:VINType"> - <xs:annotation> - <xs:documentation>P238</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Date" type="v1.0:DateTimeWithTimezone"> - <xs:annotation> - <xs:documentation>P239</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="Model" type="v1.0:ModelType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P236</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LegislativeCategory" type="v2.8:LegislativeClassDeclarationType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P251 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="CorrectedActualMass" type="v1.0:VehicleCurbMassChassisType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P038 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P041 - [kg]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="AirdragModifiedMultistage" type="v2.8:AirdragModifiedMultistageType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P334 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NgTankSystem" type="v1.0:NgTankSystemType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P275 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ClassBus" type="v2.6:RegisteredClassType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P282 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:sequence minOccurs="0"> - <xs:element name="NumberPassengerSeatsLowerDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P283 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengersStandingLowerDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P354 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengerSeatsUpperDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P284 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="NumberPassengersStandingUpperDeck" type="v2.8:NumberOfPassengersType"> - <xs:annotation> - <xs:documentation>P355 - [-]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:element name="BodyworkCode" type="v2.6:VehicleCodeType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P285 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="LowEntry" type="xs:boolean" minOccurs="0"> - <xs:annotation> - <xs:documentation>P286 - bool</xs:documentation> - </xs:annotation> - </xs:element> - <xs:sequence minOccurs="0"> - <xs:element name="HeightIntegratedBody" type="v2.8:VehicleDimensionType"> - <xs:annotation> - <xs:documentation>P287 - [mm]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleLength" type="v2.8:VehicleDimensionType"> - <xs:annotation> - <xs:documentation>P288 - [mm]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleWidth" type="v2.8:VehicleDimensionType"> - <xs:annotation> - <xs:documentation>P289 - [mm]</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="EntranceHeight" type="v2.8:VehicleDimensionType"> - <xs:annotation> - <xs:documentation>P290 - [mm]</xs:documentation> - </xs:annotation> - </xs:element> - </xs:sequence> - <xs:element name="DoorDriveTechnology" type="v2.6:DoorDriveTechnologyType" minOccurs="0"> - <xs:annotation> - <xs:documentation>P291 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="VehicleDeclarationType" type="v2.8:DeclarationType"> - <xs:annotation> - <xs:documentation>P293 - enum</xs:documentation> - </xs:annotation> - </xs:element> - <xs:element name="ADAS" type="v2.3:AdvancedDriverAssistantSystemsType" minOccurs="0"/> - <xs:element name="Components" type="v2.8:AbstractCompletedVehicleComponentsDeclarationType" minOccurs="0"/> - </xs:sequence> - </xs:extension> - </xs:complexContent> - </xs:complexType> - <xs:simpleType name="LegislativeClassDeclarationType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">251</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P251 - enum</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="M3"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="AirdragModifiedMultistageType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">334</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P334 - [-]</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:boolean"/> - </xs:simpleType> - <xs:simpleType name="NumberOfPassengersType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">283</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle">284</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:int"> - <xs:minInclusive value="0"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="VehicleDimensionType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">287</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle">288</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle">289</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle">290</vectoParam:parameterId> - <vectoParam:unit>mm</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:int"/> - </xs:simpleType> - <xs:simpleType name="DeclarationType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle">293</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - <xs:documentation>P293 - enum</xs:documentation> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="interim"/> - <xs:enumeration value="final"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="HVACHeatPumpModeType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle/Auxiliaries">319</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle/Auxiliaries">321</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="heating"/> - <xs:enumeration value="heating and cooling"/> - <xs:enumeration value="cooling"/> - <xs:enumeration value="N.A."/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="HVACHeatPumpType"> - <xs:annotation> - <xs:appinfo> - <vectoParam:description> - <vectoParam:parameterId component="Vehicle/Auxiliaries">318</vectoParam:parameterId> - <vectoParam:parameterId component="Vehicle/Auxiliaries">320</vectoParam:parameterId> - <vectoParam:unit>-</vectoParam:unit> - </vectoParam:description> - </xs:appinfo> - </xs:annotation> - <xs:restriction base="xs:string"> - <xs:enumeration value="none"/> - <xs:enumeration value="R-744"/> - <xs:enumeration value="non R-744 2-stage"/> - <xs:enumeration value="non R-744 3-stage"/> - <xs:enumeration value="non R-744 4-stage"/> - <xs:enumeration value="non R-744 continuous"/> - </xs:restriction> - </xs:simpleType> - <xs:complexType name="AirDragModifiedUseStandardValueType"> - <xs:complexContent> - <xs:extension base="v1.0:AbstractAirdragDataDeclarationType"/> - </xs:complexContent> - </xs:complexType> - <xs:complexType name="AbstractCompletedBusVehicleType" abstract="true"> - <xs:complexContent> - <xs:extension base="v2.0:AbstractVehicleDeclarationType"/> - </xs:complexContent> - </xs:complexType> -</xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd index d83461c36c3b749000ad77586ab487c08997535b..ffc8be13bd2317627a4ad87a9778617732c2e0bd 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoDeclarationDefinitions.xsd @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com) by Helmut Eichlseder (TU Graz/Inst. f. VKM und THD) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:vdj="urn:tugraz:ivt:VectoAPI:DeclarationJob" xmlns:vdi="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" 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" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vectoParam="urn:tugraz:ivt:VectoAPI:ParameterDocumentation" xmlns:vdj="urn:tugraz:ivt:VectoAPI:DeclarationJob" xmlns:vdi="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:vdd="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" 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:v2.10c="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.1" xmlns:v2.10j="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> <!-- This is a convienience file that imports all supported declaration definitions @@ -10,8 +10,6 @@ <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" schemaLocation="VectoDeclarationDefinitions.2.2.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" schemaLocation="VectoDeclarationDefinitions.2.2.1.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3_DEV.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaLocation="VectoDeclarationDefinitions.2.4.xsd"/> </xs:schema> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd index f8ed77809325131eef95a31b782ff5d3f8862e93..5760679f6effbcd62204d7ce5c1db3529beada39 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputManufacturer.0.8.xsd @@ -1,12 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> <!--W3C XML Schema generated by XMLSpy vXMLSpy Professional Edition v2016 rel. 2 (x64) (http://www.altova.com)--> -<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8"> +<xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:xs="http://www.w3.org/2001/XMLSchema" +xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" +xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.8"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaLocation="VectoDeclarationDefinitions.2.4.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/> <xs:complexType name="AbstractComponentsType" abstract="true"/> @@ -242,7 +245,7 @@ <xs:extension base="AbstractComponentsType"> <xs:sequence> <xs:element name="AirDrag" type="AirdragType"/> - <xs:element name="Auxiliaries" type="v2.6:AbstractCompletedVehicleAuxiliaryDataDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:Abstract_AUX_Conventional_CompletedBusDeclarationType"/> </xs:sequence> </xs:extension> </xs:complexContent> @@ -258,7 +261,7 @@ <xs:element name="Angledrive" type="AngledriveType" minOccurs="0"/> <xs:element name="Axlegear" type="AxlegearType"/> <xs:element name="AxleWheels" type="AxleWheelsType"/> - <xs:element name="Auxiliaries" type="v2.6:AbstractPrimaryVehicleAuxiliaryDataDeclarationType"/> + <xs:element name="Auxiliaries" type="v2.4:Abstract_AUX_Conventional_CompletedBusDeclarationType"/> </xs:sequence> </xs:extension> </xs:complexContent> @@ -852,12 +855,12 @@ </xs:restriction> </xs:simpleType> </xs:element> - <xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType"> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationPrimaryBusDeclarationType"> <xs:annotation> <xs:documentation>P036 - enum</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationPrimaryBusLorryDeclarationType"> <xs:annotation> <xs:documentation>P037 - enum</xs:documentation> </xs:annotation> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd similarity index 92% rename from VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd rename to VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd index 9204b1753719dd846d8299d925ac3942d71aea0a..eb4db2f62008514f6e38d572078374c2f89a8148 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistage.0.1.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputMultistep.0.1.xsd @@ -1,15 +1,15 @@ <?xml version="1.0" encoding="UTF-8"?> <!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> -<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" +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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" xmlns:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" elementFormDefault="qualified" attributeFormDefault="unqualified" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:ParameterDocumentation ParameterDocumentation.xsd"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" schemaLocation="VectoDeclarationDefinitions.1.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaLocation="VectoDeclarationDefinitions.2.0.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" schemaLocation="VectoDeclarationDefinitions.2.1.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3_DEV.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" schemaLocation="VectoDeclarationDefinitions.2.6_Buses.xsd"/> - <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaLocation="VectoDeclarationDefinitions.2.8_Stage.xsd"/> - <xs:element name="VectoOutputMultistage" type="vif:VectoOutputMultistageType"> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" schemaLocation="VectoDeclarationDefinitions.2.3.xsd"/> + <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaLocation="VectoDeclarationDefinitions.2.4.xsd"/> + <xs:element name="VectoOutputMultistep" type="vif:VectoOutputMultistepType"> <xs:annotation> <xs:documentation>Comment describing your root element</xs:documentation> </xs:annotation> @@ -20,7 +20,7 @@ <xs:complexType name="AbstractAxleWheelsComponentPIFType" abstract="true"/> <xs:complexType name="AbstractAxleWheelsDataPIFType" abstract="true"/> <xs:complexType name="AbstractEngineDataPIFType" abstract="true"/> - <xs:complexType name="AbstractManufacturingStageDataType" abstract="true"> + <xs:complexType name="AbstractManufacturingStepDataType" abstract="true"> <xs:attribute name="id" type="xs:NCName" use="required"/> </xs:complexType> <xs:complexType name="AbstractPrimaryVehicleType" abstract="true"/> @@ -106,13 +106,13 @@ <xs:restriction base="xs:string"> <xs:enumeration value="Crankshaft mounted - Electronically controlled visco clutch"/> <xs:enumeration value="Crankshaft mounted - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 2 stages"/> - <xs:enumeration value="Crankshaft mounted - Discrete step clutch 3 stages"/> + <xs:enumeration value="Crankshaft mounted - Discrete step clutch 2 steps"/> + <xs:enumeration value="Crankshaft mounted - Discrete step clutch 3 steps"/> <xs:enumeration value="Crankshaft mounted - On/off clutch"/> <xs:enumeration value="Belt driven or driven via transm. - Electronically controlled visco clutch"/> <xs:enumeration value="Belt driven or driven via transm. - Bimetallic controlled visco clutch"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 2 stages"/> - <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 3 stages"/> + <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 2 steps"/> + <xs:enumeration value="Belt driven or driven via transm. - Discrete step clutch 3 steps"/> <xs:enumeration value="Belt driven or driven via transm. - On/off clutch"/> <xs:enumeration value="Hydraulic driven - Variable displacement pump"/> <xs:enumeration value="Hydraulic driven - Constant displacement pump"/> @@ -132,7 +132,7 @@ </xs:annotation> <xs:complexType> <xs:simpleContent> - <xs:extension base="v2.6:AuxSPTechnologyType"> + <xs:extension base="v2.4:AuxSPTechnologyPrimaryBusType"> <xs:attribute name="axleNumber" use="required"> <xs:simpleType> <xs:restriction base="xs:int"> @@ -157,7 +157,7 @@ </xs:annotation> <xs:complexType> <xs:simpleContent> - <xs:extension base="v2.6:AlternatorTechnologyType"/> + <xs:extension base="v2.4:AlternatorTechnologyType"/> </xs:simpleContent> </xs:complexType> </xs:element> @@ -244,7 +244,7 @@ </xs:complexType> </xs:element> </xs:sequence> - <xs:element name="SupplyFromHEVPossible" type="xs:boolean"> + <xs:element name="SupplyFromHEVPossible" type="xs:boolean" minOccurs="0"> <xs:annotation> <xs:documentation>P303 - bool</xs:documentation> </xs:annotation> @@ -255,7 +255,7 @@ <xs:element name="PneumaticSystem"> <xs:complexType> <xs:sequence> - <xs:element name="SizeOfAirSupply" type="v2.6:PneumaticSystemTechnologyType"/> + <xs:element name="SizeOfAirSupply" type="v2.4:PneumaticSystemTechnologyType"/> <xs:element name="CompressorDrive"> <xs:annotation> <xs:documentation>P310 - enum</xs:documentation> @@ -267,7 +267,7 @@ </xs:restriction> </xs:simpleType> </xs:element> - <xs:element name="Clutch" type="v2.6:PneumaticSystemClutchTypeType"/> + <xs:element name="Clutch" type="v2.4:PneumaticSystemClutchTypeType"/> <xs:element name="CompressorRatio" type="v1.0:Double3"/> <xs:element name="SmartCompressionSystem" type="xs:boolean"/> <xs:element name="SmartRegenerationSystem" type="xs:boolean"/> @@ -367,12 +367,12 @@ </xs:extension> </xs:complexContent> </xs:complexType> - <xs:complexType name="BusManufacturingStageDataType"> + <xs:complexType name="BusManufacturingStepDataType"> <xs:complexContent> - <xs:extension base="vif:AbstractManufacturingStageDataType"> + <xs:extension base="vif:AbstractManufacturingStepDataType"> <xs:sequence> - <xs:element name="HashPreviousStage" type="v1.0:SignatureType"/> - <xs:element name="Vehicle" type="v2.8:AbstractCompletedBusVehicleType"/> + <xs:element name="HashPreviousStep" type="v1.0:SignatureType"/> + <xs:element name="Vehicle" type="v2.4:AbstractCompletedBusVehicleType"/> <xs:element name="ApplicationInformation" type="vif:ApplicationInformationPrimaryVehicleType"/> </xs:sequence> </xs:extension> @@ -472,12 +472,12 @@ </xs:extension> </xs:simpleContent> </xs:complexType> - <xs:complexType name="ManufacturingStageType"> + <xs:complexType name="ManufacturingStepType"> <xs:sequence> - <xs:element name="Data" type="vif:AbstractManufacturingStageDataType"/> + <xs:element name="Data" type="vif:AbstractManufacturingStepDataType"/> <xs:element name="Signature" type="v1.0:SignatureType"/> </xs:sequence> - <xs:attribute name="stageCount" use="required"> + <xs:attribute name="stepCount" use="required"> <xs:simpleType> <xs:restriction base="xs:int"> <xs:minInclusive value="2"/> @@ -722,10 +722,10 @@ </xs:extension> </xs:complexContent> </xs:complexType> - <xs:complexType name="VectoOutputMultistageType"> + <xs:complexType name="VectoOutputMultistepType"> <xs:sequence> <xs:element name="PrimaryVehicle" type="vif:PrimaryVehicleType"/> - <xs:element name="ManufacturingStage" type="vif:ManufacturingStageType" minOccurs="0" maxOccurs="unbounded"/> + <xs:element name="ManufacturingStep" type="vif:ManufacturingStepType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="VehicleComponentsPIFType"> @@ -778,12 +778,12 @@ </xs:restriction> </xs:simpleType> </xs:element> - <xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType"> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationPrimaryBusDeclarationType"> <xs:annotation> <xs:documentation>P036 - enum</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationPrimaryBusLorryDeclarationType"> <xs:annotation> <xs:documentation>P037 - enum</xs:documentation> </xs:annotation> @@ -853,8 +853,8 @@ <xs:documentation>P251 - [-]</xs:documentation> </xs:annotation> </xs:element> - <xs:element name="ChassisConfiguration" type="v2.6:ChassisConfigurationDeclarationType"/> - <xs:element name="AxleConfiguration" type="v2.6:VehicleAxleConfigurationDeclarationType"/> + <xs:element name="ChassisConfiguration" type="v2.4:ChassisConfigurationPrimaryBusDeclarationType"/> + <xs:element name="AxleConfiguration" type="v2.4:AxleConfigurationPrimaryBusLorryDeclarationType"/> <xs:element name="Articulated" type="xs:boolean"/> <xs:element name="TechnicalPermissibleMaximumLadenMass" type="v1.0:VehicleGrossVehicleMassType"/> <xs:element name="IdlingSpeed" type="v1.0:EngineDeclaredSpeedType"/> diff --git a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd index cd3ff1b79fcba880420809855d0a7678992b8652..9ba5e496bdee0b24f9ff5ca7327129af5da8a128 100644 --- a/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd +++ b/VectoCore/VectoCore/Resources/XSD/VectoOutputPrimaryBus.xsd @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Franz Kober (Technische Universität Graz) --> +<!-- edited with XMLSpy v2021 (x64) (http://www.altova.com) by Markus Quaritsch (Technische Universität Graz) --> <xs:schema xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:common="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" xmlns:pif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation" xmlns:out="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" targetNamespace="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationOutputDefinitions" schemaLocation="VectoOutputDefinitions.xsd"/> <xs:import namespace="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions" schemaLocation="VectoDeclarationDefinitions.xsd"/> diff --git a/VectoCore/VectoCore/Utils/Ninject/UseFirstTwoArgumentsAsInstanceProvider.cs b/VectoCore/VectoCore/Utils/Ninject/UseFirstTwoArgumentsAsInstanceProvider.cs new file mode 100644 index 0000000000000000000000000000000000000000..92e7592a93b2d2ad8d28927ec4bbfff620d33d00 --- /dev/null +++ b/VectoCore/VectoCore/Utils/Ninject/UseFirstTwoArgumentsAsInstanceProvider.cs @@ -0,0 +1,67 @@ +using System; +using System.Linq; +using System.Reflection; +using Ninject.Extensions.Factory; +using Ninject.Extensions.Factory.Factory; +using Ninject.Parameters; +using TUGraz.VectoCommon.Exceptions; + +namespace TUGraz.VectoCore.Utils.Ninject +{ + public class UseFirstTwoArgumentsAsInstanceProvider : StandardInstanceProvider + { + public static string GetName(string first, string second) + { + return first + second; + } + + private int _skipNamingArguments; + /// <summary> + /// Uses the first to Arguments to resolve a named binding, the arguments are combined with the static GetName Method of this class, + /// </summary> + /// <param name="skipNamingArguments">Defines how many arguments are skipped and not passed to the constructor of the created object</param> + /// <param name="fallback">Defines if a anonymous bing should be used if no binding exists for the given name</param> + public UseFirstTwoArgumentsAsInstanceProvider(int skipNamingArguments = 0, bool fallback = false) : base() + { + _skipNamingArguments = skipNamingArguments; + base.Fallback = fallback; + } + + public UseFirstTwoArgumentsAsInstanceProvider() : base() + { + + } + + protected override IConstructorArgument[] GetConstructorArguments(MethodInfo methodInfo, object[] arguments) + { + if (arguments.Length < 2) + { + return base.GetConstructorArguments(methodInfo, arguments).ToArray(); + } + return base.GetConstructorArguments(methodInfo, arguments).Skip(_skipNamingArguments).ToArray(); + } + + protected override string GetName(MethodInfo methodInfo, object[] arguments) + { + if (arguments.Length < 2) + { + return ""; + } + + return GetName(arguments[0].ToString(), arguments[1].ToString()); + } + + public override object GetInstance(IInstanceResolver instanceResolver, MethodInfo methodInfo, object[] arguments) + { + try + { + return base.GetInstance(instanceResolver, methodInfo, arguments); + } + catch (Exception e) + { + throw new VectoException("failed to create instance for '{1}' via '{0}' version '{2}'", e, methodInfo.Name, methodInfo.ReturnType.Name, arguments[0]); + + } + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/PathHelper.cs b/VectoCore/VectoCore/Utils/PathHelper.cs new file mode 100644 index 0000000000000000000000000000000000000000..48cbe7e9048af91a56b19549f6452666aa51b3ba --- /dev/null +++ b/VectoCore/VectoCore/Utils/PathHelper.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Windows.Forms.VisualStyles; +using Castle.Core.Internal; + +namespace TUGraz.VectoCore.Utils +{ + public static class PathHelper + { + public static string GetRelativePath(string relativeTo, string path) + { + + + var relativeFullPath = Path.GetFullPath(relativeTo); + var relativeToFileName = Path.GetFileName(relativeFullPath); + relativeFullPath = relativeFullPath.RemoveLastOccurence(relativeToFileName); + + var pathFullPath = Path.GetFullPath(path); + var pathFileName = Path.GetFileName(pathFullPath); + pathFullPath = pathFullPath.RemoveLastOccurence(pathFileName); + + var rootEqual = Path.GetPathRoot(relativeFullPath) == Path.GetPathRoot(path); + if (!rootEqual) + { + throw new ArgumentException("Paths must be on the same drive"); + } + + + var pathArray = pathFullPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Where(s => !s.IsNullOrEmpty()); + var relativeToArray = relativeFullPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).Where(s => !s.IsNullOrEmpty()); + var result = GetRelativePath(relativeToArray, pathArray); + + + return Path.Combine(result, pathFileName); + } + + public static string GetAbsolutePath(string relativeTo, string relativePath) + { + return Path.GetFullPath(Path.Combine(Path.GetDirectoryName(relativeTo), relativePath)); + //var uri = new Uri(baseUri: new Uri(relativeTo), relativeUri: relativePath); + //return Path.GetFullPath(uri.AbsolutePath); + } + + private static string GetRelativePath(IEnumerable<string> relativeTo, IEnumerable<string> path) + { + var relList = relativeTo.ToList(); + var pathList = path.ToList(); + var resultList = new LinkedList<string>(); + for (int i = 0; i < Math.Max(relList.Count, pathList.Count); i++) { + var relRemaining = i < relList.Count; + var pathRemaining = i < pathList.Count; + + if ((relRemaining && pathRemaining) && relList[i] == pathList[i]) { + //ignore CommonNode + continue; + } + + if (relRemaining) { + resultList.AddFirst(".."); + } + + if (pathRemaining) { + resultList.AddLast(pathList[i]); + } + } + return Path.Combine(resultList.ToArray()); + } + + private static string RemoveLastOccurence(this string original, string remove) + { + + var lastIndex = original.LastIndexOf(remove, StringComparison.InvariantCulture); + + + return lastIndex != -1 ? original.Remove(lastIndex, remove.Length) : original; + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs b/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs new file mode 100644 index 0000000000000000000000000000000000000000..5a89d33169735f82cb35d60a246d7461ebaeec5e --- /dev/null +++ b/VectoCore/VectoCore/Utils/XAttributeEqualityComparer.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Xml.Linq; + +namespace TUGraz.VectoCore.Utils +{ + public class XAttributeEqualityComparer : IEqualityComparer<XAttribute> + { + public bool Equals(XAttribute x, XAttribute y) + { + if (ReferenceEquals(x, y)) + return true; + if (ReferenceEquals(x, null)) + return false; + if (ReferenceEquals(y, null)) + return false; + if (x.GetType() != y.GetType()) + return false; + return x.IsNamespaceDeclaration == y.IsNamespaceDeclaration && x.Name.Equals(y.Name) && x.NodeType == y.NodeType && x.Value == y.Value; + } + + public int GetHashCode(XAttribute obj) + { + unchecked + { + var hashCode = obj.IsNamespaceDeclaration.GetHashCode(); + hashCode = (hashCode * 397) ^ obj.Name.GetHashCode(); + hashCode = (hashCode * 397) ^ (int)obj.NodeType; + hashCode = (hashCode * 397) ^ obj.Value.GetHashCode(); + return hashCode; + } + } + } +} diff --git a/VectoCore/VectoCore/Utils/XMLDefinitions.cs b/VectoCore/VectoCore/Utils/XMLDefinitions.cs index 0ba9cc226044eafa44309797d891f3ac4689f40c..750196c6ef68408d1533d1f0cd649c14f7dc1f7b 100644 --- a/VectoCore/VectoCore/Utils/XMLDefinitions.cs +++ b/VectoCore/VectoCore/Utils/XMLDefinitions.cs @@ -47,7 +47,20 @@ namespace TUGraz.VectoCore.Utils CustomerReport = 1 << 7, MonitoringReport = 1 << 8, VTPReport = 1 << 9, - MultistageOutputData = 1 << 10 + MultistepOutputData = 1 << 10 + } + + public static class XmlDocumentTypeExtensions + { + public static string GetName(this XmlDocumentType docType) + { + switch (docType) { + case XmlDocumentType.MultistepOutputData: + return "Multistep output data"; + default: + return docType.ToString(); + } + } } @@ -55,7 +68,7 @@ namespace TUGraz.VectoCore.Utils { //public const string SchemaBaseURL = "file:///E:/QUAM/Workspace/VECTO_quam/VectoCore/VectoCore/Resources/XSD/"; public const string SCHEMA_BASE_LOCATION = "https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/"; - + public const string DEV = ":DEV"; public const string ENGINEERING_NAMESPACE = "urn:tugraz:ivt:VectoAPI:EngineeringDefinitions"; @@ -84,12 +97,10 @@ namespace TUGraz.VectoCore.Utils public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V22 = DECLARATION_NAMESPACE + ":v2.2"; public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V221 = DECLARATION_NAMESPACE + ":v2.2.1"; + public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V23 = DECLARATION_NAMESPACE + ":v2.3"; - public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V23 = DECLARATION_NAMESPACE + ":DEV:v2.3"; - public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V26 = DECLARATION_NAMESPACE + ":DEV:v2.6"; - - public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V28 = DECLARATION_NAMESPACE + ":DEV:v2.8"; + public const string DECLARATION_DEFINITIONS_NAMESPACE_URI_V24 = DECLARATION_NAMESPACE + ":v2.4"; public const string DECLARATION_INPUT_NAMESPACE = "urn:tugraz:ivt:VectoAPI:DeclarationInput"; @@ -101,9 +112,6 @@ namespace TUGraz.VectoCore.Utils public const string DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation"; - public const string DECLARATION_PRIMARY_BUS_VEHICLE_URI_V01 = - DECLARATION_PRIMARY_BUS_VEHICLE_NAMESPACE + ":HeavyBus:v0.1"; - public const string DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile"; @@ -111,13 +119,6 @@ namespace TUGraz.VectoCore.Utils DECLARATION_MULTISTAGE_BUS_VEHICLE_NAMESPACE + ":v0.1"; - public const string DECLARATION_MANUFACTURER_REPORT_V05 = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5"; - - public const string DECLARATION_CUSTOMER_REPORT_V05 = "urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.5"; - - public const string DECLARATION_VTP_REPORT_V01 = "urn:tugraz:ivt:VectoAPI:VTPReport:v0.1"; - - public const string XML_SCHEMA_NAMESPACE = "http://www.w3.org/2001/XMLSchema-instance"; @@ -134,7 +135,7 @@ namespace TUGraz.VectoCore.Utils {XmlDocumentType.CustomerReport , "VectoOutputCustomer.xsd"}, {XmlDocumentType.MonitoringReport , "VectoMonitoring.xsd"}, {XmlDocumentType.VTPReport , "VTPReport.xsd"}, - {XmlDocumentType.MultistageOutputData, "VectoOutputMultistage.0.1.xsd"} + {XmlDocumentType.MultistepOutputData, "VectoOutputMultistep.0.1.xsd"} }; public static XNamespace DECLARATION_OUTPUT_PRIMARY_HEAVY_BUS = "urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1"; diff --git a/VectoCore/VectoCore/Utils/XMLHelper.cs b/VectoCore/VectoCore/Utils/XMLHelper.cs index d9cdfdd8aa9bf8a654750b20d1c227fd0bc04094..7e315fa5d8e6a2c6364c3539c3bf1c93dc4839c8 100644 --- a/VectoCore/VectoCore/Utils/XMLHelper.cs +++ b/VectoCore/VectoCore/Utils/XMLHelper.cs @@ -36,6 +36,7 @@ using System.Linq; using System.Xml; using System.Xml.Linq; using System.Xml.Schema; +using Castle.Core.Internal; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -54,7 +55,7 @@ namespace TUGraz.VectoCore.Utils case "VectoInputEngineering": return XmlDocumentType.EngineeringJobData; case "VectoComponentEngineering": return XmlDocumentType.EngineeringComponentData; //case "VectoOutputPrimaryVehicle": return XmlDocumentType.PrimaryVehicleBusOutputData; - case "VectoOutputMultistage": return XmlDocumentType.MultistageOutputData; + case "VectoOutputMultistep": return XmlDocumentType.MultistepOutputData; } return null; @@ -73,7 +74,8 @@ namespace TUGraz.VectoCore.Utils public static string GetVersionFromNamespaceUri(XNamespace namespaceUri) { const string versionPrefix = "v"; - return namespaceUri.NamespaceName.Split(':').Last(x => x.StartsWith(versionPrefix)).Replace(versionPrefix, string.Empty); + return namespaceUri.NamespaceName.Split(':').Last(x => x.StartsWith(versionPrefix)) + .Replace(versionPrefix, string.Empty); } public static object[] ValueAsUnit(Kilogram mass, string unit, uint? decimals = 0) @@ -180,6 +182,11 @@ namespace TUGraz.VectoCore.Utils return prefix + fuelData.FuelType.ToXMLFormat(); } + public static string ToXmlFormat(this DateTime dateTime) + { + return XmlConvert.ToString(dateTime, XmlDateTimeSerializationMode.Utc); + } + public static string QueryLocalName(string nodeName) { return $".//*[local-name()='{nodeName}']"; @@ -187,7 +194,8 @@ namespace TUGraz.VectoCore.Utils public static string QueryLocalName(params string[] nodePath) { - return "./" + nodePath.Where(x => x != null).Select(x => $"/*[local-name()='{x}']").Join("/"); + return "./" + string.Join("/", + nodePath.Where(x => x != null).Select(x => $"/*[local-name()='{x}']").ToArray()); } @@ -200,6 +208,7 @@ namespace TUGraz.VectoCore.Utils table.Columns.Add(mapping.Key); } } + foreach (var entry in entries) { var row = table.NewRow(); foreach (var mapping in attributeMapping) { @@ -214,7 +223,8 @@ namespace TUGraz.VectoCore.Utils return table; } - public static TableData ReadEntriesOrResource(XmlNode baseNode, string basePath, string baseElement, string entryElement, Dictionary<string, string> mapping) + public static TableData ReadEntriesOrResource(XmlNode baseNode, string basePath, string baseElement, + string entryElement, Dictionary<string, string> mapping) { var entries = baseNode.SelectNodes( QueryLocalName(baseElement, entryElement)); @@ -248,7 +258,7 @@ namespace TUGraz.VectoCore.Utils return VectoCSVFile.Read(fullFilename); } - return null;// new TableData(Path.Combine(basePath ?? "", filename), DataSourceType.Missing); + return null; // new TableData(Path.Combine(basePath ?? "", filename), DataSourceType.Missing); } private static string ExtCSVResourceQuery => @@ -269,23 +279,56 @@ namespace TUGraz.VectoCore.Utils public static string GetXsdType(XmlSchemaType schemaInfoSchemaType) { - return string.Join(":", schemaInfoSchemaType.QualifiedName.Namespace, schemaInfoSchemaType.QualifiedName.Name); + return string.Join(":", schemaInfoSchemaType.QualifiedName.Namespace, + schemaInfoSchemaType.QualifiedName.Name); } public static double GetVersion(XmlNode node) { const string versionPrefix = "v"; var namesp = node.SchemaInfo.SchemaType.QualifiedName.Namespace; - return namesp.Split(':').Last(x => x.StartsWith(versionPrefix)).Replace(versionPrefix, string.Empty).ToDouble(); + var versionPart = namesp.Split(':').Last(x => x.StartsWith(versionPrefix)) + .Replace(versionPrefix, string.Empty); + if (versionPart.Split('.').Length > 2) { + versionPart = string.Join(".", versionPart.Split('.').Take(2)); + } + + return versionPart.ToDouble(); } public static XElement CreateDummySig(XNamespace di) { return new XElement(di + XMLNames.DI_Signature_Reference, - new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod, - new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")), - new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE") + new XElement(di + XMLNames.DI_Signature_Reference_DigestMethod, + new XAttribute(XMLNames.DI_Signature_Algorithm_Attr, "null")), + new XElement(di + XMLNames.DI_Signature_Reference_DigestValue, "NOT AVAILABLE") ); } + + public static bool IsAnyNull(this IComponentInputData inputData, params object[] checkForNull) + { + foreach (var o in checkForNull) { + if (o == null) { + return true; + } + } + + return false; + } + + + public static void AddIfContentNotNull(this XElement xElement, XElement xElementToAdd) + { + if (!xElementToAdd.Value.IsNullOrEmpty()){ + xElement.Add(xElementToAdd); + } + } + + public static void AddIfContentNotNull(this XElement xElement, params XElement[] xElementsToAdd) + { + foreach (var element in xElementsToAdd) { + xElement.AddIfContentNotNull(element); + } + } } -} +} \ No newline at end of file diff --git a/VectoCore/VectoCore/Utils/XMLValidator.cs b/VectoCore/VectoCore/Utils/XMLValidator.cs index 2fc93738b9ec68c14b76972371ff72cf69aefa8b..f5ac89073a30f2656da037ca793b0228b843076c 100644 --- a/VectoCore/VectoCore/Utils/XMLValidator.cs +++ b/VectoCore/VectoCore/Utils/XMLValidator.cs @@ -82,7 +82,8 @@ namespace TUGraz.VectoCore.Utils _doc.Validate(ValidationCallBack); - if (_doc.SchemaInfo.Validity != XmlSchemaValidity.Valid || _doc.DocumentElement?.SchemaInfo == null || + if (_doc.SchemaInfo.Validity != XmlSchemaValidity.Valid || + _doc.DocumentElement?.SchemaInfo == null || _doc.DocumentElement.SchemaInfo.SchemaType == null) { ValidationCallBack(null, null); _valid = false; diff --git a/VectoCore/VectoCore/VectoCore.csproj b/VectoCore/VectoCore/VectoCore.csproj index 57593497fc5a31404b16f6415f02d04c10952a7a..f0226fda9c9db1f80179092109fc0187e89f94fe 100644 --- a/VectoCore/VectoCore/VectoCore.csproj +++ b/VectoCore/VectoCore/VectoCore.csproj @@ -153,7 +153,13 @@ <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\AbstractCommonComponentType.cs" /> <Compile Include="InputData\FileIO\XML\Common\AbstractXMLResource.cs" /> <Compile Include="InputData\FileIO\XML\Common\AbstractXMLType.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\v24\XMLDeclarationCompletedBusVehicleDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\v24\XMLDeclarationHeavyLorryVehicleDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\v24\XMLDeclarationMediumLorryVehicleDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\v24\XMLDeclarationPrimaryBusVehicleDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\v24\XMLDeclarationExemptedVehicleDataProvider.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLAuxiliaryDeclarationDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLElectricMachinesDeclarationInputDataProvider.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationMultistageInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationPrimaryVehicleBusApplicationInformationDataProviderV01.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationBusAuxiliariesDataProvider.cs" /> @@ -172,8 +178,11 @@ <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationRetarderDataProvider.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationTorqueConverterDataProvider.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationTyreDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLElectricMotorDeclarationInputDataProvider.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLElectricStorageSystemDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLGearData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationPrimaryVehicleBusResultsInputDataProviderV01.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLADCDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAirdragDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAngledriveInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLApplicationInformationData.cs" /> @@ -181,14 +190,20 @@ <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAxleDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAxleGearInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLAxlesDeclarationInputData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLBatteryPackDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLBusAuxiliariesDeclarationData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLElectricMachinesDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLDeclarationJobInputData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLElectricMotorDeclarationInputData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLElectricStorageSystemDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLEngineDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLGearboxDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLGearData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLIEPCInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLPTOTransmissionInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLResultsInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLRetarderInputData.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLSuperCapDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTorqueConverterDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLTyreDeclarationInputData.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Interfaces\IXMLVehicleComponentsDeclaration.cs" /> @@ -199,7 +214,7 @@ <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV22InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV23InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV26InjectModule.cs" /> - <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV28InjectModule.cs" /> + <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationInputDataV24InjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\AbstractComponentReader.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLADASReader.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\Reader\Impl\XMLComponentReader.cs" /> @@ -286,8 +301,11 @@ <Compile Include="InputData\FileIO\XML\Declaration\IXMLDeclarationInputDataReader.cs" /> <Compile Include="InputData\FileIO\XML\IXMLInputDataReader.cs" /> <Compile Include="InputData\FileIO\XML\XMLInputDataNinjectModule.cs" /> + <Compile Include="InputData\Reader\IVectoRunDataFactoryFactory.cs" /> <Compile Include="InputData\Reader\ComponentData\BatteryInternalResistanceReader.cs" /> <Compile Include="InputData\Reader\ComponentData\BatteryMaxCurrentReader.cs" /> + <Compile Include="InputData\Reader\VectoRunDataFactoryFactory.cs" /> + <Compile Include="InputData\Reader\VectoRunDataFactoryNinjectModule.cs" /> <Compile Include="Models\SimulationComponent\Impl\APTNGearbox.cs" /> <Compile Include="Models\SimulationComponent\Impl\APTNShiftStrategy.cs" /> <Compile Include="Models\SimulationComponent\Impl\BatterySystem.cs" /> @@ -446,6 +464,9 @@ <Compile Include="Models\SimulationComponent\Impl\ATClutchInfo.cs" /> <Compile Include="Models\Simulation\Impl\PCCEcoRollEngineStopPreprocessor.cs" /> <Compile Include="Models\Simulation\Impl\PCCSegmentPreprocessor.cs" /> + <Compile Include="Models\Simulation\Impl\SimulatorFactory\IFollowUpSimulatorFactoryCreator.cs" /> + <Compile Include="Models\Simulation\Impl\SimulatorFactory\SimulatorFactoryDeclaration.cs" /> + <Compile Include="Models\Simulation\Impl\SimulatorFactory\SimulatorFactoryEngineering.cs" /> <Compile Include="Models\Simulation\ISimulationPreprocessor.cs" /> <Compile Include="Models\Simulation\ISimulatorFactory.cs" /> <Compile Include="Models\Simulation\ISimulatorFactoryFactory.cs" /> @@ -453,7 +474,13 @@ <Compile Include="OutputData\FileIO\BusAuxWriter.cs" /> <Compile Include="OutputData\FileIO\FileOutputVIFWriter.cs" /> <Compile Include="OutputData\FileIO\JSONFileWriter.cs" /> + <Compile Include="OutputData\FileIO\TempFileOutputWriter.cs" /> <Compile Include="OutputData\ModalDataPostprocessingCorrection.cs" /> + <Compile Include="OutputData\XML\ComponentWriter\ComponentWriter.cs" /> + <Compile Include="OutputData\XML\ComponentWriter\ComponentWriterNinjectModule.cs" /> + <Compile Include="OutputData\XML\ComponentWriter\Declaration\ADAS_Writer.cs" /> + <Compile Include="OutputData\XML\ComponentWriter\Declaration\Components_Conventional.cs" /> + <Compile Include="OutputData\XML\ComponentWriter\IComponentWriterFactory.cs" /> <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\IXMLCustomerReport.cs" /> <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\XMLCustomerReportExemptedCompletedBus.cs" /> <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\AbstractXMLManufacturerReport.cs" /> @@ -497,7 +524,27 @@ <Compile Include="OutputData\XML\Engineering\XMLEngineeringWriterInjectModule.cs" /> <Compile Include="OutputData\XML\Engineering\XMLWriterMapping.cs" /> <Compile Include="OutputData\XML\DeclarationReports\CustomerInformationFile\XMLCustomerReportCompletedBus.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\IGroupWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\CompletedBus\CompletedBusDimensionsWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\CompletedBus\CompletedBusParametersWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\CompletedBus\CompletedBusGeneralParametersWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\CompletedBus\CompletedBusPassengerCountWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\Components\Auxiliaries\BusAuxElectricSystemSupplyGroupWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\Components\Auxiliaries\BusAuxElectricSystemLightsGroupWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\Components\Auxiliaries\BusAuxHVACConventionalGroupWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\Declaration\Vehicle\Components\Auxiliaries\BusAuxHVACHeatPumpWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\GroupNames.Designer.cs"> + <AutoGen>True</AutoGen> + <DesignTime>True</DesignTime> + <DependentUpon>GroupNames.resx</DependentUpon> + </Compile> + <Compile Include="OutputData\XML\GroupWriter\GroupWriter.cs" /> + <Compile Include="OutputData\XML\GroupWriter\IGroupWriterFactory.cs" /> + <Compile Include="OutputData\XML\IXMLReportFactory.cs" /> + <Compile Include="OutputData\XML\XMLDeclarationNamespaces.cs" /> <Compile Include="OutputData\XML\XMLDeclarationReportCompletedVehicle.cs" /> + <Compile Include="OutputData\XML\XMLDeclarationReportFactory.cs" /> + <Compile Include="OutputData\XML\XMLDeclarationReportFactoryNinjectModule.cs" /> <Compile Include="OutputData\XML\XMLDeclarationReportMultistageBusVehicle.cs" /> <Compile Include="OutputData\XML\XMLDeclarationReportPrimaryVehicle.cs" /> <Compile Include="OutputData\XML\DeclarationReports\ManufacturerReport\XMLManufacturerReportCompletedBus.cs" /> @@ -507,6 +554,7 @@ <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLExemptedPrimaryBusVehicleReport.cs" /> <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLMultistageBusReport.cs" /> <Compile Include="OutputData\XML\DeclarationReports\VehicleInformationFile\XMLPrimaryBusVehicleReport.cs" /> + <Compile Include="OutputData\XML\GroupWriter\XMLGroupWriterNinjectModule.cs" /> <Compile Include="Utils\Ninject\UseFirstArgumentAsInstanceProvider.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\NinjectModules\XMLDeclarationReaderInjectModule.cs" /> <Compile Include="InputData\FileIO\XML\Declaration\DataProvider\XMLDeclarationVehicleDataProvider.cs" /> @@ -578,6 +626,8 @@ <Compile Include="Models\SimulationComponent\Impl\DrivingCycleEnumerator.cs" /> <Compile Include="Models\SimulationComponent\Impl\EngineFanAuxiliary.cs" /> <Compile Include="Models\SimulationComponent\Impl\GearRating.cs" /> + <Compile Include="Utils\Ninject\UseFirstTwoArgumentsAsInstanceProvider.cs" /> + <Compile Include="Utils\PathHelper.cs" /> <Compile Include="Utils\SchmittTrigger.cs" /> <Compile Include="Models\SimulationComponent\Impl\SimplePowertrainContainer.cs" /> <Compile Include="Models\SimulationComponent\Impl\TorqueConverterWrapper.cs" /> @@ -725,7 +775,7 @@ <Compile Include="Models\SimulationComponent\Impl\PowertrainDrivingCycle.cs" /> <Compile Include="Models\Simulation\Data\ModalResult.cs" /> <Compile Include="Models\Simulation\IVectoRun.cs" /> - <Compile Include="Models\Simulation\Impl\SimulatorFactory.cs" /> + <Compile Include="Models\Simulation\Impl\SimulatorFactory\SimulatorFactory.cs" /> <Compile Include="Models\Simulation\Impl\VectoRun.cs" /> <Compile Include="Models\Simulation\Impl\JobContainer.cs" /> <Compile Include="Models\Simulation\Impl\VehicleContainer.cs" /> @@ -743,6 +793,7 @@ <DesignTime>True</DesignTime> <DependentUpon>VectoVersionCore.tt</DependentUpon> </Compile> + <Compile Include="Utils\XAttributeEqualityComparer.cs" /> <Compile Include="Utils\XMLDefinitions.cs" /> <Compile Include="Utils\XMLHelper.cs" /> <Compile Include="Utils\XmlResourceResolver.cs" /> @@ -757,12 +808,18 @@ </ItemGroup> <ItemGroup> <None Include="app.config" /> + <None Include="OutputData\FileIO\FileWriter.cd" /> <None Include="packages.config" /> <EmbeddedResource Include="JsonKeys.resx"> <Generator>ResXFileCodeGenerator</Generator> <LastGenOutput>JsonKeys.Designer.cs</LastGenOutput> <SubType>Designer</SubType> </EmbeddedResource> + <EmbeddedResource Include="OutputData\XML\GroupWriter\GroupNames.resx"> + <Generator>ResXFileCodeGenerator</Generator> + <LastGenOutput>GroupNames.Designer.cs</LastGenOutput> + <SubType>Designer</SubType> + </EmbeddedResource> <EmbeddedResource Include="Resources\Declaration\Wheels.csv" /> <EmbeddedResource Include="Resources\Declaration\SegmentTable.csv" /> <EmbeddedResource Include="Resources\Declaration\MissionCycles\HeavyUrban.vdri" /> @@ -932,8 +989,6 @@ </EmbeddedResource> <EmbeddedResource Include="Resources\Declaration\ADAS\ADAS_Combinations.csv" /> <EmbeddedResource Include="Resources\Declaration\VAUX\Fan-Tech-Medium.csv" /> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.3_DEV.xsd"> - </EmbeddedResource> <EmbeddedResource Include="Resources\Declaration\Buses\ElectricConsumers.csv" /> <EmbeddedResource Include="Resources\Declaration\Buses\SSMTechList.csv" /> <EmbeddedResource Include="Resources\Declaration\Buses\SSMDefaults.ahsm" /> @@ -947,16 +1002,10 @@ <EmbeddedResource Include="Resources\Declaration\Buses\DefaultActuationsMap.apac" /> <EmbeddedResource Include="Resources\Declaration\PrimaryBusSegmentationTable.csv" /> <EmbeddedResource Include="Resources\Declaration\VACC\Bus.vacc" /> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.6_Buses.xsd"> - <SubType>Designer</SubType> - </EmbeddedResource> <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_1-Cylinder_1-Stage_393ccm.acmp" /> <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_1-Stage_650ccm.acmp" /> <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_2-Cylinder_2-Stage_398ccm.acmp" /> <EmbeddedResource Include="Resources\Declaration\VAUXBus\DEFAULT_3-Cylinder_2-Stage_598ccm.acmp" /> - <EmbeddedResource Include="Resources\XSD\VectoOutputPrimaryBus.xsd"> - <SubType>Designer</SubType> - </EmbeddedResource> <EmbeddedResource Include="Resources\XSD\VectoVTPReport.xsd"> <SubType>Designer</SubType> </EmbeddedResource> @@ -977,13 +1026,16 @@ <EmbeddedResource Include="Resources\Declaration\VAUXBus\SP-Factors_Bus.csv" /> <EmbeddedResource Include="Resources\Declaration\GenericBusData\EngineConsumptionMap_CI_normalized.vmap" /> <EmbeddedResource Include="Resources\Declaration\GenericBusData\EngineConsumptionMap_PI_normalized.vmap" /> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.8_Stage.xsd"> + <EmbeddedResource Include="Resources\XSD\VectoOutputMultistep.0.1.xsd"> <SubType>Designer</SubType> </EmbeddedResource> - <EmbeddedResource Include="Resources\XSD\VectoOutputMultistage.0.1.xsd"> + <EmbeddedResource Include="Resources\XSD\VectoComponent.2.1.xsd"> <SubType>Designer</SubType> </EmbeddedResource> - <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.2.1.xsd"> + <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.3.xsd"> + <SubType>Designer</SubType> + </EmbeddedResource> + <EmbeddedResource Include="Resources\XSD\VectoDeclarationDefinitions.2.4.xsd"> <SubType>Designer</SubType> </EmbeddedResource> <EmbeddedResource Include="Resources\XSD\VectoMonitoring.0.7.1.xsd"> diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs index b28414a2301194d355efe0067c310c09c1886631..0859bde7a679935224adeebd8c9f5d5a824bde85 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadHybridTest.cs @@ -8,6 +8,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; namespace TUGraz.VectoCore.Tests.FileIO @@ -66,7 +67,8 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(-401.07, fldMap.FullLoadDriveTorque(0.RPMtoRad()).Value()); Assert.AreEqual(401.07, fldMap.FullGenerationTorque(0.RPMtoRad()).Value()); - var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; + var pwr = inputProvider.VoltageLevels.First().PowerMap.First().PowerMap; + // var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; Assert.AreEqual("0", pwr.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]); Assert.AreEqual("-800", pwr.Rows[0][ElectricMotorMapReader.Fields.Torque]); Assert.AreEqual("9.8449", pwr.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]); @@ -98,7 +100,8 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(-401.07, fldMapLow.FullLoadDriveTorque(0.RPMtoRad()).Value()); Assert.AreEqual(401.07, fldMapLow.FullGenerationTorque(0.RPMtoRad()).Value()); - var pwrLow = inputProvider.VoltageLevels.First().EfficiencyMap; + var pwrLow = inputProvider.VoltageLevels.First().PowerMap.First().PowerMap; + // var pwrLow = inputProvider.VoltageLevels.First().EfficiencyMap; Assert.AreEqual("0", pwrLow.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]); Assert.AreEqual("-800", pwrLow.Rows[0][ElectricMotorMapReader.Fields.Torque]); Assert.AreEqual("9.8449", pwrLow.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]); @@ -122,7 +125,8 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(-476.284, fldMapHi.FullLoadDriveTorque(0.RPMtoRad()).Value()); Assert.AreEqual(486.284, fldMapHi.FullGenerationTorque(0.RPMtoRad()).Value()); - var pwrHi = inputProvider.VoltageLevels.Last().EfficiencyMap; + var pwrHi = inputProvider.VoltageLevels.Last().PowerMap.First().PowerMap; + // var pwrHi = inputProvider.VoltageLevels.Last().EfficiencyMap; Assert.AreEqual("0", pwrHi.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]); Assert.AreEqual("-800", pwrHi.Rows[0][ElectricMotorMapReader.Fields.Torque]); Assert.AreEqual("8.86041", pwrHi.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]); @@ -193,7 +197,8 @@ namespace TUGraz.VectoCore.Tests.FileIO Assert.AreEqual(-802.14, fldMap.FullLoadDriveTorque(50.RPMtoRad()).Value(), 1e-3); Assert.AreEqual(802.14, fldMap.FullGenerationTorque(50.RPMtoRad()).Value(), 1e-3); - var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; + var pwr = inputProvider.VoltageLevels.First().PowerMap.First().PowerMap; //ToDo FK: maybe wrong selection + // var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; Assert.AreEqual("0", pwr.Rows[0][ElectricMotorMapReader.Fields.MotorSpeed]); Assert.AreEqual("-800", pwr.Rows[0][ElectricMotorMapReader.Fields.Torque]); Assert.AreEqual("9.8449", pwr.Rows[0][ElectricMotorMapReader.Fields.PowerElectrical]); @@ -246,7 +251,7 @@ namespace TUGraz.VectoCore.Tests.FileIO { var inputProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Hybrids\GenericVehicle_Group2_P2\Class2_RigidTruck_ParHyb_ENG.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, null); var sumContainer = new SummaryDataContainer(null); var jobContainer = new JobContainer(sumContainer); @@ -273,7 +278,7 @@ namespace TUGraz.VectoCore.Tests.FileIO { var inputProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\BatteryElectric\GenericVehicleB4\BEV_ENG.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, null); var sumContainer = new SummaryDataContainer(null); var jobContainer = new JobContainer(sumContainer); diff --git a/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs b/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs index a4cbee9cb65133d3aca0f4c1d488dd95bd9d45cb..254f26e1a44cae413eeeffe9f1b0ab56c13f5430 100644 --- a/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs +++ b/VectoCore/VectoCoreTest/FileIO/JsonReadTest.cs @@ -34,7 +34,6 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using NUnit.Framework; using System.IO; -using TUGraz.VECTO; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; diff --git a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTests.cs b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTests.cs new file mode 100644 index 0000000000000000000000000000000000000000..5d2c6e67771cdd1f5bf3ed9bb3fd319e6e768de6 --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTests.cs @@ -0,0 +1,350 @@ +using System; +using System.IO; +using System.Linq; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.Models.Simulation.Data; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; +using TUGraz.VectoCore.Tests.Utils; + +namespace TUGraz.VectoCore.Tests.Integration.ADAS +{ + [TestFixture] + public class ADASTests + { + + public const string Group5PCC12 = @"TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC12.vecto"; + public const string Group5PCC123 = @"TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123.vecto"; + public const string Group5PCC123EcoSS = @"TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123EcoSS.vecto"; + + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + private GraphWriter GetGraphWriter() + { + var graphWriter = new GraphWriter(); + //#if TRACE + graphWriter.Enable(); + //#else + //graphWriter.Disable(); + //#endif + graphWriter.Xfields = new[] { ModalResultField.dist }; + + graphWriter.Yfields = new[] { + ModalResultField.v_act, ModalResultField.altitude, ModalResultField.acc, ModalResultField.Gear, + ModalResultField.P_ice_out, ModalResultField.FCMap + }; + graphWriter.Series1Label = "ADAS PCC"; + graphWriter.PlotIgnitionState = true; + return graphWriter; + } + + + [TestCase(@"TestData\Integration\ADAS\Group5_EngineStopStart.xml")] + public void TestVehicleWithADASEngineStopStart(string filename) + { + var container = RunAllDeclarationJob(filename); + //var container = RunSingleDeclarationJob(filename, 4); + } + + [TestCase(@"TestData\Integration\ADAS\Group5_EcoRoll.xml")] + public void TestVehicleWithADASEcoRoll(string filename) + { + var container = RunAllDeclarationJob(filename); + //var container = RunSingleDeclarationJob(filename, 4); + } + + [TestCase(@"TestData\Integration\ADAS\Group5_EcoRollEngineStop.xml")] + public void TestVehicleWithADASEcoRollEngineStopStart(string filename) + { + var container = RunAllDeclarationJob(filename); + //var container = RunSingleDeclarationJob(filename, 1); + } + + + [TestCase(0, TestName = "EcoRoll DH1.1 const"), + TestCase(1, TestName = "EcoRoll DH1.1 UH0.1"), + TestCase(2, TestName = "EcoRoll DH1.3 const"), + TestCase(3, TestName = "EcoRoll DH0.8 const - too flat"), + TestCase(4, TestName = "EcoRoll DH1.5 const - too steep"), + TestCase(5, TestName = "EcoRoll DH1.1 const - Stop"), + TestCase(6, TestName = "EcoRoll DH1.1 const - TS60"), + TestCase(7, TestName = "EcoRoll DH1.1 const - TS68"), + TestCase(8, TestName = "EcoRoll DH1.1 const - TS72"), + TestCase(9, TestName = "EcoRoll DH1.1 const - TS80"), + ] + public void TestEcoRoll(int cycleIdx) + { + string jobName = @"TestData\Integration\ADAS\Group5EcoRollEng\Class5_Tractor_ENG.vecto"; + var inputData = JSONInputDataFactory.ReadJsonJob(jobName); + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); + + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + + factory.SumData = sumContainer; + + var runs = factory.SimulationRuns().ToArray(); + var run = runs[cycleIdx]; + + jobContainer.AddRun(run); + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + var modFilename = writer.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix); + GetGraphWriter().Write(modFilename); + } + + [TestCase(0, TestName = "AT EcoRoll Neutral DH1.8 const"), + TestCase(1, TestName = "AT EcoRoll Neutral DH1.8 UH0.1"), + TestCase(2, TestName = "AT EcoRoll Neutral DH1.9 const"), + TestCase(3, TestName = "AT EcoRoll Neutral DH1.2 const - too flat"), + TestCase(4, TestName = "AT EcoRoll Neutral DH2.5 const - too steep"), + TestCase(5, TestName = "AT EcoRoll Neutral DH1.9 const - Stop"), + TestCase(6, TestName = "AT EcoRoll Neutral DH1.9 const - TS60"), + TestCase(7, TestName = "AT EcoRoll Neutral DH1.9 const - TS68"), + TestCase(8, TestName = "AT EcoRoll Neutral DH1.9 const - TS72"), + TestCase(9, TestName = "AT EcoRoll Neutral DH1.9 const - TS80"), + TestCase(10, TestName = "AT EcoRoll Neutral DH1.2 const"), + ] + public void TestEcoRollAT_Neutral(int cycleIdx) + { + string jobName = @"TestData\Integration\ADAS\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"; + var inputData = JSONInputDataFactory.ReadJsonJob(jobName); + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); + + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + + factory.SumData = sumContainer; + + var runs = factory.SimulationRuns().ToArray(); + var run = runs[cycleIdx]; + + jobContainer.AddRun(run); + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + var modFilename = writer.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix); + GetGraphWriter().Write(modFilename); + } + + + [TestCase(0, TestName = "AT EcoRoll TC DH1.8 const"), + TestCase(1, TestName = "AT EcoRoll TC DH1.8 UH0.1"), + TestCase(2, TestName = "AT EcoRoll TC DH1.9 const"), + TestCase(3, TestName = "AT EcoRoll TC DH1.2 const - too flat"), + TestCase(4, TestName = "AT EcoRoll TC DH2.5 const - too steep"), + TestCase(5, TestName = "AT EcoRoll TC DH1.9 const - Stop"), + TestCase(6, TestName = "AT EcoRoll TC DH1.9 const - TS60"), + TestCase(7, TestName = "AT EcoRoll TC DH1.9 const - TS68"), + TestCase(8, TestName = "AT EcoRoll TC DH1.9 const - TS72"), + TestCase(9, TestName = "AT EcoRoll TC DH1.9 const - TS80"), + ] + public void TestEcoRollAT_TC(int cycleIdx) + { + string jobName = @"TestData\Integration\ADAS\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"; + var inputData = JSONInputDataFactory.ReadJsonJob(jobName); + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); + + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + + factory.SumData = sumContainer; + + var runs = factory.SimulationRuns().ToArray(); + var run = runs[cycleIdx]; + + jobContainer.AddRun(run); + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + var modFilename = writer.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix); + GetGraphWriter().Write(modFilename); + } + + [TestCase(@"TestData\Integration\ADAS\Group9_AT_EngineStopStart.xml")] + public void TestATVehicleWithADASEngineStopStart(string filename) + { + //var container = RunAllDeclarationJob(filename); + var container = RunSingleDeclarationJob(filename, 5); + } + + [TestCase(@"TestData\Integration\ADAS\Group9_AT_EcoRoll.xml")] + public void TestATVehicleWithADASEcoRoll(string filename) + { + var container = RunAllDeclarationJob(filename); + //var container = RunSingleDeclarationJob(filename, 1); + } + + + + + [TestCase(Group5PCC12, 0, TestName = "G5Eng PCC12 CrestCoast 1"), + TestCase(Group5PCC12, 1, TestName = "G5Eng PCC12 CrestCoast 2"), + TestCase(Group5PCC12, 2, TestName = "G5Eng PCC12 Case A"), // Case A + TestCase(Group5PCC12, 3, TestName = "G5Eng PCC12 Case B"), // Case B + TestCase(Group5PCC12, 4, TestName = "G5Eng PCC12 Case C"), // Case C + TestCase(Group5PCC12, 5, TestName = "G5Eng PCC12 Case D"), // Case D + TestCase(Group5PCC12, 6, TestName = "G5Eng PCC12 Case E"), // Case E + TestCase(Group5PCC12, 7, TestName = "G5Eng PCC12 Case F"), // Case F + TestCase(Group5PCC12, 8, TestName = "G5Eng PCC12 Case G"), // Case G + TestCase(Group5PCC12, 9, TestName = "G5Eng PCC12 Case H"), // Case H + TestCase(Group5PCC12, 10, TestName = "G5Eng PCC12 Case I"), // Case I + TestCase(Group5PCC12, 11, TestName = "G5Eng PCC12 Case J"), // Case J + + TestCase(Group5PCC123, 2, TestName = "G5Eng PCC123 Case A"), // Case A + TestCase(Group5PCC123, 3, TestName = "G5Eng PCC123 Case B"), // Case B + TestCase(Group5PCC123, 4, TestName = "G5Eng PCC123 Case C"), // Case C + TestCase(Group5PCC123, 5, TestName = "G5Eng PCC123 Case D"), // Case D + TestCase(Group5PCC123, 6, TestName = "G5Eng PCC123 Case E"), // Case E + TestCase(Group5PCC123, 7, TestName = "G5Eng PCC123 Case F"), // Case F + TestCase(Group5PCC123, 8, TestName = "G5Eng PCC123 Case G"), // Case G + TestCase(Group5PCC123, 9, TestName = "G5Eng PCC123 Case H"), // Case H + TestCase(Group5PCC123, 10, TestName = "G5Eng PCC123 Case I"), // Case I + TestCase(Group5PCC123, 11, TestName = "G5Eng PCC123 Case J"), // Case J + + TestCase(Group5PCC123EcoSS, 2, TestName = "G5Eng PCC123-EcoSS Case A"), // Case A + TestCase(Group5PCC123EcoSS, 3, TestName = "G5Eng PCC123-EcoSS Case B"), // Case B + TestCase(Group5PCC123EcoSS, 4, TestName = "G5Eng PCC123-EcoSS Case C"), // Case C + TestCase(Group5PCC123EcoSS, 5, TestName = "G5Eng PCC123-EcoSS Case D"), // Case D + TestCase(Group5PCC123EcoSS, 6, TestName = "G5Eng PCC123-EcoSS Case E"), // Case E + TestCase(Group5PCC123EcoSS, 7, TestName = "G5Eng PCC123-EcoSS Case F"), // Case F + TestCase(Group5PCC123EcoSS, 8, TestName = "G5Eng PCC123-EcoSS Case G"), // Case G + TestCase(Group5PCC123EcoSS, 9, TestName = "G5Eng PCC123-EcoSS Case H"), // Case H + TestCase(Group5PCC123EcoSS, 10, TestName = "G5Eng PCC123-EcoSS Case I"), // Case I + TestCase(Group5PCC123EcoSS, 11, TestName = "G5Eng PCC123-EcoSS Case J"), // Case J + ] + public void TestPCCEngineeringSampleCases(string jobName, int cycleIdx) + { + + RunSingleEngineeringCycle(jobName, cycleIdx); + } + + [TestCase(5, TestName = "PCC Group5 RD RefLoad"), + TestCase(1, TestName = "PCC Group5 LH RefLoad")] + public void TestTCCDeclaration(int runIdx) + { + var jobName = @"TestData\Integration\ADAS\Group5PCCDecl\Tractor_4x2_vehicle-class-5_5_t_0.xml"; + RunSingleDeclarationJob(jobName, runIdx); + } + + public void RunSingleEngineeringCycle(string jobName, int cycleIdx) + { + var inputData = JSONInputDataFactory.ReadJsonJob(jobName); + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); + + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + + factory.SumData = sumContainer; + + var runs = factory.SimulationRuns().ToArray(); + var run = runs[cycleIdx]; + + jobContainer.AddRun(run); + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + var modFilename = writer.GetModDataFileName(run.RunName, run.CycleName, run.RunSuffix); + GetGraphWriter().Write(modFilename); + } + + + + public JobContainer RunAllDeclarationJob(string jobName) + { + var relativeJobPath = jobName; + + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(relativeJobPath), Path.GetFileName(relativeJobPath))); + var inputData = Path.GetExtension(relativeJobPath) == ".xml" + ? xmlInputReader.CreateDeclaration(relativeJobPath) + //? new XMLDeclarationInputDataProvider(relativeJobPath, true) + : JSONInputDataFactory.ReadJsonJob(relativeJobPath); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + jobContainer.AddRuns(factory); + jobContainer.Execute(); + jobContainer.WaitFinished(); + var progress = jobContainer.GetProgress(); + + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + + return jobContainer; + } + + + public JobContainer RunSingleDeclarationJob(string jobName, int runIdx) + { + var relativeJobPath = jobName; + var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(relativeJobPath), Path.GetFileName(relativeJobPath))); + var inputData = Path.GetExtension(relativeJobPath) == ".xml" + ? xmlInputReader.CreateDeclaration(relativeJobPath) + //? new XMLDeclarationInputDataProvider(relativeJobPath, true) + : JSONInputDataFactory.ReadJsonJob(relativeJobPath); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + var sumContainer = new SummaryDataContainer(writer); + var jobContainer = new JobContainer(sumContainer); + + factory.SumData = sumContainer; + + var runs = factory.SimulationRuns().ToArray(); + + jobContainer.AddRun(runs[runIdx]); + jobContainer.Execute(); + jobContainer.WaitFinished(); + + var progress = jobContainer.GetProgress(); + Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat(progress.Select(r => r.Value.Error))); + + //var run = jobContainer.Runs[runIdx].Run; + //run.Run(); + //var runs = factory.SimulationRuns().ToArray(); + //runs[runIdx].Run(); + + //Assert.IsTrue(runs.FinishedWithoutErrors); + + return jobContainer; + } + } +} diff --git a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsConventional.cs b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsConventional.cs index a76168ec48d425f9577c3d0d0cca0f2d838ee66c..454bd2d12068b5630ee0f65311d2159a3dbfa467 100644 --- a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsConventional.cs +++ b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsConventional.cs @@ -11,6 +11,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -100,12 +101,11 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false, - SumData = sumContainer - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + //ActualModalData = true, + factory.Validate = false; + factory.SumData = sumContainer; var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -140,13 +140,12 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, - Validate = false, - SumData = sumContainer - }; - + factory.Validate = false; + factory.SumData = sumContainer; + var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -181,12 +180,12 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, - Validate = false, - SumData = sumContainer - }; + factory.Validate = false; + factory.SumData = sumContainer; + var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -232,11 +231,11 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS ? _xmlInputReader.CreateDeclaration(relativeJobPath) //? new XMLDeclarationInputDataProvider(relativeJobPath, true) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + //ActualModalData = true, + factory.Validate = false; + var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); jobContainer.AddRuns(factory); @@ -258,11 +257,11 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS ? _xmlInputReader.CreateDeclaration(relativeJobPath) //? new XMLDeclarationInputDataProvider(relativeJobPath, true) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + //ActualModalData = true, + factory.Validate = false; + var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); @@ -1413,7 +1412,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var inputData = JSONInputDataFactory.ReadJsonJob(jobName); var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); var sumContainer = new SummaryDataContainer(writer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { WriteModalResults = true, Validate = false, SumData = sumContainer }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var run = factory.SimulationRuns().First(r => r.CycleName == cycleName); var mod = (run.GetContainer().ModalData as ModalDataContainer).Data; diff --git a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsHEV.cs b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsHEV.cs index c7cc83e9f2a1e7287afb6ba9311684bc80a1be6a..d9b380b1636d888b8475cf9f609eacce54a7d99a 100644 --- a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsHEV.cs +++ b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsHEV.cs @@ -9,6 +9,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -60,11 +61,11 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - Validate = false, - SumData = sumContainer - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; + jobContainer.AddRuns(factory); jobContainer.Execute(); jobContainer.WaitFinished(); @@ -93,12 +94,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - Validate = false, - SumData = sumContainer - }; - + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -133,12 +132,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - Validate = false, - SumData = sumContainer - }; - + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -173,12 +170,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - Validate = false, - SumData = sumContainer - }; - + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var runs = factory.SimulationRuns().ToArray(); var run = runs[cycleIdx]; @@ -1285,7 +1280,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var inputData = JSONInputDataFactory.ReadJsonJob(jobName); var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); var sumContainer = new SummaryDataContainer(writer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { WriteModalResults = true, Validate = false, SumData = sumContainer }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var run = factory.SimulationRuns().First(r => r.CycleName == cycleName); var mod = (run.GetContainer().ModalData as ModalDataContainer).Data; diff --git a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsPEV.cs b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsPEV.cs index bd863dd8a5cf05a9e11a9d1fdb042b71b55ddb89..ca5eb8b89ca05a027c9b34be0ef6aa52ed2c9a55 100644 --- a/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsPEV.cs +++ b/VectoCore/VectoCoreTest/Integration/ADAS/ADASTestsPEV.cs @@ -9,6 +9,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -36,11 +37,11 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - Validate = false, - SumData = sumContainer - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; + jobContainer.AddRuns(factory); jobContainer.Execute(); jobContainer.WaitFinished(); @@ -718,7 +719,10 @@ namespace TUGraz.VectoCore.Tests.Integration.ADAS var inputData = JSONInputDataFactory.ReadJsonJob(jobName); var writer = new FileOutputWriter(Path.Combine(Path.GetDirectoryName(jobName), Path.GetFileName(jobName))); var sumContainer = new SummaryDataContainer(writer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { WriteModalResults = true, Validate = false, SumData = sumContainer }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.Validate = false; + factory.SumData = sumContainer; var run = factory.SimulationRuns().First(r => r.CycleName == cycleName); var mod = (run.GetContainer().ModalData as ModalDataContainer).Data; diff --git a/VectoCore/VectoCoreTest/Integration/AMTShiftStrategyTests.cs b/VectoCore/VectoCoreTest/Integration/AMTShiftStrategyTests.cs index 2d5182ad5d4742fc932298ee4b4b8e571802b233..40e2d9eac9adcae5b4d688ea615eb6b1b74c1f0c 100644 --- a/VectoCore/VectoCoreTest/Integration/AMTShiftStrategyTests.cs +++ b/VectoCore/VectoCoreTest/Integration/AMTShiftStrategyTests.cs @@ -7,6 +7,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -44,11 +45,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new MockSumWriter()); var runs = factory.SimulationRuns().ToArray(); @@ -66,11 +65,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); diff --git a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs index 07f03834046a689d8807d044383a23ea6311c309..9358a17a5a9187135db597308ccb6154c131db90 100644 --- a/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs +++ b/VectoCore/VectoCoreTest/Integration/BatteryElectric/BatteryElectricTest.cs @@ -16,6 +16,7 @@ using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.DataBus; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; @@ -253,11 +254,9 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile); var writer = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer) - { - Validate = false, - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer); + factory.Validate = false; + factory.WriteModalResults = true; var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); @@ -447,10 +446,9 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile); var writer = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer) { - Validate = false, - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer); + factory.Validate = false; + factory.WriteModalResults = true; var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); @@ -669,11 +667,9 @@ namespace TUGraz.VectoCore.Tests.Integration.BatteryElectric var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile); var writer = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer) - { - Validate = false, - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer); + factory.Validate = false; + factory.WriteModalResults = true; var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs index 9b65b85b7f144e343c306dcf06cdbaa8c10599e7..d51bd06373cc7b78fab3822b29f2ea921a34b1f3 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusFactorMethodTest.cs @@ -6,6 +6,7 @@ using System.Xml; using System.Xml.Linq; using Newtonsoft.Json; using Ninject; +using NLog.LayoutRenderers; using NUnit.Framework; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; @@ -22,6 +23,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; using TUGraz.VectoCore.Models.BusAuxiliaries.DownstreamModules.Impl.HVAC; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.OutputData; @@ -102,13 +104,15 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var inputData = CompletedVIF.CreateCompletedVif( JSONInputDataFactory.ReadJsonJob(JobFile_Group41) as JSONInputDataCompletedBusFactorMethodV7, xmlInputReader); - - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) - { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate: false); + factory.WriteModalResults = true; + + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) + //{ + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; //var sumContainer = new SummaryDataContainer(writer); //var jobContainer = new JobContainer(sumContainer); @@ -1026,13 +1030,14 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus } } } + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate: false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + // WriteModalResults = true, - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - - //ActualModalData = true, - Validate = false - }; + // //ActualModalData = true, + // Validate = false + //}; var runs = factory.DataReader.NextRun().ToList(); return runs; @@ -1060,12 +1065,13 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus break; } } - - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate: false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); //var runs = factory.SimulationRuns().ToArray(); @@ -1098,11 +1104,14 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate: false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); //var runs = factory.SimulationRuns().ToArray(); @@ -1140,11 +1149,14 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate:false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); var runs = factory.SimulationRuns().ToArray(); @@ -1183,10 +1195,12 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus //var inputData = new MockCompletedBusInputData(XmlReader.Create(PifFile_33_34), modified); //var inputData = new MockCompletedBusInputData(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null), writer) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null), writer, validate: false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(completedVif as IMultistageBusInputDataProvider, null), writer) { + // WriteModalResults = true, + // Validate = false + //}; var runs = factory.DataReader.NextRun().ToList(); var run = runs[runIdx]; @@ -1216,11 +1230,15 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var modifiedCompleted = xmlInputReader.CreateDeclaration(XmlReader.Create(new StringReader(modified))); var inputData = new MockSingleBusInputDataProvider(primary.JobInputData.Vehicle, modifiedCompleted.JobInputData.Vehicle); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, null) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = + SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, null, validate: false); + factory.WriteModalResults = true; + + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, null) { + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; var runs = factory.DataReader.NextRun().ToList(); var run = runs[runIdx]; @@ -1309,11 +1327,14 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, validate: false); + factory.WriteModalResults = true; + //var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { + // WriteModalResults = true, + // //ActualModalData = true, + // Validate = false + //}; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); var runs = factory.SimulationRuns().ToArray(); diff --git a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs index 040c05e9281ca84999b1f2087f66c9cbca2f4002..44c69ecd1e1226ebca538b29c2824194e6f45ab3 100644 --- a/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs +++ b/VectoCore/VectoCoreTest/Integration/CompletedBus/CompletedBusSanityCheckTests.cs @@ -15,6 +15,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; using TUGraz.VectoCore.Tests.Utils; @@ -65,11 +66,9 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus //var inputData = new MockCompletedBusInputData(XmlReader.Create(PifFile_33_34), modified); //var inputData = _xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(modified, null), writer) - { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(modified, null), writer); + factory.WriteModalResults = true; + factory.Validate = false; AssertHelper.Exception<VectoException>(() => { var runs = factory.DataReader.NextRun().ToList();}, messageContains: "Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group "); @@ -115,13 +114,11 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus //var inputData = new MockCompletedBusInputData(XmlReader.Create(PifFile_33_34), modified); //var inputData = new MockCompletedBusInputData(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(modified, null), writer) - { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, new XMLDeclarationVIFInputData(modified, null), writer); + factory.WriteModalResults = true; + factory.Validate = false; - //AssertHelper.Exception<VectoException>(() => { + //AssertHelper.Exception<VectoException>(() => { var runs = factory.DataReader.NextRun().ToList(); //}, messageContains: "Input parameter 'separate air distribution ducts' has to be set to 'true' for vehicle group "); } @@ -148,7 +145,7 @@ namespace TUGraz.VectoCore.Tests.Integration.CompletedBus var filename = Guid.NewGuid().ToString().Substring(0, 20); var writer = new FileOutputVIFWriter(filename, 0); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs index 7ce45ca1af8b6954e93eec4e5191b205c73a1f1a..551d97958594c6e08e23bcc371982b7dc8387875 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/EngineInputDataTests.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.Utils; @@ -91,7 +92,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration } var inputDataProvider = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null, validate: false); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null, validate: false); var first = factory.SimulationRuns().ToArray().First(); var modData = ((ModalDataContainer)first.GetContainer().ModalData).Data; diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs index 5763e0c49127c4563a516cd2b63e20ed3249fc0e..92e3a59fbc0e5602b0626cf00f448583810c9d61 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/ExemptedVehicleTest.cs @@ -47,6 +47,7 @@ using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Integration.Declaration; @@ -66,28 +67,7 @@ namespace TUGraz.VectoCore.Tests.Integration const string ExemptedVehicleV2 = @"Testdata\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2.xml"; const string ExemptedVehicleV2NoHEV = @"Testdata\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2_nonHEV.xml"; - private const string ExemptedMin = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted.xml"; - private const string ExemptedAxl = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl.xml"; - private const string ExemptedAxlSleeperT = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl+sleeperT.xml"; - private const string ExemptedAxlSleeperF = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl+sleeperF.xml"; - private const string ExemptedSleeperT = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_sleeperT.xml"; - private const string ExemptedSleeperF = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_sleeperF.xml"; - private const string ExemptedPEVMaxNetPower = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_PEV.xml"; - private const string ExemptedPEVMin = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_PEV_2.xml"; - - private const string ExemptedMin_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1.xml"; - - private const string ExemptedAxl_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl.xml"; - private const string ExemptedAxlSleeperT_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl+SleeperT.xml"; - private const string ExemptedAxlSleeperF_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl+SleeperF.xml"; - private const string ExemptedSleeperT_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_sleeperT.xml"; - private const string ExemptedSleeperF_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_sleeperF.xml"; - private const string ExemptedPEVMaxNetPower_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_PEV.xml"; - private const string ExemptedPEVMin_v2 = @"TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_PEV_2.xml"; - - - - const string ExemptedPrimaryBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml"; + const string ExemptedPrimaryBus = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\exempted_primary_heavyBus.xml"; protected IXMLInputDataReader xmlInputReader; private IKernel _kernel; @@ -125,10 +105,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = xmlInputReader.CreateDeclaration(filename); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); Assert.That(jobContainer.Runs.Count, Is.EqualTo(numRuns)); @@ -184,10 +163,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); @@ -262,10 +240,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); @@ -282,102 +259,6 @@ namespace TUGraz.VectoCore.Tests.Integration - [ - TestCase(ExemptedMin, null, null, null, null, false), - TestCase(ExemptedAxl, AxleConfiguration.AxleConfig_4x2, null, 30000, 20000, false), - TestCase(ExemptedAxlSleeperT, AxleConfiguration.AxleConfig_4x2, true, 30000, 20000, false), - TestCase(ExemptedAxlSleeperF, AxleConfiguration.AxleConfig_4x2, false, 30000, 20000, false), - TestCase(ExemptedSleeperT, null, true, 30000, 20000, false), - TestCase(ExemptedSleeperF, null, false, 30000, 20000, false), - TestCase(ExemptedPEVMaxNetPower, AxleConfiguration.AxleConfig_4x2, true, 30000, 20000, true), - TestCase(ExemptedPEVMin, null, null, null, null, true), - - TestCase(ExemptedMin_v2, null, null, null, null, false), - TestCase(ExemptedAxl_v2, AxleConfiguration.AxleConfig_4x2, null, 30000, 20000, false), - TestCase(ExemptedAxlSleeperT_v2, AxleConfiguration.AxleConfig_4x2, true, 30000, 20000, false), - TestCase(ExemptedAxlSleeperF_v2, AxleConfiguration.AxleConfig_4x2, false, 30000, 20000, false), - TestCase(ExemptedSleeperT_v2, null, true, 30000, 20000, false), - TestCase(ExemptedSleeperF_v2, null, false, 30000, 20000, false), - TestCase(ExemptedPEVMaxNetPower_v2, AxleConfiguration.AxleConfig_4x2, true, 30000, 20000, true), - TestCase(ExemptedPEVMin_v2, null, null, null, null, true), - ] - public void TestExemptedVehiclesAxleConfSleeperCabMRF(string filename, AxleConfiguration? expectedMrfAxleConf, - bool? expectedMrfSleeperCab, double? expectedMaxNetPower1, double? expectedMaxNetPower2, bool zeHDV) - { - var writer = new MockDeclarationWriter(filename); - - - var inputData = xmlInputReader.CreateDeclaration(filename); - - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; - var jobContainer = new JobContainer(new MockSumWriter()); - - var runs = factory.SimulationRuns().ToList(); - Assert.AreEqual(1, runs.Count); - foreach (var run in runs) { - jobContainer.AddRun(run); - } - //jobContainer.AddRuns(factory); - - jobContainer.Execute(); - jobContainer.WaitFinished(); - var progress = jobContainer.GetProgress(); - Assert.IsTrue(progress.All(r => r.Value.Success), string.Concat<Exception>(progress.Select(r => r.Value.Error))); - - - var validator = new XMLValidator(writer.GetReport(ReportType.DeclarationReportManufacturerXML).CreateReader()); - Assert.IsTrue(validator.ValidateXML(XmlDocumentType.ManufacturerReport)); - - var val2 = new XMLValidator(writer.GetReport(ReportType.DeclarationReportCustomerXML).CreateReader()); - Assert.IsTrue(val2.ValidateXML(XmlDocumentType.CustomerReport)); - - var mrf = writer.GetReport(ReportType.DeclarationReportManufacturerXML).Document; - Assert.NotNull(mrf); - - var axleConfNode = mrf.XPathSelectElements(XMLHelper.QueryLocalName(XMLNames.Vehicle_AxleConfiguration)) - .ToArray(); - if (expectedMrfAxleConf == null) { - Assert.AreEqual(0, axleConfNode.Length); - } else { - Assert.AreEqual(1, axleConfNode.Length, "axleconfiguration missing in mrf"); - Assert.AreEqual(expectedMrfAxleConf.Value, AxleConfigurationHelper.Parse(axleConfNode.First().Value), "axleconfiguration: incorrect value"); - } - - var sleeperCabNode = mrf.XPathSelectElements(XMLHelper.QueryLocalName(XMLNames.Vehicle_SleeperCab)) - .ToArray(); - if (expectedMrfSleeperCab == null) { - Assert.AreEqual(0, sleeperCabNode.Length); - } else { - Assert.AreEqual(1, sleeperCabNode.Length); - Assert.AreEqual(expectedMrfSleeperCab.Value, XmlConvert.ToBoolean(sleeperCabNode.First().Value)); - } - - var maxNetPower1Node = mrf.XPathSelectElements(XMLHelper.QueryLocalName(XMLNames.Vehicle_MaxNetPower1)) - .ToArray(); - if (expectedMaxNetPower1 == null) { - Assert.AreEqual(0, maxNetPower1Node.Length); - } else { - Assert.AreEqual(1, maxNetPower1Node.Length); - Assert.AreEqual(expectedMaxNetPower1.Value, maxNetPower1Node.First().Value.ToDouble()); - } - - var maxNetPower2Node = mrf.XPathSelectElements(XMLHelper.QueryLocalName(XMLNames.Vehicle_MaxNetPower2)) - .ToArray(); - if (expectedMaxNetPower2 == null) { - Assert.AreEqual(0, maxNetPower2Node.Length); - } else { - Assert.AreEqual(1, maxNetPower2Node.Length); - Assert.AreEqual(expectedMaxNetPower2.Value, maxNetPower2Node.First().Value.ToDouble()); - } - - var zeNode = mrf.XPathSelectElement(XMLHelper.QueryLocalName(XMLNames.Vehicle_ZeroEmissionVehicle)); - Assert.NotNull(zeNode); - Assert.AreEqual(zeHDV, XmlConvert.ToBoolean(zeNode.Value)); - } - private static void SetExemptedParameters(XPathNavigator nav, bool zeroEmission, bool hybrid, bool dualFuel) { var manager = new XmlNamespaceManager(nav.NameTable); @@ -435,10 +316,9 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = xmlInputReader.CreateDeclaration(filename); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); var runs = factory.SimulationRuns().ToList(); @@ -460,7 +340,7 @@ namespace TUGraz.VectoCore.Tests.Integration Assert.IsTrue(validator.ValidateXML(XmlDocumentType.ManufacturerReport), validator.ValidationError); var val2 = new XMLValidator(XmlReader.Create(primaryReportFile)); - Assert.IsTrue(val2.ValidateXML(XmlDocumentType.MultistageOutputData), val2.ValidationError); + Assert.IsTrue(val2.ValidateXML(XmlDocumentType.MultistepOutputData), val2.ValidationError); //var val3 = new XMLValidator(XmlReader.Create(monitoringFile)); //Assert.IsTrue(val3.ValidateXML(XmlDocumentType.MonitoringReport), val3.ValidationError); diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/NaturalGasVehicles.cs b/VectoCore/VectoCoreTest/Integration/Declaration/NaturalGasVehicles.cs index 09c976b8f6216edaeda053c67befee98795be010..7d9c6bdabe49859e62d2ed17f3673a65b8953bdb 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/NaturalGasVehicles.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/NaturalGasVehicles.cs @@ -45,6 +45,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -100,10 +101,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration var writer = new FileOutputWriter(filename); // new MockDeclarationWriter(filename); var inputData = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); @@ -135,9 +135,11 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration private readonly Dictionary<ReportType, XDocument> _reports = new Dictionary<ReportType, XDocument>(); + + public MockDeclarationWriter(string filename) { - + JobFile = filename; } public XDocument GetReport(ReportType type) @@ -165,6 +167,18 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration { } + public IDictionary<ReportType, string> GetWrittenFiles() + { + throw new NotImplementedException(); + } + + public int NumberOfManufacturingStages + { + set => throw new NotImplementedException(); + } + + public XDocument MultistageXmlReport { get; } + #endregion #region Implementation of ISummaryWriter @@ -175,5 +189,15 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration } #endregion + + #region Implementation of IOutputDataWriter + + public string JobFile + { + get; + private set; + } + + #endregion } } diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/TestMaxMassInMUCycle.cs b/VectoCore/VectoCoreTest/Integration/Declaration/TestMaxMassInMUCycle.cs index 4f6e9f1dbabb600c0951adbad4aafda53c115a1f..99b563c64a2e05e8a11ecebc199905aa48150bea 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/TestMaxMassInMUCycle.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/TestMaxMassInMUCycle.cs @@ -37,6 +37,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -66,11 +67,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Declaration var relativeJobPath = jobFile; var writer = new FileOutputWriter(relativeJobPath); var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); diff --git a/VectoCore/VectoCoreTest/Integration/Declaration/VocationalVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Declaration/VocationalVehicleTest.cs index 05b72fc4ec65f1f4d9761d58ebedf402ee8fef5f..85246786987e121ea4123e0086d6fec85134f865 100644 --- a/VectoCore/VectoCoreTest/Integration/Declaration/VocationalVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Declaration/VocationalVehicleTest.cs @@ -37,6 +37,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -69,10 +70,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var writer = new FileOutputWriter(filename); var inputData = xmlInputReader.CreateDeclaration(filename); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(new MockSumWriter()); var runs = factory.SimulationRuns().ToList(); diff --git a/VectoCore/VectoCoreTest/Integration/DualFuel/DualFuelTests.cs b/VectoCore/VectoCoreTest/Integration/DualFuel/DualFuelTests.cs index 5e626b018d8d70d1efe3a15d012aa339d21274f1..68dc1b1ed857e6c7cdb912edf39417d268b2f177 100644 --- a/VectoCore/VectoCoreTest/Integration/DualFuel/DualFuelTests.cs +++ b/VectoCore/VectoCoreTest/Integration/DualFuel/DualFuelTests.cs @@ -5,6 +5,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -35,10 +36,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DualFuel var jobContainer = new JobContainer(sumData); var inputData = xmlInputReader.CreateDeclaration(jobName); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + runsFactory.WriteModalResults = true; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -58,10 +58,9 @@ namespace TUGraz.VectoCore.Tests.Integration.DualFuel var jobContainer = new JobContainer(sumData); var inputData = xmlInputReader.CreateDeclaration(jobName); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + runsFactory.WriteModalResults = true; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); diff --git a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs index 9e23da4bef43cee7b4617cf6cdb5b2253371b7a8..3bacc185d0c34dfab8cd4b49d3ba81753e40069a 100644 --- a/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs +++ b/VectoCore/VectoCoreTest/Integration/FuelTypesTest.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Utils; @@ -108,10 +109,9 @@ namespace TUGraz.VectoCore.Tests.Integration var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(jobName); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + runsFactory.WriteModalResults = true; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); diff --git a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs index ef936822099a928ec60d41e926040a6d9295ba9e..e40c44ba0f9d908810d484831b89ff3dfd4d5f6c 100644 --- a/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs +++ b/VectoCore/VectoCoreTest/Integration/FullCycleDeclarationTest.cs @@ -42,6 +42,7 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; using NUnit.Framework; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.Integration { @@ -182,10 +183,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(LongHaulTruckDeclarationJob); var fileWriter = new FileOutputWriter(LongHaulTruckDeclarationJob); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.Validate = false; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -216,14 +216,12 @@ namespace TUGraz.VectoCore.Tests.Integration var inputData = JSONInputDataFactory.ReadJsonJob(LongHaulTruckDeclarationJob); var fileWriter = new FileOutputWriter("Truck40t_Mod1Hz_Test.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - ModalResults1Hz = false - }; - var factory1Hz = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - ModalResults1Hz = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.ModalResults1Hz = false; + var factory1Hz = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory1Hz.WriteModalResults = true; + factory1Hz.ModalResults1Hz = true; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -300,10 +298,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(DeliveryTruckDeclarationJob); var fileWriter = new FileOutputWriter(DeliveryTruckDeclarationJob); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.Validate = false; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -331,10 +328,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(DeliveryTruck8GearDeclarationJob); var fileWriter = new FileOutputWriter(DeliveryTruck8GearDeclarationJob); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.Validate = false; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -355,9 +351,8 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(Class9RigidTruckPTOJob); var fileWriter = new FileOutputWriter(Class9RigidTruckPTOJob); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -377,9 +372,8 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(Class5TractorDeclPrimaryRetarder); var fileWriter = new FileOutputWriter(Class5TractorDeclPrimaryRetarder); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); diff --git a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs index 1c16576c9836186d76ffcefd122f7e16b496c966..f1b1ee675f4f0dc3aab3bcc50d29947ece8638fe 100644 --- a/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Hybrid/ParallelHybridTest.cs @@ -14,6 +14,7 @@ using TUGraz.VectoCore.InputData.Reader.Impl; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; @@ -275,10 +276,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile); var writer = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer) { - Validate = false, - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer); + factory.Validate = false; + factory.WriteModalResults = true; var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); @@ -823,10 +823,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Hybrid var inputProvider = JSONInputDataFactory.ReadJsonJob(jobFile); var writer = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputProvider, writer) { - Validate = false, - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputProvider, writer); + factory.Validate = false; + factory.WriteModalResults = true; var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageMultipleRunsTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageMultipleRunsTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..62a554a0c80717e9e8ac822162bf48bf5d754260 --- /dev/null +++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageMultipleRunsTest.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.ServiceModel.Syndication; +using System.Threading; +using System.Threading.Tasks; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.FileIO.JSON; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; +using TUGraz.VectoCore.OutputData; +using TUGraz.VectoCore.OutputData.FileIO; + +namespace TUGraz.VectoCore.Tests.Integration.Multistage +{ + [TestFixture] + public class MultistageMultipleRunsTest + { + private const string TestDataDir = "TestData\\Integration\\Multistage\\"; + + private const string CompletedDiesel = TestDataDir + "newVifCompletedConventional.vecto"; + private const string CompletedExempted = TestDataDir + "newVifExempted.vecto"; + private const string CompletedExemptedWithoutTPMLM = TestDataDir + "newVifExempted-noTPMLM.vecto"; + private string CompletedWithoutADAS = TestDataDir + "newVifCompletedConventional-noADAS.vecto"; + + + + + + + private const string InterimExempted = TestDataDir + "newVifExemptedIncomplete.vecto"; + private const string InterimDiesel = TestDataDir + "newVifInterimDiesel.vecto"; + + private FileOutputWriter _sumFileWriter; + private SummaryDataContainer _sumContainer; + private JobContainer _jobContainer; + + private FileOutputWriter _fileoutputWriter; + private TempFileOutputWriter _tempFileOutputWriter; + private ExecutionMode _mode = ExecutionMode.Declaration; + + private string _outputDirectory; + + private Stopwatch _stopWatch; + + [OneTimeSetUp] + public void OneTimeSetUp() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + } + + [SetUp] + public void SetUp() + { + _stopWatch = new Stopwatch(); + _stopWatch.Start(); + _outputDirectory = Path.Combine(TestContext.CurrentContext.TestDirectory,TestContext.CurrentContext.Test.Name); + _sumFileWriter = new FileOutputWriter(_outputDirectory); + _sumContainer = new SummaryDataContainer(_sumFileWriter); + _jobContainer = new JobContainer(_sumContainer); + } + + [TearDown] + public void TearDown() + { + _stopWatch.Stop(); + TestContext.WriteLine($"Execution time: {_stopWatch.Elapsed}"); + } + + [Test]//, Timeout(3000)] + public void ExemptedPrimaryAndCompletedTest() + { + + StartSimulation(CompletedExempted); + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + } + + [Test] + public void ExemptedPrimaryAndCompletedWithoutTPMLMTest() + { + + StartSimulation(CompletedExemptedWithoutTPMLM); + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + } + + [Test]//, Timeout(3000)] + public void ExemptedPrimaryAndInterimTest() + { + StartSimulation(InterimExempted); + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsFalse(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsFalse(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + + } + + private IList<string> GetWrittenFiles() + { + var files = new List<string>(); + var outputWriters = _jobContainer.GetOutputDataWriters(); + foreach (var outputDataWriter in outputWriters) { + files.AddRange(outputDataWriter.GetWrittenFiles().Values); + } + + return files; + } + + //SpecialCase II + [Test, Timeout(1000 * 20 * 60)] + public void PrimaryAndCompletedTest() + { + StartSimulation(CompletedDiesel); + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + + + } + + [Test] + public void PrimaryAndCompletedWithoutADASAndTPMLM() + { + StartSimulation(CompletedWithoutADAS); + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + + } + + //SpecialCase I + [Test, Timeout(1000 * 10 * 60)] + public void PrimaryAndInterimTest() + { + StartSimulation(InterimDiesel); + + + var writtenFiles = GetWrittenFiles(); + ShowWrittenFiles(writtenFiles); + + Assert.IsTrue(writtenFiles.Contains(_tempFileOutputWriter.XMLFullReportName)); + Assert.IsFalse(writtenFiles.Contains(_fileoutputWriter.XMLFullReportName)); + Assert.IsFalse(writtenFiles.Contains(_fileoutputWriter.XMLCustomerReportName)); + Assert.IsTrue(writtenFiles.Contains(_fileoutputWriter.XMLMultistageReportFileName)); + } + + private void StartSimulation(string path) + { + var inputFile = Path.GetFullPath(path); + var input = JSONInputDataFactory.ReadJsonJob(inputFile); + + + StartSimulation(input); + + _jobContainer.WaitFinished(); + } + + + private void StartSimulation(IInputDataProvider input) + { + _fileoutputWriter = new FileOutputWriter(_outputDirectory); + _tempFileOutputWriter = new TempFileOutputWriter(_fileoutputWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(_mode, input, _fileoutputWriter); + runsFactory.WriteModalResults = true; + runsFactory.ModalResults1Hz = true; + runsFactory.Validate = true; + runsFactory.ActualModalData = true; + runsFactory.SerializeVectoRunData = true; + + var timeout = 1000; + + + _jobContainer.AddRuns(runsFactory); + _jobContainer.Execute(); + } + + private void ShowWrittenFiles(IList<string> writtenFiles) + { + TestContext.WriteLine("Written Files:"); + if (writtenFiles.Count == 0) + { + TestContext.WriteLine("No Files Written"); + } + foreach (var fileName in writtenFiles) + { + TestContext.WriteLine(fileName); + } + } + + + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs index 7197eca49cd5e17e161245f86f5f738f6ab89e0e..3afc06d2e0ad1f40a19423810c069f90b9c1427e 100644 --- a/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Integration/Multistage/MultistageVehicleTest.cs @@ -17,6 +17,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.OutputData.XML; @@ -32,8 +33,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage public class MultistageVehicleTest { const string VIFDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\"; - const string InputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\"; - private const string PrimaryInputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\"; + const string InputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\"; + private const string PrimaryInputDirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\"; const string InputFilePath = InputDirPath + "vecto_vehicle-stage_input_full-sample.xml"; @@ -88,7 +89,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage _generatedVIFFilepath = writer.XMLMultistageReportFileName; var inputData = new XMLDeclarationVIFInputData(vifDataProvider, vehicle); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); var jobContainer = new JobContainer(new MockSumWriter()); @@ -106,7 +107,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage using (var xmlReader = XmlReader.Create(writer.XMLMultistageReportFileName)) { var validator = new XMLValidator(xmlReader); - Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistageOutputData), validator.ValidationError); + Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistepOutputData), validator.ValidationError); } } @@ -127,7 +128,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var writer = new FileOutputVIFWriter(vifResult, numberOfManufacturingStages); var inputData = new XMLDeclarationVIFInputData(vifDataProvider, vehicle); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); var jobContainer = new JobContainer(new MockSumWriter()); var runs = factory.SimulationRuns().ToList(); @@ -145,7 +146,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage using (var xmlReader = XmlReader.Create(writer.XMLMultistageReportFileName)) { var validator = new XMLValidator(xmlReader); - Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistageOutputData), validator.ValidationError); + Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistepOutputData), validator.ValidationError); } TestNewVifData(writer.XMLMultistageReportFileName); @@ -167,8 +168,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage private void TestVifStage2Data(IManufacturingStageInputData data) { - Assert.AreEqual(2, data.StageCount); - TestSignatureData(data.HashPreviousStage, "nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=", + Assert.AreEqual(2, data.StepCount); + TestSignatureData(data.HashPreviousStep, "nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=", "#PIF-d10aff76c5d149948046"); Assert.AreEqual("Intermediate Manufacturer 1", data.Vehicle.Manufacturer); @@ -188,8 +189,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage private void TestVifStage3Data(IManufacturingStageInputData data) { - Assert.AreEqual(3, data.StageCount); - TestSignatureData(data.HashPreviousStage, "BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=", + Assert.AreEqual(3, data.StepCount); + TestSignatureData(data.HashPreviousStep, "BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=", "#RESULT-6f30c7fe665a47938f6b"); Assert.AreEqual("Intermediate Manufacturer 2", data.Vehicle.Manufacturer); @@ -212,17 +213,18 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var hvac = data.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.AreEqual(BusHVACSystemConfiguration.Configuration1, hvac.SystemConfiguration); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvac.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvac.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvac.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, hvac.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvac.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(50.SI<Watt>(), hvac.AuxHeaterPower); Assert.AreEqual(false, hvac.DoubleGlazing); Assert.AreEqual(true, hvac.AdjustableAuxiliaryHeater); Assert.AreEqual(false, hvac.SeparateAirDistributionDucts); - Assert.AreEqual(false, hvac.WaterElectricHeater); - Assert.AreEqual(false, hvac.AirElectricHeater); - Assert.AreEqual(true, hvac.OtherHeatingTechnology); + //Assert.AreEqual(false, hvac.WaterElectricHeater); + //Assert.AreEqual(false, hvac.AirElectricHeater); + //Assert.AreEqual(true, hvac.OtherHeatingTechnology); TestApplicationInformation(data.ApplicationInformation, "!!NOT FOR CERTIFICATION!!!", "2021-03-13T07:20:08.0187663Z"); @@ -233,8 +235,8 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage private void TestVifStage4Data(IManufacturingStageInputData data) { - Assert.AreEqual(4, data.StageCount); - TestSignatureData(data.HashPreviousStage, "GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=", + Assert.AreEqual(4, data.StepCount); + TestSignatureData(data.HashPreviousStep, "GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=", "#RESULT-8f30c7fe665a47938f6b"); Assert.AreEqual("Some Manufacturer", data.Vehicle.Manufacturer); @@ -245,7 +247,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage Assert.AreEqual(LegislativeClass.M3, data.Vehicle.LegislativeClass); Assert.AreEqual(500, data.Vehicle.CurbMassChassis.Value()); Assert.AreEqual(3500, data.Vehicle.GrossVehicleMassRating.Value()); - Assert.AreEqual(null, data.Vehicle.AirdragModifiedMultistage); + Assert.AreEqual(true, data.Vehicle.AirdragModifiedMultistep); Assert.AreEqual(TankSystem.Compressed, data.Vehicle.TankSystem); Assert.AreEqual(RegistrationClass.II_III, data.Vehicle.RegisteredClass); Assert.AreEqual(1, data.Vehicle.NumberPassengerSeatsLowerDeck); @@ -286,22 +288,17 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var hvac = data.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvac.SystemConfiguration); - Assert.AreEqual(HeatPumpType.none, hvac.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvac.HeatPumpModeDriverCompartment); - Assert.AreEqual(3, hvac.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvac.HeatPumpPassengerCompartments[0].Item2); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvac.HeatPumpPassengerCompartments[1].Item1); - Assert.AreEqual(HeatPumpMode.heating, hvac.HeatPumpPassengerCompartments[1].Item2); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpPassengerCompartments[2].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvac.HeatPumpPassengerCompartments[2].Item2); + Assert.AreEqual(HeatPumpType.none, hvac.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvac.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvac.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_4_stage, hvac.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(50.SI<Watt>(), hvac.AuxHeaterPower); Assert.AreEqual(false, hvac.DoubleGlazing); Assert.AreEqual(true, hvac.AdjustableAuxiliaryHeater); Assert.AreEqual(false, hvac.SeparateAirDistributionDucts); - Assert.AreEqual(true, hvac.WaterElectricHeater); - Assert.AreEqual(false, hvac.AirElectricHeater); - Assert.AreEqual(false, hvac.OtherHeatingTechnology); + //Assert.AreEqual(true, hvac.WaterElectricHeater); + //Assert.AreEqual(false, hvac.AirElectricHeater); + //Assert.AreEqual(false, hvac.OtherHeatingTechnology); } private void TestSignatureData(DigestData digestData, string digestValue, string reference) @@ -335,12 +332,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var writer = new MockDeclarationWriter("vif_vehicle-sample_test.xml"); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) - { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); @@ -364,11 +358,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var writer = new FileOutputWriter("vif_vehicle-sample_test.xml"); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); @@ -392,11 +384,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage //var xmlreport = new XMLDeclarationReportMultistageBusVehicle(writer); var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); @@ -412,12 +402,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var inputData = xmlInputReader.Create(primaryFile); var writer = new MockDeclarationWriter(outputFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) - { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); @@ -438,11 +425,9 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage var writer = new FileOutputWriter(outputFile); var xmlreport = new XMLDeclarationReportPrimaryVehicle(writer); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport) - { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer, xmlreport); + factory.WriteModalResults = true; + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); @@ -455,7 +440,7 @@ namespace TUGraz.VectoCore.Tests.Integration.Multistage using (var xmlReader = XmlReader.Create(writer.XMLPrimaryVehicleReportName)) { var validator = new XMLValidator(xmlReader); - Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistageOutputData), validator.ValidationError); + Assert.IsTrue(validator.ValidateXML(VectoCore.Utils.XmlDocumentType.MultistepOutputData), validator.ValidationError); } ValidateVIFData(writer.XMLPrimaryVehicleReportName); diff --git a/VectoCore/VectoCoreTest/Integration/RoadSweepers/RoadSweeperTests.cs b/VectoCore/VectoCoreTest/Integration/RoadSweepers/RoadSweeperTests.cs index 309efab926658ed494f85bc8e0a80a90bb5f0743..6d198dcf89cf8e85da868b651e2f52138126dd35 100644 --- a/VectoCore/VectoCoreTest/Integration/RoadSweepers/RoadSweeperTests.cs +++ b/VectoCore/VectoCoreTest/Integration/RoadSweepers/RoadSweeperTests.cs @@ -14,6 +14,7 @@ using TUGraz.VectoCore.InputData.Reader; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -198,11 +199,9 @@ namespace TUGraz.VectoCore.Tests.Integration.RoadSweepers var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; factory.SumData = sumContainer; @@ -240,11 +239,9 @@ namespace TUGraz.VectoCore.Tests.Integration.RoadSweepers var sumContainer = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumContainer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; factory.SumData = sumContainer; diff --git a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs index 4dfc179aca1dd162c11ba9f7b725c2080e16fd6e..2e96e7ad0d6165d5fae4bca65a3669d1d4761ca5 100644 --- a/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs +++ b/VectoCore/VectoCoreTest/Integration/SimulationRuns/FullPowertrain.cs @@ -53,6 +53,7 @@ using Wheels = TUGraz.VectoCore.Models.SimulationComponent.Impl.Wheels; using NUnit.Framework; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.Reader.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns { @@ -341,7 +342,7 @@ namespace TUGraz.VectoCore.Tests.Integration.SimulationRuns var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); jobContainer.AddRuns(factory); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/Integration/TestVehicleIdlingSpeed.cs b/VectoCore/VectoCoreTest/Integration/TestVehicleIdlingSpeed.cs index 896bdaf5a83a3506dbff007ba1dd45b155978b4c..84f5f77111aa69ad41a7a8b3f05c92aef01d4c0d 100644 --- a/VectoCore/VectoCoreTest/Integration/TestVehicleIdlingSpeed.cs +++ b/VectoCore/VectoCoreTest/Integration/TestVehicleIdlingSpeed.cs @@ -43,6 +43,7 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; using NUnit.Framework; using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.Integration { @@ -88,7 +89,7 @@ namespace TUGraz.VectoCore.Tests.Integration var inputDataProvider = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, new FileOutputWriter("Idle900")); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, new FileOutputWriter("Idle900")); //factory.WriteModalResults = true; var jobContainer = new JobContainer(null); diff --git a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs index 6cc856913e867c5980f3ac1b39b2538e7b3f6d6f..22eea5b739f6dcae7c13dcae9807ebeb163cd50e 100644 --- a/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs +++ b/VectoCore/VectoCoreTest/Integration/TorqueLimitsTest.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using Assert = NUnit.Framework.Assert; @@ -92,7 +93,7 @@ namespace TUGraz.VectoCore.Tests.Integration public void TestGearboxTorqueLimitsAbove90FLD() { var inputDataProvider = JSONInputDataFactory.ReadJsonJob(GearboxLimitJobDecl_865); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); var run = factory.DataReader.NextRun().First(); @@ -119,7 +120,7 @@ namespace TUGraz.VectoCore.Tests.Integration public void TestGearboxTorqueLimitsBelow90FLD() { var inputDataProvider = JSONInputDataFactory.ReadJsonJob(GearboxLimitJobDecl_800); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); var run = factory.DataReader.NextRun().First(); @@ -146,7 +147,7 @@ namespace TUGraz.VectoCore.Tests.Integration public void TestVehicleTorqueLimitsAbove95FLD() { var inputDataProvider = JSONInputDataFactory.ReadJsonJob(VehicleLimitJobDecl_910); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); var run = factory.DataReader.NextRun().First(); @@ -173,7 +174,7 @@ namespace TUGraz.VectoCore.Tests.Integration public void TestVehicleTorqueLimitsBelow95FLD() { var inputDataProvider = JSONInputDataFactory.ReadJsonJob(VehicleLimitJobDecl_850); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); var run = factory.DataReader.NextRun().First(); @@ -205,9 +206,8 @@ namespace TUGraz.VectoCore.Tests.Integration var fileWriter = new FileOutputWriter(file); var sumData = new SummaryDataContainer(fileWriter); var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter) { - WriteModalResults = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter); + factory.WriteModalResults = true; var jobContainer = new JobContainer(sumData); @@ -225,10 +225,9 @@ namespace TUGraz.VectoCore.Tests.Integration var fileWriter = new FileOutputWriter(file); var sumData = new SummaryDataContainer(fileWriter); var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter); + factory.WriteModalResults = true; + factory.ActualModalData = true; var jobContainer = new JobContainer(sumData); @@ -246,10 +245,8 @@ namespace TUGraz.VectoCore.Tests.Integration var fileWriter = new FileOutputWriter(file); var sumData = new SummaryDataContainer(fileWriter); var inputDataProvider = JSONInputDataFactory.ReadJsonJob(file); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter) { - WriteModalResults = true, - //ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, fileWriter); + factory.WriteModalResults = true; //ActualModalData = true var jobContainer = new JobContainer(sumData); @@ -277,10 +274,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); var fileWriter = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.Validate = false; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); @@ -299,10 +295,9 @@ namespace TUGraz.VectoCore.Tests.Integration { var inputData = xmlInputReader.CreateDeclaration(jobFile); var fileWriter = new FileOutputWriter(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter) { - WriteModalResults = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + factory.WriteModalResults = true; + factory.Validate = false; var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); jobContainer.AddRuns(factory); diff --git a/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs b/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs index 114ce07f82d61fe312ac6da9c9d8e89436a99aa1..030e54a2c5fa526d00b707bab746d85f2299a8bf 100644 --- a/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs +++ b/VectoCore/VectoCoreTest/Integration/VTP/VTPTest.cs @@ -38,6 +38,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; @@ -65,13 +66,12 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; - + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; + jobContainer.AddRuns(runsFactory); Assert.AreEqual(1, jobContainer.Runs.Count); @@ -98,12 +98,11 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -137,12 +136,11 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -174,12 +172,11 @@ namespace TUGraz.VectoCore.Tests.Integration.VTP var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); diff --git a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs index d5992e6031481ab9a6a19534778b4aa568974b31..a4d31d95ca8c0c02a6b83a309b9a35e2694c0a84 100644 --- a/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/Integration/XMLReportTest.cs @@ -45,6 +45,7 @@ using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.OutputData.XML; @@ -87,10 +88,13 @@ namespace TUGraz.VectoCore.Tests.Integration File.Delete(writer.SumFileName); } - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + // WriteModalResults = false, + // Validate = false, + //}; jobContainer.AddRuns(runsFactory); // no need to run the simulation, we only check whether the meta-data is correct, no results are considered @@ -138,11 +142,14 @@ namespace TUGraz.VectoCore.Tests.Integration var sumData = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumData); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) - { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) + // { + // WriteModalResults = false, + // Validate = false, + // }; jobContainer.AddRuns(runsFactory); // no need to run the simulation, we only check whether the meta-data is correct, no results are considered @@ -170,10 +177,13 @@ namespace TUGraz.VectoCore.Tests.Integration File.Delete(writer.SumFileName); } - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + // WriteModalResults = false, + // Validate = false, + //}; jobContainer.AddRuns(runsFactory); jobContainer.Execute(); @@ -256,11 +266,14 @@ namespace TUGraz.VectoCore.Tests.Integration var jobContainer = new JobContainer(sumData); var dataProvider = xmlInputReader.CreateDeclaration(modified); - - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + // WriteModalResults = false, + // Validate = false, + //}; jobContainer.AddRuns(runsFactory); xmlReport.DoWriteReport(); @@ -291,10 +304,13 @@ namespace TUGraz.VectoCore.Tests.Integration File.Delete(writer.SumFileName); } - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + // WriteModalResults = false, + // Validate = false, + //}; jobContainer.AddRuns(runsFactory); // no need to run the simulation, we only check whether the meta-data is correct, no results are considered @@ -326,7 +342,7 @@ namespace TUGraz.VectoCore.Tests.Integration [TestCase] public void TestXMLPrimaryVehicleReportTest() { - var jobfile = @"Testdata\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBus-sample.xml"; + var jobfile = @"Testdata\XML\XMLReaderDeclaration\SchemaVersion2.10/vecto_vehicle-primary_heavyBus-sample.xml"; var dataProvider = xmlInputReader.CreateDeclaration(jobfile); var writer = new FileOutputWriter(jobfile); var xmlReport = new XMLDeclarationReport(writer); @@ -337,10 +353,13 @@ namespace TUGraz.VectoCore.Tests.Integration File.Delete(writer.SumFileName); } - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, + xmlReport, validate: false); + runsFactory.WriteModalResults = false; + //var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { + // WriteModalResults = false, + // Validate = false, + //}; jobContainer.AddRuns(runsFactory); // no need to run the simulation, we only check whether the meta-data is correct, no results are considered diff --git a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs index d5856a995ea6e8455f6f70dbfa4c640e4544ed87..9a5abb26b2a02794b8a0080ed230124c164bd22d 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/BusFactoryTest.cs @@ -6,6 +6,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -53,12 +54,10 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration //? new XMLDeclarationInputDataProvider(relativeJobPath, true) : JSONInputDataFactory.ReadJsonJob(jobFile); var sumContainer = new SummaryDataContainer(writer); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - SumData = sumContainer, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.SumData = sumContainer; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(sumContainer); @@ -87,12 +86,10 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration ? xmlInputReader.CreateDeclaration(jobFile) //? new XMLDeclarationInputDataProvider(relativeJobPath, true) : JSONInputDataFactory.ReadJsonJob(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; - + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; + var jobContainer = new JobContainer(new SummaryDataContainer(writer)); //var runs = factory.SimulationRuns().ToArray(); diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs index b9f6a2a2a66902aa15dafb8b784dd363ee9ae1e0..e753236797b322b0f8f27847e392944cf44d9af9 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DataAdapter/DeclarationAdapterCreateVocationalVehicleTest.cs @@ -7,6 +7,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.OutputData.XML; @@ -60,10 +61,9 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration.DataAdapter var sumData = new SummaryDataContainer(null); var jobContainer = new JobContainer(sumData); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, null, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, null, xmlReport); + runsFactory.WriteModalResults = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); // no need to run the simulation, we only check whether the meta-data is correct, no results are considered diff --git a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs index dc9b3738c46371ca359ecbde237fcc0b55314edf..49af5d5c62aed2f864c10ca5801a444e94441b4e 100644 --- a/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs +++ b/VectoCore/VectoCoreTest/Models/EngineeringMode/EngineeringModeBusAuxTest.cs @@ -27,6 +27,7 @@ using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.DataBus; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Battery; @@ -129,12 +130,10 @@ namespace TUGraz.VectoCore.Tests.Models.EngineeringMode : JSONInputDataFactory.ReadJsonJob(jobFile); var sumContainer = new SummaryDataContainer(writer); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - SumData = sumContainer, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; + factory.SumData = sumContainer; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(sumContainer); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs index 4c7eec9bc69935a663a82177b6277ea3c39b6c96..3649573fa741e6d3a06d99a9c69747f59aaa1b94 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/AuxTests.cs @@ -51,6 +51,7 @@ using TUGraz.VectoCore.Tests.Models.SimulationComponent; using TUGraz.VectoCore.Tests.Utils; using NUnit.Framework; using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; // ReSharper disable ObjectCreationAsStatement @@ -280,7 +281,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var inputData = JSONInputDataFactory.ReadJsonJob( @"TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); jobContainer.AddRuns(runsFactory); } @@ -295,7 +296,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); jobContainer.AddRuns(runsFactory); } @@ -308,7 +309,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\40t_Long_Haul_Truck_wrong_AUX.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); AssertHelper.Exception<VectoException>(() => jobContainer.AddRuns(runsFactory)); } diff --git a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs index 3b526ac26503e136c935f27dc50d078dd0490842..d31b86a035075047c37c57e80dfe8b8800575b46 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/DeclarationSimulationFactoryTest.cs @@ -39,6 +39,7 @@ using TUGraz.VectoCommon.Resources; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Utils; namespace TUGraz.VectoCore.Tests.Models.Simulation @@ -87,7 +88,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var inputDataProvider = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null) { Validate = false }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + factory.Validate = false; var runs = factory.SimulationRuns().ToArray(); Assert.AreEqual(10, runs.Length); @@ -98,7 +100,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation { var inputDataProvider = xmlInputReader.CreateDeclaration(SampleVehicleDecl); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null) { Validate = false }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, null); + factory.Validate = false; var runs = factory.SimulationRuns().ToArray(); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/FactoryTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/FactoryTest.cs index 2df4d2c4ea6b2521cc50fb659eae9567505b127c..6ad0a6d25d3ece17af0183cc03e6b2dfaf2a15bb 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/FactoryTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/FactoryTest.cs @@ -39,6 +39,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData.FileIO; using NUnit.Framework; using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Tests.Utils; namespace TUGraz.VectoCore.Tests.Models.Simulation @@ -64,7 +65,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var fileWriter = new FileOutputWriter(DeclarationJobFile); var inputData = JSONInputDataFactory.ReadJsonJob(DeclarationJobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); //factory.DataReader.SetJobFile(DeclarationJobFile); @@ -115,7 +116,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var fileWriter = new FileOutputWriter(EngineeringJobFile); var inputData = JSONInputDataFactory.ReadJsonJob(EngineeringJobFile); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); var run = factory.SimulationRuns().First(); @@ -132,7 +133,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void TestDistanceCycleInVTPEngineering() { var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\VTPModeWithDistanceCycle.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, null); AssertHelper.Exception<VectoException>(() => factory.SimulationRuns().ToArray(), "Distance-based cycle can not be simulated in VerificationTest mode"); } @@ -142,7 +143,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void TestDistanceCycleInEngineOnly() { var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\EngineOnlyJobWithDistanceCycle.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, null); AssertHelper.Exception<VectoException>(() => factory.SimulationRuns().ToArray(), "Distance-based cycle can not be simulated in EngineOnly mode"); } @@ -151,7 +152,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void TestMeasuredSpeedCycleInEngineOnly() { var inputData = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\EngineOnlyJobWithMeasuredCycle.vecto"); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, null); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, null); AssertHelper.Exception<VectoException>(() => { var container = new JobContainer(null); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs index fd782aaed4c0e9a95d953ad23803bd23b8e7caeb..4d76763414f46e796a8a0d35320ab92e767ae72f 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/LossMapRangeValidationTest.cs @@ -44,6 +44,7 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; using TUGraz.VectoCore.OutputData.FileIO; @@ -262,7 +263,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void CreateJobWithLossMapEfficiency_Engineering() { var dataProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\12t Delivery Truck Engineering Efficiency.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, dataProvider, null); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, dataProvider, null); var jobContainer = new JobContainer(null); jobContainer.AddRuns(runsFactory); } @@ -277,7 +278,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var fileWriter = new FileOutputWriter(jobFileName); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFileName); - var factory = new SimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter); var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); jobContainer.Execute(); @@ -295,7 +296,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void CreateJobWith_Axle_LossMapEfficiency_Declaration() { var dataProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\40t_Long_Haul_Truck with AxleEfficiency.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, null); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, null); var jobContainer = new JobContainer(null); AssertHelper.Exception<InvalidFileFormatException>(() => jobContainer.AddRuns(runsFactory)); @@ -308,7 +309,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation public void CreateJobWith_Gear_LossMapEfficiency_Declaration() { var dataProvider = JSONInputDataFactory.ReadJsonJob(@"TestData\Jobs\40t_Long_Haul_Truck with GearEfficiency.vecto"); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, null); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, null); var jobContainer = new JobContainer(null); AssertHelper.Exception<InvalidFileFormatException>(() => jobContainer.AddRuns(runsFactory)); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs index a04c2c93295a1901e62e51cb2e25ddba96dfdfad..478489c4b6ff93a123bf0a4b9f484dc8d7f362d6 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/MeasuredSpeedModeTest.cs @@ -44,6 +44,7 @@ using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; using TUGraz.VectoCore.Models.Simulation.Data; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data; using TUGraz.VectoCore.Models.SimulationComponent.Data.Engine; using TUGraz.VectoCore.Models.SimulationComponent.Data.Gearbox; @@ -374,7 +375,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var jobContainer = new JobContainer(sumWriter); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); runsFactory.ActualModalData = actualModData; runsFactory.WriteModalResults = true; diff --git a/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs index feb58293ab45e117d7f28e3db711b2c76f8762aa..9f02660a5851fb2b012a36c113b346332e61c4d4 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/PwheelModeTests.cs @@ -49,6 +49,7 @@ using TUGraz.VectoCore.Models.SimulationComponent.Impl; using NUnit.Framework; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.Models.Simulation { @@ -195,7 +196,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var jobContainer = new JobContainer(sumWriter); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); jobContainer.AddRuns(runsFactory); jobContainer.Execute(); @@ -224,7 +225,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var jobContainer = new JobContainer(sumWriter); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); jobContainer.AddRuns(runsFactory); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs b/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs index e11683c6abb135654b985d6277859878f682c6e7..eb5451e5e9bd165d3a69b3ec547dd1ab1254e6aa 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/ShiftStrategyV2Test.cs @@ -8,6 +8,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -41,11 +42,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var relativeJobPath = jobFile; var writer = new FileOutputWriter(relativeJobPath); var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; Assert.NotNull(((IEngineeringInputDataProvider)inputData).DriverInputData.GearshiftInputData); var jobContainer = new JobContainer(new MockSumWriter()); @@ -313,11 +312,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var relativeJobPath = jobName; var writer = new FileOutputWriter(relativeJobPath); var inputData = JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var sumWriter = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumWriter); @@ -336,11 +333,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var relativeJobPath = jobName; var writer = new FileOutputWriter(relativeJobPath); var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new MockSumWriter()); var runs = factory.SimulationRuns().ToArray(); @@ -355,11 +350,9 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var relativeJobPath = jobName; var writer = new FileOutputWriter(relativeJobPath); var inputData = Path.GetExtension(relativeJobPath) == ".xml" ? xmlInputReader.CreateDeclaration(relativeJobPath) : JSONInputDataFactory.ReadJsonJob(relativeJobPath); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs b/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs index dd1de1a40001583bc2aeb74ced501b579f6100fb..c37ea78d34b6c9858bba4ed31d4aba8877c84403 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/SimulationPreprocessingTest.cs @@ -11,6 +11,7 @@ using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Impl; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -50,12 +51,11 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = Path.GetExtension(jobFile) == ".xml" ? xmlInputReader.CreateDeclaration(jobFile) : JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -91,12 +91,11 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -126,12 +125,11 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); @@ -177,13 +175,12 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(mode, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; - + var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; + jobContainer.AddRuns(runsFactory); //foreach (var i in new[] { 0, 1, 4, 5 }) { @@ -261,12 +258,11 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = true, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = true; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); diff --git a/VectoCore/VectoCoreTest/Models/Simulation/SimulationTests.cs b/VectoCore/VectoCoreTest/Models/Simulation/SimulationTests.cs index 32122b7005c4b72c6b040a2bb985a22b5c2b7a9e..fa2df82d7ed1dd4d5607416c47dee22fa35c4a3e 100644 --- a/VectoCore/VectoCoreTest/Models/Simulation/SimulationTests.cs +++ b/VectoCore/VectoCoreTest/Models/Simulation/SimulationTests.cs @@ -40,6 +40,7 @@ using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Utils; using NUnit.Framework; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.Models.Simulation { @@ -108,9 +109,8 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var sumWriter = new SummaryDataContainer(fileWriter); var inputData = JSONInputDataFactory.ReadJsonJob(EngineOnlyJob); - var factory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { - SumData = sumWriter - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + factory.SumData = sumWriter; return factory.SimulationRuns().First(); } @@ -124,7 +124,7 @@ namespace TUGraz.VectoCore.Tests.Models.Simulation var jobContainer = new JobContainer(sumWriter); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); jobContainer.AddRuns(runsFactory); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs index 27530fdf0d401cfd5a73408619598a39329168f0..35d06929d6890c3b79834cdbd54b631c23906aa0 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ATGearboxTest.cs @@ -33,6 +33,7 @@ using System.Collections.Generic; using NUnit.Framework; using System.IO; using System.Linq; +using TUGraz.VECTO; using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; @@ -51,7 +52,7 @@ using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Integration; using TUGraz.VectoCore.Tests.Utils; -using TUGraz.VECTO; + namespace TUGraz.VectoCore.Tests.Models.SimulationComponent { diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs index e513e94a440b4aa7eab2f3fe06ec21d4a9504f73..ef1426456a7b83982ee682643c501afd88830eb5 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/BatterySystemTest.cs @@ -349,9 +349,13 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent #region Implementation of IBatteryPackDeclarationInputData - public double MinSOC => 0.2; - public double MaxSOC => 0.8; + public double? MinSOC => 0.2; + public double? MaxSOC => 0.8; + public BatteryType BatteryType { get; } public AmpereSecond Capacity { get; } + public bool ConnectorsSubsystemsIncluded { get; } + public bool JunctionboxIncluded { get; } + public Kelvin TestingTemperature => null; public TableData InternalResistanceCurve => VectoCSVFile.ReadStream( InputDataHelper.InputDataAsStream("SoC, Ri", diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs index 2caf693f3854e47eee759127925a9be03137c40b..a955efe4cf3188060626f03debdfd144ec43288c 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponent/ElectricMotorTest.cs @@ -20,6 +20,7 @@ using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Utils; using TUGraz.VectoCore.Utils; + namespace TUGraz.VectoCore.Tests.Models.SimulationComponent { [TestFixture] @@ -59,7 +60,7 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponent Assert.AreEqual(0.15 * count, emModelData.Inertia.Value(), 1e-3); - Assert.AreEqual(2000, emModelData.ContinuousTorqueSpeed.AsRPM, 1e-3); + //Assert.AreEqual(2000, emModelData.ContinuousTorqueSpeed.AsRPM, 1e-3); Assert.AreEqual(238.7323 * count, emModelData.ContinuousTorque.Value(), 1e-3); Assert.AreEqual(334.23 * count, -emModelData.EfficiencyData.VoltageLevels.First().FullLoadCurve.FullLoadDriveTorque(2000.RPMtoRad()).Value(), 1e-3); diff --git a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs index 298d539c57724dd8c80a8a5b210fd7f5a4ef1224..a5bf2b56d4f980d849de32d77779fa204f0e08f3 100644 --- a/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs +++ b/VectoCore/VectoCoreTest/Models/SimulationComponentData/ElectricMotorEfficienyMapTest.cs @@ -35,7 +35,8 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { var fld = inputProvider.VoltageLevels.First().FullLoadCurve; var fldMap = ElectricFullLoadCurveReader.Create(fld, 1); - var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; + var pwr = inputProvider.VoltageLevels.First().PowerMap.First().PowerMap; //ToDo FK: maybe wrong selection + // var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; var pwrMap = ElectricMotorMapReader.Create(pwr, 1); var maxEmPwr = batPwr < 0 @@ -58,9 +59,10 @@ namespace TUGraz.VectoCore.Tests.Models.SimulationComponentData { JSONInputDataFactory.ReadElectricMotorData(@"TestData\Hybrids\ElectricMotor\GenericEMotor.vem", false); var fld = inputProvider.VoltageLevels.First().FullLoadCurve; - var fldMap = ElectricFullLoadCurveReader.Create(fld, 1); - - var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; + var fldMap = ElectricFullLoadCurveReader.Create(fld, 1); + + var pwr = inputProvider.VoltageLevels.First().PowerMap.First().PowerMap;//ToDo FK: maybe wrong selection + // var pwr = inputProvider.VoltageLevels.First().EfficiencyMap; var pwrMap = ElectricMotorMapReader.Create(pwr, 1); var maxEmPwr = batPwr < 0 diff --git a/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs b/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs index 555510e8df1c4cef064fb876566288adeb29ae41..aab45e2209ee816bda70d84ff2a6a4a83c471c76 100644 --- a/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs +++ b/VectoCore/VectoCoreTest/Models/WHRMapReaderTest.cs @@ -340,7 +340,7 @@ namespace TUGraz.VectoCore.Tests.Models } - [TestCase, Ignore("Engineering XML not maintained")] + [TestCase(), Ignore("Engineering XML not maintained")] public void ReadEngineeringXMLDualFuel() { var inputDataProvider = xmlInputReader.CreateEngineering(EngineeringDualFuelWHRVehicle); diff --git a/VectoCore/VectoCoreTest/Reports/ActualModalSimulationDataTest.cs b/VectoCore/VectoCoreTest/Reports/ActualModalSimulationDataTest.cs index 8b51ad218a018bcaf30a6aa06199e7871800cbce..3213a68a56e4bb6e45f9104f907ba10728a1199e 100644 --- a/VectoCore/VectoCoreTest/Reports/ActualModalSimulationDataTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ActualModalSimulationDataTest.cs @@ -34,6 +34,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -59,7 +60,7 @@ namespace TUGraz.VectoCore.Tests.Reports var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, fileWriter); factory.WriteModalResults = true; factory.ActualModalData = true; diff --git a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs index 9f65fed73e28ad85281d0e8e48641b4df8abc470..01364b48d34af973dcd787d69648e89ceef42cdb 100644 --- a/VectoCore/VectoCoreTest/Reports/ModDataTest.cs +++ b/VectoCore/VectoCoreTest/Reports/ModDataTest.cs @@ -51,6 +51,7 @@ using System.IO; using Ninject; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.Reader.ComponentData; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Tests.Models.Simulation; using TUGraz.VectoCore.Utils; @@ -163,7 +164,10 @@ namespace TUGraz.VectoCore.Tests.Reports var sumData = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(jobName); - var runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { WriteModalResults = false, Validate = false }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + runsFactory.WriteModalResults = false; + runsFactory.Validate = false; + jobContainer.AddRuns(runsFactory); var run = runsFactory.SimulationRuns().First(); @@ -174,7 +178,10 @@ namespace TUGraz.VectoCore.Tests.Reports jobName = @"TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload_ESSoff.vecto"; fileWriter = new FileOutputWriter(jobName); inputData = JSONInputDataFactory.ReadJsonJob(jobName); - runsFactory = new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { WriteModalResults = false, Validate = false }; + runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + runsFactory.WriteModalResults = false; + runsFactory.Validate = false; + jobContainer.AddRuns(runsFactory); run = runsFactory.SimulationRuns().First(); @@ -220,9 +227,8 @@ namespace TUGraz.VectoCore.Tests.Reports { var writer = new FileOutputWriter(filename); var inputData = xmlInputReader.CreateDeclaration(filename); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factory); @@ -366,7 +372,8 @@ namespace TUGraz.VectoCore.Tests.Reports var jobContainer = new JobContainer(sumData); var inputData = JSONInputDataFactory.ReadJsonJob(jobName); - var runsFactory = new SimulatorFactory(mode, inputData, fileWriter) { WriteModalResults = true }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(mode, inputData, fileWriter); + runsFactory.WriteModalResults = true; jobContainer.AddRuns(runsFactory); var modData = new List<Tuple<ModalResults, double>>(); @@ -850,7 +857,8 @@ namespace TUGraz.VectoCore.Tests.Reports var inputData = JSONInputDataFactory.ReadJsonJob(jobName); var runsFactory = - new SimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter) { WriteModalResults = true }; + SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Engineering, inputData, fileWriter); + runsFactory.WriteModalResults = true; jobContainer.AddRuns(runsFactory); var modData = new List<Tuple<ModalResults, Meter>>(); diff --git a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs index 9ebaab21d7cd3d9beb434f2d31abc134cceac588..0a41b4ca68956e2402be373b191d70f267f6ead8 100644 --- a/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs +++ b/VectoCore/VectoCoreTest/Reports/SumWriterTest.cs @@ -51,6 +51,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.Reader.ComponentData; using TUGraz.VectoCore.Models.Declaration; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.Models.SimulationComponent.Data; namespace TUGraz.VectoCore.Tests.Reports @@ -235,10 +236,9 @@ namespace TUGraz.VectoCore.Tests.Reports File.Delete(writer.SumFileName); } - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport) { - WriteModalResults = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, writer, xmlReport); + runsFactory.WriteModalResults = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); jobContainer.Execute(); jobContainer.WaitFinished(); @@ -294,10 +294,9 @@ namespace TUGraz.VectoCore.Tests.Reports var writer = new FileOutputWriter(jobFile); var inputData = xmlInputReader.CreateDeclaration(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var sumWriter = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumWriter); @@ -326,10 +325,9 @@ namespace TUGraz.VectoCore.Tests.Reports var writer = new FileOutputWriter(jobFile); var inputData = xmlInputReader.CreateDeclaration(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - ActualModalData = true - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; + factory.ActualModalData = true; var sumWriter = new SummaryDataContainer(writer); var jobContainer = new JobContainer(sumWriter); diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5PCCDecl/Tractor_4x2_vehicle-class-5_5_t_0.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5PCCDecl/Tractor_4x2_vehicle-class-5_5_t_0.xml index bae92d51d37a3605e173d63b7d5833281bf5f911..2445ad02f59daea4485e9098af8d3aaa1cf1bd28 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5PCCDecl/Tractor_4x2_vehicle-class-5_5_t_0.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5PCCDecl/Tractor_4x2_vehicle-class-5_5_t_0.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class5_Class-5_5t0"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRoll.xml index 01368a86b82648ae253234863ecb631141b1beee..a37b6e8eb9600dc990a1307139b784d8cebf0245 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRoll.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRoll.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5_EcoRoll"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRollEngineStop.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRollEngineStop.xml index 78b0ecf0ee0dc4fe20a4b929c064ab8bb89e4911..55b52a8b8103612a17ee5206a78b826e9d88de71 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRollEngineStop.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EcoRollEngineStop.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5_EcoRollEngineStop"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EngineStopStart.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EngineStopStart.xml index 917583a3f8bf6f3243b71964393274c322296efe..eccb769b78f587994ce7c52a1a733d2eb2cadea8 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EngineStopStart.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group5_EngineStopStart.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll.xml index a160bece1a5a8097eec6e744a96d409e64f7c233..eb02d9921c9daa5dbb3d911e703fe2fd14524693 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll.xml @@ -1,2148 +1,2139 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - 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:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-class9_AT_EcoRoll" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> - <Manufacturer>TUG Generic</Manufacturer> - <ManufacturerAddress>N.A.</ManufacturerAddress> - <Model>N.A.</Model> - <VIN>N.A.</VIN> - <Date>2019-02-27T09:39:05.3188703Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Rigid Lorry</VehicleCategory> - <AxleConfiguration>6x2</AxleConfiguration> - <CurbMassChassis>7750</CurbMassChassis> - <GrossVehicleMass>26000</GrossVehicleMass> - <IdlingSpeed>600</IdlingSpeed> - <RetarderType>None</RetarderType> - <AngledriveType>None</AngledriveType> - <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <PTOShaftsGearWheels>none</PTOShaftsGearWheels> - <PTOOtherElements>none</PTOOtherElements> - </v2.1:PTO> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class9_AT_EcoRoll" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <Manufacturer>TUG Generic</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N.A.</VIN> + <Date>2019-02-27T09:39:05.3188703Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Lorry</VehicleCategory> + <AxleConfiguration>6x2</AxleConfiguration> + <CurbMassChassis>7750</CurbMassChassis> + <GrossVehicleMass>26000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </v2.1:PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <SleeperCab>false</SleeperCab> - <v2.1:ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <ADAS xsi:type="AdvancedDriverAssistantSystemsType"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> - </v2.1:ADAS> - <Components xsi:type="v2.0:VehicleComponentsType"> - <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> - <Data id="ENG-Generic220kW7.7lEngine" xsi:type="EngineDataDeclarationType"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>Generic 220kW 7.7l Engine</Model> - <CertificationNumber>ENG-Generic 220kW 7.7l Engine</CertificationNumber> - <Date>2019-02-27T09:39:05.3241256Z</Date> - <AppVersion>VectoCore</AppVersion> - <Displacement>7700</Displacement> - <IdlingSpeed>600</IdlingSpeed> - <RatedSpeed>2200</RatedSpeed> - <RatedPower>219774</RatedPower> - <MaxEngineTorque>1200</MaxEngineTorque> - <WHTCUrban>1.0300</WHTCUrban> - <WHTCRural>1.0100</WHTCRural> - <WHTCMotorway>1.0000</WHTCMotorway> - <BFColdHot>1.0000</BFColdHot> - <CFRegPer>1.0000</CFRegPer> - <CFNCV>1.0000</CFNCV> - <FuelType>Diesel CI</FuelType> - <FuelConsumptionMap> - <Entry engineSpeed="600.00" torque="-144.58" fuelConsumption="0.00" /> - <Entry engineSpeed="600.00" torque="-44.58" fuelConsumption="0.00" /> - <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="638.00" /> - <Entry engineSpeed="600.00" torque="70.00" fuelConsumption="1601.24" /> - <Entry engineSpeed="600.00" torque="100.00" fuelConsumption="2020.04" /> - <Entry engineSpeed="600.00" torque="200.00" fuelConsumption="3330.71" /> - <Entry engineSpeed="600.00" torque="300.00" fuelConsumption="4651.64" /> - <Entry engineSpeed="600.00" torque="400.00" fuelConsumption="5962.41" /> - <Entry engineSpeed="600.00" torque="500.00" fuelConsumption="7979.12" /> - <Entry engineSpeed="600.00" torque="600.00" fuelConsumption="10025.12" /> - <Entry engineSpeed="800.00" torque="-154.66" fuelConsumption="0.00" /> - <Entry engineSpeed="800.00" torque="-54.66" fuelConsumption="0.00" /> - <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="914.26" /> - <Entry engineSpeed="800.00" torque="70.00" fuelConsumption="1862.24" /> - <Entry engineSpeed="800.00" torque="100.00" fuelConsumption="2367.75" /> - <Entry engineSpeed="800.00" torque="200.00" fuelConsumption="4006.79" /> - <Entry engineSpeed="800.00" torque="300.00" fuelConsumption="5667.98" /> - <Entry engineSpeed="800.00" torque="400.00" fuelConsumption="7335.35" /> - <Entry engineSpeed="800.00" torque="500.00" fuelConsumption="9511.02" /> - <Entry engineSpeed="800.00" torque="600.00" fuelConsumption="11650.65" /> - <Entry engineSpeed="800.00" torque="700.00" fuelConsumption="13773.98" /> - <Entry engineSpeed="800.00" torque="800.00" fuelConsumption="15797.43" /> - <Entry engineSpeed="800.00" torque="836.00" fuelConsumption="16529.92" /> - <Entry engineSpeed="1000.00" torque="-163.63" fuelConsumption="0.00" /> - <Entry engineSpeed="1000.00" torque="-63.63" fuelConsumption="0.00" /> - <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="1190.51" /> - <Entry engineSpeed="1000.00" torque="70.00" fuelConsumption="2123.23" /> - <Entry engineSpeed="1000.00" torque="100.00" fuelConsumption="2715.46" /> - <Entry engineSpeed="1000.00" torque="200.00" fuelConsumption="4682.86" /> - <Entry engineSpeed="1000.00" torque="300.00" fuelConsumption="6684.33" /> - <Entry engineSpeed="1000.00" torque="400.00" fuelConsumption="8708.28" /> - <Entry engineSpeed="1000.00" torque="500.00" fuelConsumption="11042.92" /> - <Entry engineSpeed="1000.00" torque="600.00" fuelConsumption="13276.18" /> - <Entry engineSpeed="1000.00" torque="700.00" fuelConsumption="15477.76" /> - <Entry engineSpeed="1000.00" torque="800.00" fuelConsumption="17682.68" /> - <Entry engineSpeed="1000.00" torque="900.00" fuelConsumption="19910.32" /> - <Entry engineSpeed="1000.00" torque="1000.00" fuelConsumption="22137.47" /> - <Entry engineSpeed="1000.00" torque="1070.00" fuelConsumption="23687.75" /> - <Entry engineSpeed="1200.00" torque="-174.94" fuelConsumption="0.00" /> - <Entry engineSpeed="1200.00" torque="-74.94" fuelConsumption="0.00" /> - <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="1466.77" /> - <Entry engineSpeed="1200.00" torque="70.00" fuelConsumption="2384.23" /> - <Entry engineSpeed="1200.00" torque="100.00" fuelConsumption="3063.16" /> - <Entry engineSpeed="1200.00" torque="200.00" fuelConsumption="5358.94" /> - <Entry engineSpeed="1200.00" torque="300.00" fuelConsumption="7700.67" /> - <Entry engineSpeed="1200.00" torque="400.00" fuelConsumption="10081.22" /> - <Entry engineSpeed="1200.00" torque="500.00" fuelConsumption="12574.82" /> - <Entry engineSpeed="1200.00" torque="600.00" fuelConsumption="14901.72" /> - <Entry engineSpeed="1200.00" torque="700.00" fuelConsumption="17181.54" /> - <Entry engineSpeed="1200.00" torque="800.00" fuelConsumption="19567.93" /> - <Entry engineSpeed="1200.00" torque="900.00" fuelConsumption="21988.50" /> - <Entry engineSpeed="1200.00" torque="1000.00" fuelConsumption="24410.55" /> - <Entry engineSpeed="1200.00" torque="1100.00" fuelConsumption="26818.12" /> - <Entry engineSpeed="1200.00" torque="1200.00" fuelConsumption="29600.85" /> - <Entry engineSpeed="1400.00" torque="-186.25" fuelConsumption="0.00" /> - <Entry engineSpeed="1400.00" torque="-86.25" fuelConsumption="0.00" /> - <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="1943.23" /> - <Entry engineSpeed="1400.00" torque="70.00" fuelConsumption="2867.47" /> - <Entry engineSpeed="1400.00" torque="100.00" fuelConsumption="3660.90" /> - <Entry engineSpeed="1400.00" torque="200.00" fuelConsumption="6305.67" /> - <Entry engineSpeed="1400.00" torque="300.00" fuelConsumption="9033.23" /> - <Entry engineSpeed="1400.00" torque="400.00" fuelConsumption="11786.02" /> - <Entry engineSpeed="1400.00" torque="500.00" fuelConsumption="14469.48" /> - <Entry engineSpeed="1400.00" torque="600.00" fuelConsumption="17183.33" /> - <Entry engineSpeed="1400.00" torque="700.00" fuelConsumption="20019.01" /> - <Entry engineSpeed="1400.00" torque="800.00" fuelConsumption="22833.01" /> - <Entry engineSpeed="1400.00" torque="900.00" fuelConsumption="25503.81" /> - <Entry engineSpeed="1400.00" torque="1000.00" fuelConsumption="28133.13" /> - <Entry engineSpeed="1400.00" torque="1100.00" fuelConsumption="30822.69" /> - <Entry engineSpeed="1400.00" torque="1200.00" fuelConsumption="33616.50" /> - <Entry engineSpeed="1600.00" torque="-197.57" fuelConsumption="0.00" /> - <Entry engineSpeed="1600.00" torque="-97.57" fuelConsumption="0.00" /> - <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="2390.68" /> - <Entry engineSpeed="1600.00" torque="70.00" fuelConsumption="3375.40" /> - <Entry engineSpeed="1600.00" torque="100.00" fuelConsumption="4270.71" /> - <Entry engineSpeed="1600.00" torque="200.00" fuelConsumption="7255.08" /> - <Entry engineSpeed="1600.00" torque="300.00" fuelConsumption="10395.25" /> - <Entry engineSpeed="1600.00" torque="400.00" fuelConsumption="13532.58" /> - <Entry engineSpeed="1600.00" torque="500.00" fuelConsumption="16706.54" /> - <Entry engineSpeed="1600.00" torque="600.00" fuelConsumption="19830.25" /> - <Entry engineSpeed="1600.00" torque="700.00" fuelConsumption="22960.50" /> - <Entry engineSpeed="1600.00" torque="800.00" fuelConsumption="26109.44" /> - <Entry engineSpeed="1600.00" torque="900.00" fuelConsumption="29158.70" /> - <Entry engineSpeed="1600.00" torque="1000.00" fuelConsumption="32050.23" /> - <Entry engineSpeed="1600.00" torque="1100.00" fuelConsumption="35223.83" /> - <Entry engineSpeed="1600.00" torque="1200.00" fuelConsumption="38415.23" /> - <Entry engineSpeed="1800.00" torque="-204.41" fuelConsumption="0.00" /> - <Entry engineSpeed="1800.00" torque="-104.41" fuelConsumption="0.00" /> - <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="2890.46" /> - <Entry engineSpeed="1800.00" torque="70.00" fuelConsumption="3985.03" /> - <Entry engineSpeed="1800.00" torque="100.00" fuelConsumption="4965.43" /> - <Entry engineSpeed="1800.00" torque="200.00" fuelConsumption="8233.42" /> - <Entry engineSpeed="1800.00" torque="300.00" fuelConsumption="11783.43" /> - <Entry engineSpeed="1800.00" torque="400.00" fuelConsumption="15307.09" /> - <Entry engineSpeed="1800.00" torque="500.00" fuelConsumption="18849.16" /> - <Entry engineSpeed="1800.00" torque="600.00" fuelConsumption="22267.47" /> - <Entry engineSpeed="1800.00" torque="700.00" fuelConsumption="25749.16" /> - <Entry engineSpeed="1800.00" torque="800.00" fuelConsumption="29389.56" /> - <Entry engineSpeed="1800.00" torque="900.00" fuelConsumption="32951.65" /> - <Entry engineSpeed="1800.00" torque="1000.00" fuelConsumption="36567.98" /> - <Entry engineSpeed="1800.00" torque="1100.00" fuelConsumption="40354.88" /> - <Entry engineSpeed="1800.00" torque="1124.00" fuelConsumption="41263.46" /> - <Entry engineSpeed="2000.00" torque="-211.73" fuelConsumption="0.00" /> - <Entry engineSpeed="2000.00" torque="-111.73" fuelConsumption="0.00" /> - <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="3496.10" /> - <Entry engineSpeed="2000.00" torque="70.00" fuelConsumption="4806.79" /> - <Entry engineSpeed="2000.00" torque="100.00" fuelConsumption="5854.51" /> - <Entry engineSpeed="2000.00" torque="200.00" fuelConsumption="9346.91" /> - <Entry engineSpeed="2000.00" torque="300.00" fuelConsumption="13318.20" /> - <Entry engineSpeed="2000.00" torque="400.00" fuelConsumption="17192.16" /> - <Entry engineSpeed="2000.00" torque="500.00" fuelConsumption="21141.10" /> - <Entry engineSpeed="2000.00" torque="600.00" fuelConsumption="25063.69" /> - <Entry engineSpeed="2000.00" torque="700.00" fuelConsumption="28933.73" /> - <Entry engineSpeed="2000.00" torque="800.00" fuelConsumption="33033.20" /> - <Entry engineSpeed="2000.00" torque="900.00" fuelConsumption="37186.49" /> - <Entry engineSpeed="2000.00" torque="1000.00" fuelConsumption="41216.66" /> - <Entry engineSpeed="2000.00" torque="1038.00" fuelConsumption="42697.63" /> - <Entry engineSpeed="2200.00" torque="-225.56" fuelConsumption="0.00" /> - <Entry engineSpeed="2200.00" torque="-125.56" fuelConsumption="0.00" /> - <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="4247.18" /> - <Entry engineSpeed="2200.00" torque="70.00" fuelConsumption="5534.02" /> - <Entry engineSpeed="2200.00" torque="100.00" fuelConsumption="6687.77" /> - <Entry engineSpeed="2200.00" torque="200.00" fuelConsumption="10533.61" /> - <Entry engineSpeed="2200.00" torque="300.00" fuelConsumption="14853.02" /> - <Entry engineSpeed="2200.00" torque="400.00" fuelConsumption="19148.40" /> - <Entry engineSpeed="2200.00" torque="500.00" fuelConsumption="23390.99" /> - <Entry engineSpeed="2200.00" torque="600.00" fuelConsumption="27829.44" /> - <Entry engineSpeed="2200.00" torque="700.00" fuelConsumption="32500.75" /> - <Entry engineSpeed="2200.00" torque="800.00" fuelConsumption="37123.63" /> - <Entry engineSpeed="2200.00" torque="900.00" fuelConsumption="41612.31" /> - <Entry engineSpeed="2200.00" torque="955.00" fuelConsumption="44050.20" /> - <Entry engineSpeed="2400.00" torque="-235.72" fuelConsumption="0.00" /> - <Entry engineSpeed="2400.00" torque="-135.72" fuelConsumption="0.00" /> - <Entry engineSpeed="2400.00" torque="0.00" fuelConsumption="4945.10" /> - <Entry engineSpeed="2400.00" torque="70.00" fuelConsumption="6234.18" /> - <Entry engineSpeed="2400.00" torque="100.00" fuelConsumption="7525.66" /> - <Entry engineSpeed="2400.00" torque="200.00" fuelConsumption="11830.60" /> - <Entry engineSpeed="2400.00" torque="300.00" fuelConsumption="16443.47" /> - <Entry engineSpeed="2400.00" torque="400.00" fuelConsumption="21308.19" /> - <Entry engineSpeed="2400.00" torque="500.00" fuelConsumption="26325.66" /> - <Entry engineSpeed="2400.00" torque="600.00" fuelConsumption="31335.42" /> - <Entry engineSpeed="2400.00" torque="700.00" fuelConsumption="36716.19" /> - <Entry engineSpeed="2400.00" torque="800.00" fuelConsumption="42106.80" /> - <Entry engineSpeed="2400.00" torque="815.00" fuelConsumption="42844.11" /> - <Entry engineSpeed="2400.00" torque="915.00" fuelConsumption="42844.11" /> - <Entry engineSpeed="2500.00" torque="-240.18" fuelConsumption="0.00" /> - <Entry engineSpeed="2500.00" torque="-140.18" fuelConsumption="0.00" /> - <Entry engineSpeed="2500.00" torque="0.00" fuelConsumption="5337.87" /> - <Entry engineSpeed="2500.00" torque="70.00" fuelConsumption="6286.76" /> - <Entry engineSpeed="2500.00" torque="100.00" fuelConsumption="7731.93" /> - <Entry engineSpeed="2500.00" torque="200.00" fuelConsumption="12386.92" /> - <Entry engineSpeed="2500.00" torque="300.00" fuelConsumption="17232.61" /> - <Entry engineSpeed="2500.00" torque="400.00" fuelConsumption="22335.99" /> - <Entry engineSpeed="2500.00" torque="500.00" fuelConsumption="27944.55" /> - <Entry engineSpeed="2500.00" torque="600.00" fuelConsumption="33199.92" /> - <Entry engineSpeed="2500.00" torque="710.00" fuelConsumption="39388.78" /> - <Entry engineSpeed="2600.00" torque="-146.13" fuelConsumption="0.00" /> - <Entry engineSpeed="2600.00" torque="0.00" fuelConsumption="5534.25" /> - </FuelConsumptionMap> - <FullLoadAndDragCurve> - <Entry engineSpeed="600.00" maxTorque="600.00" dragTorque="-43.58" /> - <Entry engineSpeed="800.00" maxTorque="836.00" dragTorque="-53.66" /> - <Entry engineSpeed="1000.00" maxTorque="1069.52" dragTorque="-62.03" /> - <Entry engineSpeed="1200.00" maxTorque="1200.00" dragTorque="-73.94" /> - <Entry engineSpeed="1400.00" maxTorque="1200.00" dragTorque="-85.25" /> - <Entry engineSpeed="1600.00" maxTorque="1200.00" dragTorque="-96.57" /> - <Entry engineSpeed="1800.00" maxTorque="1123.62" dragTorque="-103.41" /> - <Entry engineSpeed="2000.00" maxTorque="1037.52" dragTorque="-110.73" /> - <Entry engineSpeed="2200.00" maxTorque="953.95" dragTorque="-124.56" /> - <Entry engineSpeed="2400.00" maxTorque="815.35" dragTorque="-134.72" /> - <Entry engineSpeed="2500.00" maxTorque="711.29" dragTorque="-139.18" /> - <Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-145.13" /> - </FullLoadAndDragCurve> - </Data> - <Signature> - <Reference URI="#ENG-Generic220kW7.7lEngine" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Engine> - <Gearbox xsi:type="GearboxComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="GBX-APT-SGenericTqMax1200" xsi:type="v2.0:GearboxDataDeclarationType"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>APT-S Generic TqMax1200</Model> - <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> - <Date>2019-02-27T09:39:05.3400867Z</Date> - <AppVersion>VectoCore</AppVersion> - <TransmissionType>APT-S</TransmissionType> - <MainCertificationMethod>Standard values</MainCertificationMethod> - <Gears xsi:type="GearsDeclarationType"> - <Gear number="1"> - <Ratio>3.490</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00" /> - <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00" /> - <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00" /> - <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00" /> - <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00" /> - <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00" /> - <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00" /> - <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00" /> - <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00" /> - <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00" /> - <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00" /> - <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00" /> - <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00" /> - <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00" /> - <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00" /> - <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00" /> - <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00" /> - <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00" /> - <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00" /> - <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00" /> - <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00" /> - <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00" /> - <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00" /> - <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00" /> - <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00" /> - <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00" /> - <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00" /> - <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00" /> - <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00" /> - <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00" /> - <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00" /> - <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00" /> - <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00" /> - <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00" /> - <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00" /> - <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00" /> - <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00" /> - <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00" /> - <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00" /> - <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00" /> - <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00" /> - <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00" /> - <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00" /> - <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00" /> - <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00" /> - <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00" /> - <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00" /> - <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00" /> - <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00" /> - <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00" /> - <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00" /> - <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00" /> - <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00" /> - <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00" /> - <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00" /> - <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00" /> - <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00" /> - <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00" /> - <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00" /> - <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00" /> - <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00" /> - <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00" /> - </TorqueLossMap> - </Gear> - <Gear number="2"> - <Ratio>1.860</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> - </TorqueLossMap> - </Gear> - <Gear number="3"> - <Ratio>1.410</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> - </TorqueLossMap> - </Gear> - <Gear number="4"> - <Ratio>1.000</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00" /> - </TorqueLossMap> - </Gear> - <Gear number="5"> - <Ratio>0.750</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> - </TorqueLossMap> - </Gear> - <Gear number="6"> - <Ratio>0.650</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> - <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> - <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> - <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> - <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> - <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> - <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> - <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> - <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> - <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> - <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> - <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> - <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> - <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> - <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> - <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> - <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> - <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> - <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> - <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> - <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> - <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> - <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> - <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> - <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> - <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> - <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> - <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> - <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> - <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> - <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> - <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> - <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> - <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> - <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> - <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> - <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> - <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> - <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> - <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> - <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> - <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> - <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> - <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> - <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> - <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> - <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> - <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> - <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> - <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> - <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> - <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> - <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> - <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> - </TorqueLossMap> - </Gear> - </Gears> - </Data> - <Signature> - <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Gearbox> - <TorqueConverter xsi:type="TorqueConverterComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="TC-APT-SGenericTqMax1200" xsi:type="v2.0:TorqueConverterDataDeclarationType"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>APT-S Generic TqMax1200</Model> - <CertificationNumber>N/A</CertificationNumber> - <Date>2019-02-27T09:39:05.3410801Z</Date> - <AppVersion>VectoCore</AppVersion> - <CertificationMethod>Standard values</CertificationMethod> - <Characteristics> - <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79" /> - <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30" /> - <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80" /> - <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31" /> - <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82" /> - <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33" /> - <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83" /> - <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59" /> - <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35" /> - <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11" /> - <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87" /> - <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63" /> - <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40" /> - <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20" /> - <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00" /> - <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34" /> - <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34" /> - <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11" /> - <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52" /> - <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19" /> - <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77" /> - <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00" /> - <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00" /> - <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00" /> - <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00" /> - <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00" /> - <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00" /> - </Characteristics> - </Data> - <Signature> - <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </TorqueConverter> - <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <v2.0:Data id="AXLGEAR-6.500" xsi:type="v1.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>N.A.</Model> - <CertificationNumber>AXLGEAR-6.500</CertificationNumber> - <Date>2019-02-27T09:39:05.3410801Z</Date> - <AppVersion>VectoCore</AppVersion> - <LineType>Single portal axle</LineType> - <Ratio>6.500</Ratio> - <CertificationMethod>Standard values</CertificationMethod> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="0.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="0.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="0.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="0.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="0.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="0.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="0.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="0.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="0.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="0.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="0.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="0.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="0.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="0.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="0.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="0.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="0.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="0.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="0.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="0.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="0.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="0.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="0.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="0.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="0.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="0.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="0.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="0.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="0.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="0.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="0.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="0.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="0.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="0.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="325.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="325.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="325.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="325.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="325.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="325.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="325.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="325.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="325.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="325.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="325.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="325.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="325.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="325.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="325.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="325.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="325.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="325.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="325.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="325.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="325.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="325.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="325.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="325.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="325.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="325.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="325.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="325.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="325.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="325.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="325.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="325.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="325.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="325.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="325.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="650.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="650.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="650.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="650.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="650.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="650.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="650.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="650.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="650.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="650.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="650.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="650.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="650.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="650.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="650.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="650.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="650.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="650.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="650.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="650.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="650.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="650.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="650.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="650.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="650.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="650.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="650.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="650.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="650.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="650.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="650.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="650.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="650.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="650.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="650.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="975.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="975.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="975.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="975.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="975.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="975.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="975.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="975.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="975.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="975.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="975.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="975.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="975.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="975.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="975.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="975.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="975.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="975.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="975.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="975.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="975.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="975.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="975.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="975.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="975.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="975.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="975.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="975.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="975.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="975.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="975.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="975.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="975.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="975.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="975.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1300.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1300.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1300.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1300.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1300.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1300.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1300.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1300.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1300.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1300.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1300.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1300.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1300.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1300.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1300.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1300.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1300.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1300.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1300.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1300.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1300.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1300.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1300.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1300.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1300.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1300.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1300.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1300.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1300.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1300.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1300.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1300.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1300.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1300.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1300.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1625.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1625.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1625.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1625.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1625.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1625.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1625.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1625.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1625.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1625.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1625.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1625.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1625.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1625.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1625.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1625.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1625.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1625.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1625.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1625.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1625.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1625.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1625.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1625.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1625.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1625.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1625.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1625.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1625.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1625.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1625.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1625.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1625.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1625.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1625.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1950.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1950.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1950.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1950.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1950.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1950.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1950.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1950.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1950.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1950.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1950.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1950.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1950.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1950.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1950.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1950.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1950.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1950.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1950.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1950.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1950.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1950.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1950.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1950.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1950.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1950.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1950.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1950.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1950.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1950.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1950.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1950.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1950.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1950.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1950.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2275.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2275.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2275.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2275.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2275.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2275.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2275.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2275.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2275.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2275.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2275.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2275.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2275.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2275.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2275.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2275.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2275.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2275.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2275.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2275.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2275.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2275.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2275.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2275.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2275.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2275.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2275.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2275.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2275.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2275.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2275.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2275.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2275.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2275.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2275.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2600.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2600.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2600.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2600.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2600.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2600.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2600.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2600.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2600.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2600.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2600.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2600.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2600.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2600.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2600.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2600.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2600.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2600.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2600.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2600.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2600.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2600.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2600.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2600.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2600.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2600.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2600.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2600.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2600.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2600.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2600.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2600.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2600.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2600.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2600.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2925.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2925.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2925.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2925.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2925.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2925.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2925.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2925.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2925.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2925.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2925.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2925.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2925.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2925.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2925.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2925.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2925.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2925.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2925.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2925.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2925.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2925.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2925.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2925.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2925.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2925.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2925.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2925.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2925.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2925.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2925.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2925.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2925.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2925.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2925.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="3250.00" inputTorque="31.96" torqueLoss="31.96" /> - <Entry inputSpeed="3250.00" inputTorque="70.42" torqueLoss="31.96" /> - <Entry inputSpeed="3250.00" inputTorque="110.07" torqueLoss="33.15" /> - <Entry inputSpeed="3250.00" inputTorque="149.72" torqueLoss="34.34" /> - <Entry inputSpeed="3250.00" inputTorque="189.37" torqueLoss="35.53" /> - <Entry inputSpeed="3250.00" inputTorque="268.68" torqueLoss="37.91" /> - <Entry inputSpeed="3250.00" inputTorque="347.98" torqueLoss="40.29" /> - <Entry inputSpeed="3250.00" inputTorque="506.58" torqueLoss="45.04" /> - <Entry inputSpeed="3250.00" inputTorque="665.19" torqueLoss="49.80" /> - <Entry inputSpeed="3250.00" inputTorque="823.79" torqueLoss="54.56" /> - <Entry inputSpeed="3250.00" inputTorque="982.39" torqueLoss="59.32" /> - <Entry inputSpeed="3250.00" inputTorque="1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="3250.00" inputTorque="1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="3250.00" inputTorque="1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="3250.00" inputTorque="1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="3250.00" inputTorque="1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="3250.00" inputTorque="2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="3250.00" inputTorque="2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="3250.00" inputTorque="2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="3250.00" inputTorque="3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="3250.00" inputTorque="3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="3250.00" inputTorque="3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="3250.00" inputTorque="4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="3250.00" inputTorque="4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="3250.00" inputTorque="4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="3250.00" inputTorque="5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="3250.00" inputTorque="5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="3250.00" inputTorque="5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="3250.00" inputTorque="6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="3250.00" inputTorque="6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="3250.00" inputTorque="6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="3250.00" inputTorque="7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="3250.00" inputTorque="7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="3250.00" inputTorque="7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="3250.00" inputTorque="7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="0.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="0.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="0.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="0.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="0.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="0.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="0.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="0.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="0.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="0.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="0.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="0.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="0.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="0.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="0.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="0.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="0.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="0.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="0.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="0.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="0.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="0.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="0.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="0.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="0.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="0.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="0.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="0.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="0.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="0.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="0.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="0.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="0.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="0.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="0.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="325.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="325.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="325.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="325.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="325.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="325.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="325.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="325.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="325.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="325.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="325.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="325.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="325.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="325.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="325.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="325.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="325.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="325.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="325.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="325.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="325.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="325.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="325.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="325.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="325.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="325.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="325.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="325.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="325.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="325.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="325.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="325.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="325.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="325.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="325.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="650.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="650.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="650.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="650.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="650.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="650.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="650.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="650.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="650.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="650.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="650.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="650.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="650.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="650.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="650.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="650.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="650.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="650.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="650.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="650.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="650.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="650.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="650.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="650.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="650.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="650.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="650.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="650.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="650.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="650.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="650.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="650.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="650.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="650.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="650.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="975.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="975.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="975.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="975.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="975.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="975.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="975.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="975.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="975.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="975.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="975.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="975.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="975.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="975.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="975.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="975.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="975.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="975.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="975.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="975.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="975.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="975.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="975.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="975.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="975.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="975.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="975.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="975.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="975.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="975.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="975.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="975.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="975.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="975.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="975.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1300.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1300.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1300.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1300.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1300.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1300.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1300.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1300.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1300.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1300.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1300.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1300.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1300.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1300.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1300.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1300.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1300.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1300.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1300.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1300.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1300.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1300.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1300.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1300.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1300.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1300.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1300.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1300.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1300.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1300.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1300.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1300.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1300.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1300.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1300.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1625.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1625.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1625.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1625.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1625.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1625.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1625.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1625.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1625.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1625.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1625.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1625.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1625.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1625.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1625.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1625.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1625.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1625.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1625.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1625.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1625.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1625.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1625.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1625.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1625.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1625.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1625.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1625.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1625.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1625.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1625.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1625.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1625.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1625.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1625.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="1950.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="1950.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="1950.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="1950.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="1950.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="1950.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="1950.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="1950.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="1950.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="1950.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="1950.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="1950.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="1950.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="1950.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="1950.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="1950.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="1950.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="1950.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="1950.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="1950.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="1950.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="1950.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="1950.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="1950.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="1950.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="1950.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="1950.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="1950.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="1950.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="1950.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="1950.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="1950.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="1950.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="1950.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="1950.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2275.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2275.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2275.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2275.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2275.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2275.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2275.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2275.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2275.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2275.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2275.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2275.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2275.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2275.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2275.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2275.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2275.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2275.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2275.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2275.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2275.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2275.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2275.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2275.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2275.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2275.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2275.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2275.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2275.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2275.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2275.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2275.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2275.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2275.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2275.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2600.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2600.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2600.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2600.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2600.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2600.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2600.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2600.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2600.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2600.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2600.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2600.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2600.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2600.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2600.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2600.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2600.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2600.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2600.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2600.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2600.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2600.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2600.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2600.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2600.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2600.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2600.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2600.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2600.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2600.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2600.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2600.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2600.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2600.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2600.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="2925.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="2925.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="2925.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="2925.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="2925.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="2925.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="2925.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="2925.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="2925.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="2925.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="2925.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="2925.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="2925.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="2925.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="2925.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="2925.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="2925.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="2925.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="2925.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="2925.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="2925.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="2925.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="2925.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="2925.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="2925.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="2925.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="2925.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="2925.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="2925.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="2925.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="2925.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="2925.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="2925.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="2925.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="2925.00" inputTorque="-7960.98" torqueLoss="268.68" /> - <Entry inputSpeed="3250.00" inputTorque="-31.96" torqueLoss="31.96" /> - <Entry inputSpeed="3250.00" inputTorque="-70.42" torqueLoss="31.96" /> - <Entry inputSpeed="3250.00" inputTorque="-110.07" torqueLoss="33.15" /> - <Entry inputSpeed="3250.00" inputTorque="-149.72" torqueLoss="34.34" /> - <Entry inputSpeed="3250.00" inputTorque="-189.37" torqueLoss="35.53" /> - <Entry inputSpeed="3250.00" inputTorque="-268.68" torqueLoss="37.91" /> - <Entry inputSpeed="3250.00" inputTorque="-347.98" torqueLoss="40.29" /> - <Entry inputSpeed="3250.00" inputTorque="-506.58" torqueLoss="45.04" /> - <Entry inputSpeed="3250.00" inputTorque="-665.19" torqueLoss="49.80" /> - <Entry inputSpeed="3250.00" inputTorque="-823.79" torqueLoss="54.56" /> - <Entry inputSpeed="3250.00" inputTorque="-982.39" torqueLoss="59.32" /> - <Entry inputSpeed="3250.00" inputTorque="-1141.00" torqueLoss="64.08" /> - <Entry inputSpeed="3250.00" inputTorque="-1299.60" torqueLoss="68.83" /> - <Entry inputSpeed="3250.00" inputTorque="-1458.21" torqueLoss="73.59" /> - <Entry inputSpeed="3250.00" inputTorque="-1616.81" torqueLoss="78.35" /> - <Entry inputSpeed="3250.00" inputTorque="-1934.02" torqueLoss="87.87" /> - <Entry inputSpeed="3250.00" inputTorque="-2251.23" torqueLoss="97.38" /> - <Entry inputSpeed="3250.00" inputTorque="-2568.44" torqueLoss="106.90" /> - <Entry inputSpeed="3250.00" inputTorque="-2885.65" torqueLoss="116.42" /> - <Entry inputSpeed="3250.00" inputTorque="-3202.85" torqueLoss="125.93" /> - <Entry inputSpeed="3250.00" inputTorque="-3520.06" torqueLoss="135.45" /> - <Entry inputSpeed="3250.00" inputTorque="-3837.27" torqueLoss="144.96" /> - <Entry inputSpeed="3250.00" inputTorque="-4154.48" torqueLoss="154.48" /> - <Entry inputSpeed="3250.00" inputTorque="-4471.69" torqueLoss="164.00" /> - <Entry inputSpeed="3250.00" inputTorque="-4788.90" torqueLoss="173.51" /> - <Entry inputSpeed="3250.00" inputTorque="-5106.11" torqueLoss="183.03" /> - <Entry inputSpeed="3250.00" inputTorque="-5423.31" torqueLoss="192.55" /> - <Entry inputSpeed="3250.00" inputTorque="-5740.52" torqueLoss="202.06" /> - <Entry inputSpeed="3250.00" inputTorque="-6057.73" torqueLoss="211.58" /> - <Entry inputSpeed="3250.00" inputTorque="-6374.94" torqueLoss="221.09" /> - <Entry inputSpeed="3250.00" inputTorque="-6692.15" torqueLoss="230.61" /> - <Entry inputSpeed="3250.00" inputTorque="-7009.36" torqueLoss="240.13" /> - <Entry inputSpeed="3250.00" inputTorque="-7326.57" torqueLoss="249.64" /> - <Entry inputSpeed="3250.00" inputTorque="-7643.77" torqueLoss="259.16" /> - <Entry inputSpeed="3250.00" inputTorque="-7960.98" torqueLoss="268.68" /> - </TorqueLossMap> - </v2.0:Data> - <Signature> - <Reference URI="#AXLGEAR-6.500" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Axlegear> - <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> - <Axles> - <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</TwinTyres> - <Steered>true</Steered> - <Tyre> - <Data id="TYRE-315_70R22.5" xsi:type="v2.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2019-02-27T09:39:05.3510849Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>315/70 R22.5</Dimension> - <RRCDeclared>0.0055</RRCDeclared> - <FzISO>33350</FzISO> - </Data> - <Signature> - <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Tyre> - </Axle> - <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleDriven</AxleType> - <TwinTyres>true</TwinTyres> - <Steered>false</Steered> - <Tyre> - <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2019-02-27T09:39:05.3510849Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>315/70 R22.5</Dimension> - <RRCDeclared>0.0055</RRCDeclared> - <FzISO>33350</FzISO> - </v2.0:Data> - <Signature> - <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Tyre> - </Axle> - <Axle axleNumber="3" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</TwinTyres> - <Steered>false</Steered> - <Tyre> - <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2019-02-27T09:39:05.3510849Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>315/70 R22.5</Dimension> - <RRCDeclared>0.0055</RRCDeclared> - <FzISO>33350</FzISO> - </v2.0:Data> - <Signature> - <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </Tyre> - </Axle> - </Axles> - </Data> - </AxleWheels> - <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> - <Fan> - <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> - </Fan> - <SteeringPump> - <Technology>Fixed displacement</Technology> - </SteeringPump> - <ElectricSystem> - <Technology>Standard technology</Technology> - </ElectricSystem> - <PneumaticSystem> - <Technology>Medium Supply 2-stage + ESS + AMS</Technology> - </PneumaticSystem> - <HVAC> - <Technology>Default</Technology> - </HVAC> - </Data> - </Auxiliaries> - <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-N.A." xsi:type="AirDragDataDeclarationType"> - <Manufacturer>TUG Generic</Manufacturer> - <Model>N.A.</Model> - <CertificationNumber>N.A.</CertificationNumber> - <Date>2019-02-27T09:39:05.3510849Z</Date> - <AppVersion>VectoCore</AppVersion> - <CdxA_0>5.80</CdxA_0> - <TransferredCdxA>5.80</TransferredCdxA> - <DeclaredCdxA>5.80</DeclaredCdxA> - </Data> - <Signature> - <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> - <DigestValue></DigestValue> - </Reference> - </Signature> - </AirDrag> - </Components> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file + <!--<APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch>--> + </ADAS> + <Components xsi:type="v2.0:VehicleComponentsType"> + <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> + <Data id="ENG-Generic220kW7.7lEngine" xsi:type="EngineDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>Generic 220kW 7.7l Engine</Model> + <CertificationNumber>ENG-Generic 220kW 7.7l Engine</CertificationNumber> + <Date>2019-02-27T09:39:05.3241256Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>7700</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>219774</RatedPower> + <MaxEngineTorque>1200</MaxEngineTorque> + <WHTCUrban>1.0300</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-144.58" fuelConsumption="0.00"/> + <Entry engineSpeed="600.00" torque="-44.58" fuelConsumption="0.00"/> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="638.00"/> + <Entry engineSpeed="600.00" torque="70.00" fuelConsumption="1601.24"/> + <Entry engineSpeed="600.00" torque="100.00" fuelConsumption="2020.04"/> + <Entry engineSpeed="600.00" torque="200.00" fuelConsumption="3330.71"/> + <Entry engineSpeed="600.00" torque="300.00" fuelConsumption="4651.64"/> + <Entry engineSpeed="600.00" torque="400.00" fuelConsumption="5962.41"/> + <Entry engineSpeed="600.00" torque="500.00" fuelConsumption="7979.12"/> + <Entry engineSpeed="600.00" torque="600.00" fuelConsumption="10025.12"/> + <Entry engineSpeed="800.00" torque="-154.66" fuelConsumption="0.00"/> + <Entry engineSpeed="800.00" torque="-54.66" fuelConsumption="0.00"/> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="914.26"/> + <Entry engineSpeed="800.00" torque="70.00" fuelConsumption="1862.24"/> + <Entry engineSpeed="800.00" torque="100.00" fuelConsumption="2367.75"/> + <Entry engineSpeed="800.00" torque="200.00" fuelConsumption="4006.79"/> + <Entry engineSpeed="800.00" torque="300.00" fuelConsumption="5667.98"/> + <Entry engineSpeed="800.00" torque="400.00" fuelConsumption="7335.35"/> + <Entry engineSpeed="800.00" torque="500.00" fuelConsumption="9511.02"/> + <Entry engineSpeed="800.00" torque="600.00" fuelConsumption="11650.65"/> + <Entry engineSpeed="800.00" torque="700.00" fuelConsumption="13773.98"/> + <Entry engineSpeed="800.00" torque="800.00" fuelConsumption="15797.43"/> + <Entry engineSpeed="800.00" torque="836.00" fuelConsumption="16529.92"/> + <Entry engineSpeed="1000.00" torque="-163.63" fuelConsumption="0.00"/> + <Entry engineSpeed="1000.00" torque="-63.63" fuelConsumption="0.00"/> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="1190.51"/> + <Entry engineSpeed="1000.00" torque="70.00" fuelConsumption="2123.23"/> + <Entry engineSpeed="1000.00" torque="100.00" fuelConsumption="2715.46"/> + <Entry engineSpeed="1000.00" torque="200.00" fuelConsumption="4682.86"/> + <Entry engineSpeed="1000.00" torque="300.00" fuelConsumption="6684.33"/> + <Entry engineSpeed="1000.00" torque="400.00" fuelConsumption="8708.28"/> + <Entry engineSpeed="1000.00" torque="500.00" fuelConsumption="11042.92"/> + <Entry engineSpeed="1000.00" torque="600.00" fuelConsumption="13276.18"/> + <Entry engineSpeed="1000.00" torque="700.00" fuelConsumption="15477.76"/> + <Entry engineSpeed="1000.00" torque="800.00" fuelConsumption="17682.68"/> + <Entry engineSpeed="1000.00" torque="900.00" fuelConsumption="19910.32"/> + <Entry engineSpeed="1000.00" torque="1000.00" fuelConsumption="22137.47"/> + <Entry engineSpeed="1000.00" torque="1070.00" fuelConsumption="23687.75"/> + <Entry engineSpeed="1200.00" torque="-174.94" fuelConsumption="0.00"/> + <Entry engineSpeed="1200.00" torque="-74.94" fuelConsumption="0.00"/> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="1466.77"/> + <Entry engineSpeed="1200.00" torque="70.00" fuelConsumption="2384.23"/> + <Entry engineSpeed="1200.00" torque="100.00" fuelConsumption="3063.16"/> + <Entry engineSpeed="1200.00" torque="200.00" fuelConsumption="5358.94"/> + <Entry engineSpeed="1200.00" torque="300.00" fuelConsumption="7700.67"/> + <Entry engineSpeed="1200.00" torque="400.00" fuelConsumption="10081.22"/> + <Entry engineSpeed="1200.00" torque="500.00" fuelConsumption="12574.82"/> + <Entry engineSpeed="1200.00" torque="600.00" fuelConsumption="14901.72"/> + <Entry engineSpeed="1200.00" torque="700.00" fuelConsumption="17181.54"/> + <Entry engineSpeed="1200.00" torque="800.00" fuelConsumption="19567.93"/> + <Entry engineSpeed="1200.00" torque="900.00" fuelConsumption="21988.50"/> + <Entry engineSpeed="1200.00" torque="1000.00" fuelConsumption="24410.55"/> + <Entry engineSpeed="1200.00" torque="1100.00" fuelConsumption="26818.12"/> + <Entry engineSpeed="1200.00" torque="1200.00" fuelConsumption="29600.85"/> + <Entry engineSpeed="1400.00" torque="-186.25" fuelConsumption="0.00"/> + <Entry engineSpeed="1400.00" torque="-86.25" fuelConsumption="0.00"/> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="1943.23"/> + <Entry engineSpeed="1400.00" torque="70.00" fuelConsumption="2867.47"/> + <Entry engineSpeed="1400.00" torque="100.00" fuelConsumption="3660.90"/> + <Entry engineSpeed="1400.00" torque="200.00" fuelConsumption="6305.67"/> + <Entry engineSpeed="1400.00" torque="300.00" fuelConsumption="9033.23"/> + <Entry engineSpeed="1400.00" torque="400.00" fuelConsumption="11786.02"/> + <Entry engineSpeed="1400.00" torque="500.00" fuelConsumption="14469.48"/> + <Entry engineSpeed="1400.00" torque="600.00" fuelConsumption="17183.33"/> + <Entry engineSpeed="1400.00" torque="700.00" fuelConsumption="20019.01"/> + <Entry engineSpeed="1400.00" torque="800.00" fuelConsumption="22833.01"/> + <Entry engineSpeed="1400.00" torque="900.00" fuelConsumption="25503.81"/> + <Entry engineSpeed="1400.00" torque="1000.00" fuelConsumption="28133.13"/> + <Entry engineSpeed="1400.00" torque="1100.00" fuelConsumption="30822.69"/> + <Entry engineSpeed="1400.00" torque="1200.00" fuelConsumption="33616.50"/> + <Entry engineSpeed="1600.00" torque="-197.57" fuelConsumption="0.00"/> + <Entry engineSpeed="1600.00" torque="-97.57" fuelConsumption="0.00"/> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="2390.68"/> + <Entry engineSpeed="1600.00" torque="70.00" fuelConsumption="3375.40"/> + <Entry engineSpeed="1600.00" torque="100.00" fuelConsumption="4270.71"/> + <Entry engineSpeed="1600.00" torque="200.00" fuelConsumption="7255.08"/> + <Entry engineSpeed="1600.00" torque="300.00" fuelConsumption="10395.25"/> + <Entry engineSpeed="1600.00" torque="400.00" fuelConsumption="13532.58"/> + <Entry engineSpeed="1600.00" torque="500.00" fuelConsumption="16706.54"/> + <Entry engineSpeed="1600.00" torque="600.00" fuelConsumption="19830.25"/> + <Entry engineSpeed="1600.00" torque="700.00" fuelConsumption="22960.50"/> + <Entry engineSpeed="1600.00" torque="800.00" fuelConsumption="26109.44"/> + <Entry engineSpeed="1600.00" torque="900.00" fuelConsumption="29158.70"/> + <Entry engineSpeed="1600.00" torque="1000.00" fuelConsumption="32050.23"/> + <Entry engineSpeed="1600.00" torque="1100.00" fuelConsumption="35223.83"/> + <Entry engineSpeed="1600.00" torque="1200.00" fuelConsumption="38415.23"/> + <Entry engineSpeed="1800.00" torque="-204.41" fuelConsumption="0.00"/> + <Entry engineSpeed="1800.00" torque="-104.41" fuelConsumption="0.00"/> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="2890.46"/> + <Entry engineSpeed="1800.00" torque="70.00" fuelConsumption="3985.03"/> + <Entry engineSpeed="1800.00" torque="100.00" fuelConsumption="4965.43"/> + <Entry engineSpeed="1800.00" torque="200.00" fuelConsumption="8233.42"/> + <Entry engineSpeed="1800.00" torque="300.00" fuelConsumption="11783.43"/> + <Entry engineSpeed="1800.00" torque="400.00" fuelConsumption="15307.09"/> + <Entry engineSpeed="1800.00" torque="500.00" fuelConsumption="18849.16"/> + <Entry engineSpeed="1800.00" torque="600.00" fuelConsumption="22267.47"/> + <Entry engineSpeed="1800.00" torque="700.00" fuelConsumption="25749.16"/> + <Entry engineSpeed="1800.00" torque="800.00" fuelConsumption="29389.56"/> + <Entry engineSpeed="1800.00" torque="900.00" fuelConsumption="32951.65"/> + <Entry engineSpeed="1800.00" torque="1000.00" fuelConsumption="36567.98"/> + <Entry engineSpeed="1800.00" torque="1100.00" fuelConsumption="40354.88"/> + <Entry engineSpeed="1800.00" torque="1124.00" fuelConsumption="41263.46"/> + <Entry engineSpeed="2000.00" torque="-211.73" fuelConsumption="0.00"/> + <Entry engineSpeed="2000.00" torque="-111.73" fuelConsumption="0.00"/> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="3496.10"/> + <Entry engineSpeed="2000.00" torque="70.00" fuelConsumption="4806.79"/> + <Entry engineSpeed="2000.00" torque="100.00" fuelConsumption="5854.51"/> + <Entry engineSpeed="2000.00" torque="200.00" fuelConsumption="9346.91"/> + <Entry engineSpeed="2000.00" torque="300.00" fuelConsumption="13318.20"/> + <Entry engineSpeed="2000.00" torque="400.00" fuelConsumption="17192.16"/> + <Entry engineSpeed="2000.00" torque="500.00" fuelConsumption="21141.10"/> + <Entry engineSpeed="2000.00" torque="600.00" fuelConsumption="25063.69"/> + <Entry engineSpeed="2000.00" torque="700.00" fuelConsumption="28933.73"/> + <Entry engineSpeed="2000.00" torque="800.00" fuelConsumption="33033.20"/> + <Entry engineSpeed="2000.00" torque="900.00" fuelConsumption="37186.49"/> + <Entry engineSpeed="2000.00" torque="1000.00" fuelConsumption="41216.66"/> + <Entry engineSpeed="2000.00" torque="1038.00" fuelConsumption="42697.63"/> + <Entry engineSpeed="2200.00" torque="-225.56" fuelConsumption="0.00"/> + <Entry engineSpeed="2200.00" torque="-125.56" fuelConsumption="0.00"/> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="4247.18"/> + <Entry engineSpeed="2200.00" torque="70.00" fuelConsumption="5534.02"/> + <Entry engineSpeed="2200.00" torque="100.00" fuelConsumption="6687.77"/> + <Entry engineSpeed="2200.00" torque="200.00" fuelConsumption="10533.61"/> + <Entry engineSpeed="2200.00" torque="300.00" fuelConsumption="14853.02"/> + <Entry engineSpeed="2200.00" torque="400.00" fuelConsumption="19148.40"/> + <Entry engineSpeed="2200.00" torque="500.00" fuelConsumption="23390.99"/> + <Entry engineSpeed="2200.00" torque="600.00" fuelConsumption="27829.44"/> + <Entry engineSpeed="2200.00" torque="700.00" fuelConsumption="32500.75"/> + <Entry engineSpeed="2200.00" torque="800.00" fuelConsumption="37123.63"/> + <Entry engineSpeed="2200.00" torque="900.00" fuelConsumption="41612.31"/> + <Entry engineSpeed="2200.00" torque="955.00" fuelConsumption="44050.20"/> + <Entry engineSpeed="2400.00" torque="-235.72" fuelConsumption="0.00"/> + <Entry engineSpeed="2400.00" torque="-135.72" fuelConsumption="0.00"/> + <Entry engineSpeed="2400.00" torque="0.00" fuelConsumption="4945.10"/> + <Entry engineSpeed="2400.00" torque="70.00" fuelConsumption="6234.18"/> + <Entry engineSpeed="2400.00" torque="100.00" fuelConsumption="7525.66"/> + <Entry engineSpeed="2400.00" torque="200.00" fuelConsumption="11830.60"/> + <Entry engineSpeed="2400.00" torque="300.00" fuelConsumption="16443.47"/> + <Entry engineSpeed="2400.00" torque="400.00" fuelConsumption="21308.19"/> + <Entry engineSpeed="2400.00" torque="500.00" fuelConsumption="26325.66"/> + <Entry engineSpeed="2400.00" torque="600.00" fuelConsumption="31335.42"/> + <Entry engineSpeed="2400.00" torque="700.00" fuelConsumption="36716.19"/> + <Entry engineSpeed="2400.00" torque="800.00" fuelConsumption="42106.80"/> + <Entry engineSpeed="2400.00" torque="815.00" fuelConsumption="42844.11"/> + <Entry engineSpeed="2400.00" torque="915.00" fuelConsumption="42844.11"/> + <Entry engineSpeed="2500.00" torque="-240.18" fuelConsumption="0.00"/> + <Entry engineSpeed="2500.00" torque="-140.18" fuelConsumption="0.00"/> + <Entry engineSpeed="2500.00" torque="0.00" fuelConsumption="5337.87"/> + <Entry engineSpeed="2500.00" torque="70.00" fuelConsumption="6286.76"/> + <Entry engineSpeed="2500.00" torque="100.00" fuelConsumption="7731.93"/> + <Entry engineSpeed="2500.00" torque="200.00" fuelConsumption="12386.92"/> + <Entry engineSpeed="2500.00" torque="300.00" fuelConsumption="17232.61"/> + <Entry engineSpeed="2500.00" torque="400.00" fuelConsumption="22335.99"/> + <Entry engineSpeed="2500.00" torque="500.00" fuelConsumption="27944.55"/> + <Entry engineSpeed="2500.00" torque="600.00" fuelConsumption="33199.92"/> + <Entry engineSpeed="2500.00" torque="710.00" fuelConsumption="39388.78"/> + <Entry engineSpeed="2600.00" torque="-146.13" fuelConsumption="0.00"/> + <Entry engineSpeed="2600.00" torque="0.00" fuelConsumption="5534.25"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="600.00" dragTorque="-43.58"/> + <Entry engineSpeed="800.00" maxTorque="836.00" dragTorque="-53.66"/> + <Entry engineSpeed="1000.00" maxTorque="1069.52" dragTorque="-62.03"/> + <Entry engineSpeed="1200.00" maxTorque="1200.00" dragTorque="-73.94"/> + <Entry engineSpeed="1400.00" maxTorque="1200.00" dragTorque="-85.25"/> + <Entry engineSpeed="1600.00" maxTorque="1200.00" dragTorque="-96.57"/> + <Entry engineSpeed="1800.00" maxTorque="1123.62" dragTorque="-103.41"/> + <Entry engineSpeed="2000.00" maxTorque="1037.52" dragTorque="-110.73"/> + <Entry engineSpeed="2200.00" maxTorque="953.95" dragTorque="-124.56"/> + <Entry engineSpeed="2400.00" maxTorque="815.35" dragTorque="-134.72"/> + <Entry engineSpeed="2500.00" maxTorque="711.29" dragTorque="-139.18"/> + <Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-145.13"/> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-Generic220kW7.7lEngine" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Engine> + <Gearbox xsi:type="GearboxComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="GBX-APT-SGenericTqMax1200" xsi:type="v2.0:GearboxDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> + <Date>2019-02-27T09:39:05.3400867Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>3.490</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00"/> + <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00"/> + <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00"/> + <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00"/> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00"/> + <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00"/> + <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00"/> + <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00"/> + <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00"/> + <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00"/> + <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00"/> + <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00"/> + <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00"/> + <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00"/> + <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00"/> + <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00"/> + <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00"/> + <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00"/> + <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00"/> + <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00"/> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00"/> + <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00"/> + <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00"/> + <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00"/> + <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00"/> + <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00"/> + <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00"/> + <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00"/> + <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00"/> + <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00"/> + <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00"/> + <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00"/> + <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00"/> + <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00"/> + <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00"/> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00"/> + <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00"/> + <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00"/> + <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00"/> + <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00"/> + <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00"/> + <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00"/> + <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00"/> + <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00"/> + <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00"/> + <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00"/> + <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00"/> + <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00"/> + <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00"/> + <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00"/> + <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00"/> + <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00"/> + <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00"/> + <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00"/> + <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00"/> + <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00"/> + <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00"/> + <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00"/> + <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00"/> + <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00"/> + <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00"/> + <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00"/> + <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.860</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.410</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00"/> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.750</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Gearbox> + <TorqueConverter xsi:type="TorqueConverterComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="TC-APT-SGenericTqMax1200" xsi:type="v2.0:TorqueConverterDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79"/> + <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30"/> + <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80"/> + <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31"/> + <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82"/> + <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33"/> + <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83"/> + <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59"/> + <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35"/> + <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11"/> + <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87"/> + <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63"/> + <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40"/> + <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20"/> + <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00"/> + <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34"/> + <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34"/> + <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11"/> + <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52"/> + <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19"/> + <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77"/> + <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00"/> + <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00"/> + <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00"/> + <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00"/> + <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00"/> + <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00"/> + </Characteristics> + </Data> + <Signature> + <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </TorqueConverter> + <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> + <v2.0:Data id="AXLGEAR-6.500" xsi:type="v1.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-6.500</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>6.500</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="0.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="0.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="0.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="0.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="0.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="0.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="0.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="0.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="0.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="0.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="0.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="0.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="0.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="0.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="0.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="0.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="0.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="0.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="0.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="0.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="0.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="0.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="0.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="0.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="0.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="0.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="0.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="0.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="0.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="0.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="0.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="0.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="325.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="325.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="325.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="325.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="325.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="325.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="325.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="325.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="325.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="325.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="325.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="325.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="325.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="325.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="325.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="325.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="325.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="325.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="325.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="325.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="325.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="325.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="325.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="325.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="325.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="325.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="325.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="325.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="325.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="325.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="325.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="325.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="325.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="650.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="650.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="650.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="650.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="650.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="650.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="650.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="650.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="650.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="650.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="650.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="650.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="650.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="650.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="650.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="650.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="650.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="650.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="650.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="650.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="650.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="650.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="650.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="650.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="650.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="650.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="650.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="650.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="650.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="650.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="650.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="650.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="650.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="975.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="975.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="975.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="975.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="975.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="975.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="975.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="975.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="975.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="975.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="975.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="975.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="975.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="975.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="975.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="975.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="975.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="975.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="975.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="975.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="975.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="975.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="975.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="975.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="975.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="975.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="975.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="975.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="975.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="975.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="975.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="975.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="975.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1300.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1300.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1300.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1300.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1300.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1300.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1300.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1300.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1300.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1300.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1300.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1300.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1300.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1300.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1300.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1300.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1300.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1300.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1300.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1300.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1300.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1300.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1300.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1300.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1300.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1300.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1300.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1300.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1300.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1300.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1300.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1300.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1300.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1625.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1625.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1625.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1625.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1625.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1625.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1625.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1625.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1625.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1625.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1625.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1625.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1625.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1625.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1625.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1625.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1625.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1625.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1625.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1625.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1625.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1625.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1625.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1625.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1625.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1625.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1625.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1625.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1625.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1625.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1625.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1625.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1625.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1950.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1950.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1950.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1950.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1950.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1950.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1950.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1950.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1950.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1950.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1950.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1950.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1950.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1950.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1950.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1950.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1950.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1950.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1950.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1950.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1950.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1950.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1950.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1950.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1950.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1950.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1950.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1950.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1950.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1950.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1950.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1950.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1950.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2275.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2275.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2275.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2275.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2275.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2275.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2275.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2275.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2275.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2275.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2275.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2275.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2275.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2275.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2275.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2275.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2275.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2275.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2275.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2275.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2275.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2275.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2275.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2275.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2275.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2275.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2275.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2275.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2275.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2275.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2275.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2275.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2275.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2600.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2600.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2600.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2600.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2600.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2600.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2600.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2600.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2600.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2600.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2600.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2600.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2600.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2600.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2600.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2600.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2600.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2600.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2600.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2600.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2600.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2600.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2600.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2600.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2600.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2600.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2600.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2600.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2600.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2600.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2600.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2600.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2600.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2925.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2925.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2925.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2925.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2925.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2925.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2925.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2925.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2925.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2925.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2925.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2925.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2925.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2925.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2925.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2925.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2925.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2925.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2925.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2925.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2925.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2925.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2925.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2925.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2925.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2925.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2925.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2925.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2925.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2925.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2925.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2925.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2925.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="3250.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="3250.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="3250.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="3250.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="3250.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="3250.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="3250.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="3250.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="3250.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="3250.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="3250.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="3250.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="3250.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="3250.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="3250.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="3250.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="3250.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="3250.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="3250.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="3250.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="3250.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="3250.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="3250.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="3250.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="3250.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="3250.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="3250.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="3250.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="3250.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="3250.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="3250.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="3250.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="3250.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="0.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="0.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="0.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="0.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="0.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="0.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="0.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="0.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="0.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="0.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="0.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="0.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="0.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="0.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="0.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="0.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="0.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="0.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="0.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="0.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="0.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="0.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="0.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="0.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="0.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="0.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="0.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="0.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="0.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="0.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="0.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="0.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="0.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="325.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="325.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="325.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="325.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="325.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="325.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="325.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="325.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="325.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="325.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="325.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="325.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="325.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="325.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="325.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="325.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="325.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="325.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="325.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="325.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="325.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="325.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="325.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="325.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="325.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="325.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="325.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="325.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="325.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="325.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="325.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="325.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="325.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="650.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="650.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="650.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="650.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="650.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="650.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="650.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="650.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="650.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="650.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="650.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="650.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="650.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="650.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="650.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="650.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="650.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="650.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="650.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="650.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="650.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="650.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="650.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="650.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="650.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="650.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="650.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="650.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="650.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="650.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="650.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="650.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="650.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="975.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="975.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="975.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="975.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="975.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="975.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="975.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="975.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="975.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="975.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="975.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="975.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="975.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="975.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="975.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="975.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="975.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="975.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="975.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="975.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="975.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="975.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="975.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="975.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="975.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="975.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="975.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="975.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="975.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="975.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="975.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="975.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="975.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1300.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1300.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1300.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1300.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1300.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1300.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1300.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1300.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1300.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1300.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1300.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1300.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1300.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1300.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1300.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1300.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1300.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1300.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1300.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1300.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1300.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1300.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1300.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1300.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1300.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1300.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1300.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1300.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1300.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1300.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1300.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1300.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1300.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1625.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1625.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1625.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1625.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1625.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1625.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1625.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1625.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1625.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1625.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1625.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1625.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1625.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1625.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1625.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1625.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1625.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1625.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1625.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1625.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1625.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1625.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1625.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1625.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1625.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1625.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1625.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1625.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1625.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1625.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1625.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1625.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1625.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1950.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1950.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1950.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1950.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1950.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1950.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1950.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1950.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1950.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1950.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1950.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1950.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1950.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1950.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1950.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1950.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1950.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1950.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1950.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1950.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1950.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1950.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1950.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1950.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1950.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1950.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1950.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1950.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1950.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1950.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1950.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1950.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1950.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2275.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2275.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2275.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2275.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2275.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2275.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2275.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2275.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2275.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2275.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2275.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2275.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2275.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2275.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2275.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2275.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2275.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2275.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2275.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2275.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2275.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2275.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2275.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2275.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2275.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2275.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2275.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2275.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2275.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2275.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2275.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2275.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2275.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2600.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2600.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2600.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2600.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2600.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2600.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2600.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2600.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2600.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2600.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2600.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2600.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2600.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2600.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2600.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2600.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2600.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2600.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2600.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2600.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2600.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2600.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2600.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2600.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2600.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2600.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2600.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2600.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2600.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2600.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2600.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2600.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2600.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2925.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2925.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2925.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2925.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2925.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2925.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2925.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2925.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2925.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2925.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2925.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2925.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2925.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2925.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2925.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2925.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2925.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2925.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2925.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2925.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2925.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2925.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2925.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2925.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2925.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2925.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2925.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2925.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2925.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2925.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2925.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2925.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2925.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="3250.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="3250.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="3250.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="3250.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="3250.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="3250.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="3250.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="3250.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="3250.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="3250.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="3250.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="3250.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="3250.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="3250.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="3250.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="3250.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="3250.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="3250.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="3250.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="3250.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="3250.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="3250.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="3250.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="3250.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="3250.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="3250.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="3250.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="3250.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="3250.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="3250.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="3250.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="3250.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="3250.00" inputTorque="-7960.98" torqueLoss="268.68"/> + </TorqueLossMap> + </v2.0:Data> + <Signature> + <Reference URI="#AXLGEAR-6.500" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Axlegear> + <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> + <Data xsi:type="AxleWheelsDataDeclarationType"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5" xsi:type="v2.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </v2.0:Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>false</Steered> + <Tyre> + <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </v2.0:Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> + <Data xsi:type="AuxiliariesDataDeclarationType"> + <Fan> + <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + ESS + AMS</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> + <Data id="Airdrag-N.A." xsi:type="AirDragDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.80</CdxA_0> + <TransferredCdxA>5.80</TransferredCdxA> + <DeclaredCdxA>5.80</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </AirDrag> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll_missingParam.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll_missingParam.xml index 22d1cada879e2d9bc47041d2649898597b5343a5..1dce2edb9831019936c1d68df1201c89b369f691 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll_missingParam.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EcoRoll_missingParam.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class9_AT_EcoRoll"> <Manufacturer>TUG Generic</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EngineStopStart.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EngineStopStart.xml index abfb50221ec7d45ac6842b1e9ad03bccb17654b9..2e489740785e0ec68309517d0e6b9a0a7c94a922 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EngineStopStart.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_EngineStopStart.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class9_AT_EngineStopStart"> <Manufacturer>TUG Generic</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_PCCEcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_PCCEcoRoll.xml index 396d79c2f2abeb99ade0544a50952cffc733da27..bdfd833130ebaff44991bc322607ea2ddae29686 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_PCCEcoRoll.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS-Conventional/Group9_AT_PCCEcoRoll.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class9_Class-9_9t0_PCCEcoRoll"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRoll.xml new file mode 100644 index 0000000000000000000000000000000000000000..a37b6e8eb9600dc990a1307139b784d8cebf0245 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRoll.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-Class5_EcoRoll"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N/A</VIN> + <Date>2017-07-06T15:06:08.3093609Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Tractor</VehicleCategory> + <AxleConfiguration>4x2</AxleConfiguration> + <CurbMassChassis>8229</CurbMassChassis> + <GrossVehicleMass>18000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>ENG-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3103609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12740</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0000</WHTCUrban> + <WHTCRural>1.0000</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-139.00" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1355.00" /> + <Entry engineSpeed="600.00" torque="186.00" fuelConsumption="3118.00" /> + <Entry engineSpeed="600.00" torque="371.00" fuelConsumption="5105.00" /> + <Entry engineSpeed="600.00" torque="557.00" fuelConsumption="7522.00" /> + <Entry engineSpeed="600.00" torque="743.00" fuelConsumption="9298.00" /> + <Entry engineSpeed="600.00" torque="928.00" fuelConsumption="11208.00" /> + <Entry engineSpeed="600.00" torque="1114.00" fuelConsumption="13370.00" /> + <Entry engineSpeed="600.00" torque="1190.00" fuelConsumption="14252.00" /> + <Entry engineSpeed="800.00" torque="-144.00" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="1745.00" /> + <Entry engineSpeed="800.00" torque="186.00" fuelConsumption="3979.00" /> + <Entry engineSpeed="800.00" torque="371.00" fuelConsumption="6824.00" /> + <Entry engineSpeed="800.00" torque="557.00" fuelConsumption="9340.00" /> + <Entry engineSpeed="800.00" torque="743.00" fuelConsumption="12150.00" /> + <Entry engineSpeed="800.00" torque="928.00" fuelConsumption="14870.00" /> + <Entry engineSpeed="800.00" torque="1114.00" fuelConsumption="17863.00" /> + <Entry engineSpeed="800.00" torque="1300.00" fuelConsumption="20822.00" /> + <Entry engineSpeed="800.00" torque="1486.00" fuelConsumption="23769.00" /> + <Entry engineSpeed="800.00" torque="1663.00" fuelConsumption="26838.00" /> + <Entry engineSpeed="1000.00" torque="-153.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="2660.00" /> + <Entry engineSpeed="1000.00" torque="186.00" fuelConsumption="5536.00" /> + <Entry engineSpeed="1000.00" torque="371.00" fuelConsumption="8540.00" /> + <Entry engineSpeed="1000.00" torque="557.00" fuelConsumption="11470.00" /> + <Entry engineSpeed="1000.00" torque="743.00" fuelConsumption="14823.00" /> + <Entry engineSpeed="1000.00" torque="928.00" fuelConsumption="18443.00" /> + <Entry engineSpeed="1000.00" torque="1114.00" fuelConsumption="21847.00" /> + <Entry engineSpeed="1000.00" torque="1300.00" fuelConsumption="25256.00" /> + <Entry engineSpeed="1000.00" torque="1486.00" fuelConsumption="28936.00" /> + <Entry engineSpeed="1000.00" torque="1671.00" fuelConsumption="32592.00" /> + <Entry engineSpeed="1000.00" torque="1857.00" fuelConsumption="36545.00" /> + <Entry engineSpeed="1000.00" torque="2043.00" fuelConsumption="40964.00" /> + <Entry engineSpeed="1000.00" torque="2135.00" fuelConsumption="43486.00" /> + <Entry engineSpeed="1200.00" torque="-166.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="3070.00" /> + <Entry engineSpeed="1200.00" torque="186.00" fuelConsumption="6404.00" /> + <Entry engineSpeed="1200.00" torque="371.00" fuelConsumption="9889.00" /> + <Entry engineSpeed="1200.00" torque="557.00" fuelConsumption="13598.00" /> + <Entry engineSpeed="1200.00" torque="743.00" fuelConsumption="17748.00" /> + <Entry engineSpeed="1200.00" torque="928.00" fuelConsumption="21984.00" /> + <Entry engineSpeed="1200.00" torque="1114.00" fuelConsumption="26164.00" /> + <Entry engineSpeed="1200.00" torque="1300.00" fuelConsumption="30111.00" /> + <Entry engineSpeed="1200.00" torque="1486.00" fuelConsumption="34354.00" /> + <Entry engineSpeed="1200.00" torque="1671.00" fuelConsumption="38709.00" /> + <Entry engineSpeed="1200.00" torque="1857.00" fuelConsumption="43559.00" /> + <Entry engineSpeed="1200.00" torque="2043.00" fuelConsumption="48079.00" /> + <Entry engineSpeed="1200.00" torque="2135.00" fuelConsumption="51003.00" /> + <Entry engineSpeed="1400.00" torque="-188.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="3998.00" /> + <Entry engineSpeed="1400.00" torque="186.00" fuelConsumption="7561.00" /> + <Entry engineSpeed="1400.00" torque="371.00" fuelConsumption="11813.00" /> + <Entry engineSpeed="1400.00" torque="557.00" fuelConsumption="16270.00" /> + <Entry engineSpeed="1400.00" torque="743.00" fuelConsumption="20694.00" /> + <Entry engineSpeed="1400.00" torque="928.00" fuelConsumption="25155.00" /> + <Entry engineSpeed="1400.00" torque="1114.00" fuelConsumption="30209.00" /> + <Entry engineSpeed="1400.00" torque="1300.00" fuelConsumption="35046.00" /> + <Entry engineSpeed="1400.00" torque="1486.00" fuelConsumption="40105.00" /> + <Entry engineSpeed="1400.00" torque="1671.00" fuelConsumption="45916.00" /> + <Entry engineSpeed="1400.00" torque="1857.00" fuelConsumption="51762.00" /> + <Entry engineSpeed="1400.00" torque="2043.00" fuelConsumption="56704.00" /> + <Entry engineSpeed="1400.00" torque="2135.00" fuelConsumption="59772.00" /> + <Entry engineSpeed="1600.00" torque="-218.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="4836.00" /> + <Entry engineSpeed="1600.00" torque="186.00" fuelConsumption="8977.00" /> + <Entry engineSpeed="1600.00" torque="371.00" fuelConsumption="13777.00" /> + <Entry engineSpeed="1600.00" torque="557.00" fuelConsumption="18687.00" /> + <Entry engineSpeed="1600.00" torque="743.00" fuelConsumption="24042.00" /> + <Entry engineSpeed="1600.00" torque="928.00" fuelConsumption="29369.00" /> + <Entry engineSpeed="1600.00" torque="1114.00" fuelConsumption="34584.00" /> + <Entry engineSpeed="1600.00" torque="1300.00" fuelConsumption="40342.00" /> + <Entry engineSpeed="1600.00" torque="1486.00" fuelConsumption="46194.00" /> + <Entry engineSpeed="1600.00" torque="1671.00" fuelConsumption="52942.00" /> + <Entry engineSpeed="1600.00" torque="1857.00" fuelConsumption="59343.00" /> + <Entry engineSpeed="1600.00" torque="1930.00" fuelConsumption="61762.00" /> + <Entry engineSpeed="1800.00" torque="-245.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="5951.00" /> + <Entry engineSpeed="1800.00" torque="186.00" fuelConsumption="10935.00" /> + <Entry engineSpeed="1800.00" torque="371.00" fuelConsumption="16081.00" /> + <Entry engineSpeed="1800.00" torque="557.00" fuelConsumption="21721.00" /> + <Entry engineSpeed="1800.00" torque="743.00" fuelConsumption="28319.00" /> + <Entry engineSpeed="1800.00" torque="928.00" fuelConsumption="33776.00" /> + <Entry engineSpeed="1800.00" torque="1114.00" fuelConsumption="39998.00" /> + <Entry engineSpeed="1800.00" torque="1300.00" fuelConsumption="46656.00" /> + <Entry engineSpeed="1800.00" torque="1486.00" fuelConsumption="53328.00" /> + <Entry engineSpeed="1800.00" torque="1671.00" fuelConsumption="60497.00" /> + <Entry engineSpeed="1800.00" torque="1724.00" fuelConsumption="62741.00" /> + <Entry engineSpeed="2000.00" torque="-279.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="8474.00" /> + <Entry engineSpeed="2000.00" torque="186.00" fuelConsumption="13762.00" /> + <Entry engineSpeed="2000.00" torque="371.00" fuelConsumption="19178.00" /> + <Entry engineSpeed="2000.00" torque="557.00" fuelConsumption="25139.00" /> + <Entry engineSpeed="2000.00" torque="743.00" fuelConsumption="31743.00" /> + <Entry engineSpeed="2000.00" torque="928.00" fuelConsumption="39773.00" /> + <Entry engineSpeed="2000.00" torque="1114.00" fuelConsumption="47369.00" /> + <Entry engineSpeed="2000.00" torque="1255.00" fuelConsumption="52568.00" /> + <Entry engineSpeed="2100.00" torque="-297.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2100.00" torque="0.00" fuelConsumption="9721.00" /> + <Entry engineSpeed="2100.00" torque="186.00" fuelConsumption="15164.00" /> + <Entry engineSpeed="2100.00" torque="371.00" fuelConsumption="20794.00" /> + <Entry engineSpeed="2100.00" torque="557.00" fuelConsumption="26846.00" /> + <Entry engineSpeed="2100.00" torque="743.00" fuelConsumption="33162.00" /> + <Entry engineSpeed="2100.00" torque="928.00" fuelConsumption="42378.00" /> + <Entry engineSpeed="2100.00" torque="1021.00" fuelConsumption="47030.00" /> + <Entry engineSpeed="2200.00" torque="-315.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="12483.00" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>GBX-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="200.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Gearbox> + <Retarder> + <Data id="RET-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2.640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2.640</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="5000.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2.640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0051</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Crankshaft mounted - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Small</Technology> + </PneumaticSystem> + <HVAC> + <Technology>None</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3163609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.45</CdxA_0> + <TransferredCdxA>5.45</TransferredCdxA> + <DeclaredCdxA>5.45</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRollEngineStop.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRollEngineStop.xml new file mode 100644 index 0000000000000000000000000000000000000000..55b52a8b8103612a17ee5206a78b826e9d88de71 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EcoRollEngineStop.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-Class5_EcoRollEngineStop"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N/A</VIN> + <Date>2017-07-06T15:06:08.3093609Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Tractor</VehicleCategory> + <AxleConfiguration>4x2</AxleConfiguration> + <CurbMassChassis>8229</CurbMassChassis> + <GrossVehicleMass>18000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>ENG-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3103609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12740</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0000</WHTCUrban> + <WHTCRural>1.0000</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-139.00" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1355.00" /> + <Entry engineSpeed="600.00" torque="186.00" fuelConsumption="3118.00" /> + <Entry engineSpeed="600.00" torque="371.00" fuelConsumption="5105.00" /> + <Entry engineSpeed="600.00" torque="557.00" fuelConsumption="7522.00" /> + <Entry engineSpeed="600.00" torque="743.00" fuelConsumption="9298.00" /> + <Entry engineSpeed="600.00" torque="928.00" fuelConsumption="11208.00" /> + <Entry engineSpeed="600.00" torque="1114.00" fuelConsumption="13370.00" /> + <Entry engineSpeed="600.00" torque="1190.00" fuelConsumption="14252.00" /> + <Entry engineSpeed="800.00" torque="-144.00" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="1745.00" /> + <Entry engineSpeed="800.00" torque="186.00" fuelConsumption="3979.00" /> + <Entry engineSpeed="800.00" torque="371.00" fuelConsumption="6824.00" /> + <Entry engineSpeed="800.00" torque="557.00" fuelConsumption="9340.00" /> + <Entry engineSpeed="800.00" torque="743.00" fuelConsumption="12150.00" /> + <Entry engineSpeed="800.00" torque="928.00" fuelConsumption="14870.00" /> + <Entry engineSpeed="800.00" torque="1114.00" fuelConsumption="17863.00" /> + <Entry engineSpeed="800.00" torque="1300.00" fuelConsumption="20822.00" /> + <Entry engineSpeed="800.00" torque="1486.00" fuelConsumption="23769.00" /> + <Entry engineSpeed="800.00" torque="1663.00" fuelConsumption="26838.00" /> + <Entry engineSpeed="1000.00" torque="-153.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="2660.00" /> + <Entry engineSpeed="1000.00" torque="186.00" fuelConsumption="5536.00" /> + <Entry engineSpeed="1000.00" torque="371.00" fuelConsumption="8540.00" /> + <Entry engineSpeed="1000.00" torque="557.00" fuelConsumption="11470.00" /> + <Entry engineSpeed="1000.00" torque="743.00" fuelConsumption="14823.00" /> + <Entry engineSpeed="1000.00" torque="928.00" fuelConsumption="18443.00" /> + <Entry engineSpeed="1000.00" torque="1114.00" fuelConsumption="21847.00" /> + <Entry engineSpeed="1000.00" torque="1300.00" fuelConsumption="25256.00" /> + <Entry engineSpeed="1000.00" torque="1486.00" fuelConsumption="28936.00" /> + <Entry engineSpeed="1000.00" torque="1671.00" fuelConsumption="32592.00" /> + <Entry engineSpeed="1000.00" torque="1857.00" fuelConsumption="36545.00" /> + <Entry engineSpeed="1000.00" torque="2043.00" fuelConsumption="40964.00" /> + <Entry engineSpeed="1000.00" torque="2135.00" fuelConsumption="43486.00" /> + <Entry engineSpeed="1200.00" torque="-166.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="3070.00" /> + <Entry engineSpeed="1200.00" torque="186.00" fuelConsumption="6404.00" /> + <Entry engineSpeed="1200.00" torque="371.00" fuelConsumption="9889.00" /> + <Entry engineSpeed="1200.00" torque="557.00" fuelConsumption="13598.00" /> + <Entry engineSpeed="1200.00" torque="743.00" fuelConsumption="17748.00" /> + <Entry engineSpeed="1200.00" torque="928.00" fuelConsumption="21984.00" /> + <Entry engineSpeed="1200.00" torque="1114.00" fuelConsumption="26164.00" /> + <Entry engineSpeed="1200.00" torque="1300.00" fuelConsumption="30111.00" /> + <Entry engineSpeed="1200.00" torque="1486.00" fuelConsumption="34354.00" /> + <Entry engineSpeed="1200.00" torque="1671.00" fuelConsumption="38709.00" /> + <Entry engineSpeed="1200.00" torque="1857.00" fuelConsumption="43559.00" /> + <Entry engineSpeed="1200.00" torque="2043.00" fuelConsumption="48079.00" /> + <Entry engineSpeed="1200.00" torque="2135.00" fuelConsumption="51003.00" /> + <Entry engineSpeed="1400.00" torque="-188.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="3998.00" /> + <Entry engineSpeed="1400.00" torque="186.00" fuelConsumption="7561.00" /> + <Entry engineSpeed="1400.00" torque="371.00" fuelConsumption="11813.00" /> + <Entry engineSpeed="1400.00" torque="557.00" fuelConsumption="16270.00" /> + <Entry engineSpeed="1400.00" torque="743.00" fuelConsumption="20694.00" /> + <Entry engineSpeed="1400.00" torque="928.00" fuelConsumption="25155.00" /> + <Entry engineSpeed="1400.00" torque="1114.00" fuelConsumption="30209.00" /> + <Entry engineSpeed="1400.00" torque="1300.00" fuelConsumption="35046.00" /> + <Entry engineSpeed="1400.00" torque="1486.00" fuelConsumption="40105.00" /> + <Entry engineSpeed="1400.00" torque="1671.00" fuelConsumption="45916.00" /> + <Entry engineSpeed="1400.00" torque="1857.00" fuelConsumption="51762.00" /> + <Entry engineSpeed="1400.00" torque="2043.00" fuelConsumption="56704.00" /> + <Entry engineSpeed="1400.00" torque="2135.00" fuelConsumption="59772.00" /> + <Entry engineSpeed="1600.00" torque="-218.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="4836.00" /> + <Entry engineSpeed="1600.00" torque="186.00" fuelConsumption="8977.00" /> + <Entry engineSpeed="1600.00" torque="371.00" fuelConsumption="13777.00" /> + <Entry engineSpeed="1600.00" torque="557.00" fuelConsumption="18687.00" /> + <Entry engineSpeed="1600.00" torque="743.00" fuelConsumption="24042.00" /> + <Entry engineSpeed="1600.00" torque="928.00" fuelConsumption="29369.00" /> + <Entry engineSpeed="1600.00" torque="1114.00" fuelConsumption="34584.00" /> + <Entry engineSpeed="1600.00" torque="1300.00" fuelConsumption="40342.00" /> + <Entry engineSpeed="1600.00" torque="1486.00" fuelConsumption="46194.00" /> + <Entry engineSpeed="1600.00" torque="1671.00" fuelConsumption="52942.00" /> + <Entry engineSpeed="1600.00" torque="1857.00" fuelConsumption="59343.00" /> + <Entry engineSpeed="1600.00" torque="1930.00" fuelConsumption="61762.00" /> + <Entry engineSpeed="1800.00" torque="-245.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="5951.00" /> + <Entry engineSpeed="1800.00" torque="186.00" fuelConsumption="10935.00" /> + <Entry engineSpeed="1800.00" torque="371.00" fuelConsumption="16081.00" /> + <Entry engineSpeed="1800.00" torque="557.00" fuelConsumption="21721.00" /> + <Entry engineSpeed="1800.00" torque="743.00" fuelConsumption="28319.00" /> + <Entry engineSpeed="1800.00" torque="928.00" fuelConsumption="33776.00" /> + <Entry engineSpeed="1800.00" torque="1114.00" fuelConsumption="39998.00" /> + <Entry engineSpeed="1800.00" torque="1300.00" fuelConsumption="46656.00" /> + <Entry engineSpeed="1800.00" torque="1486.00" fuelConsumption="53328.00" /> + <Entry engineSpeed="1800.00" torque="1671.00" fuelConsumption="60497.00" /> + <Entry engineSpeed="1800.00" torque="1724.00" fuelConsumption="62741.00" /> + <Entry engineSpeed="2000.00" torque="-279.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="8474.00" /> + <Entry engineSpeed="2000.00" torque="186.00" fuelConsumption="13762.00" /> + <Entry engineSpeed="2000.00" torque="371.00" fuelConsumption="19178.00" /> + <Entry engineSpeed="2000.00" torque="557.00" fuelConsumption="25139.00" /> + <Entry engineSpeed="2000.00" torque="743.00" fuelConsumption="31743.00" /> + <Entry engineSpeed="2000.00" torque="928.00" fuelConsumption="39773.00" /> + <Entry engineSpeed="2000.00" torque="1114.00" fuelConsumption="47369.00" /> + <Entry engineSpeed="2000.00" torque="1255.00" fuelConsumption="52568.00" /> + <Entry engineSpeed="2100.00" torque="-297.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2100.00" torque="0.00" fuelConsumption="9721.00" /> + <Entry engineSpeed="2100.00" torque="186.00" fuelConsumption="15164.00" /> + <Entry engineSpeed="2100.00" torque="371.00" fuelConsumption="20794.00" /> + <Entry engineSpeed="2100.00" torque="557.00" fuelConsumption="26846.00" /> + <Entry engineSpeed="2100.00" torque="743.00" fuelConsumption="33162.00" /> + <Entry engineSpeed="2100.00" torque="928.00" fuelConsumption="42378.00" /> + <Entry engineSpeed="2100.00" torque="1021.00" fuelConsumption="47030.00" /> + <Entry engineSpeed="2200.00" torque="-315.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="12483.00" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>GBX-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="200.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Gearbox> + <Retarder> + <Data id="RET-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2.640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2.640</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="5000.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2.640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0051</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Crankshaft mounted - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Small</Technology> + </PneumaticSystem> + <HVAC> + <Technology>None</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3163609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.45</CdxA_0> + <TransferredCdxA>5.45</TransferredCdxA> + <DeclaredCdxA>5.45</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EngineStopStart.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EngineStopStart.xml new file mode 100644 index 0000000000000000000000000000000000000000..eccb769b78f587994ce7c52a1a733d2eb2cadea8 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group5_EngineStopStart.xml @@ -0,0 +1,576 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-Class5"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N/A</VIN> + <Date>2017-07-06T15:06:08.3093609Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Tractor</VehicleCategory> + <AxleConfiguration>4x2</AxleConfiguration> + <CurbMassChassis>8229</CurbMassChassis> + <GrossVehicleMass>18000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>ENG-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3103609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12740</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0000</WHTCUrban> + <WHTCRural>1.0000</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-139.00" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1355.00" /> + <Entry engineSpeed="600.00" torque="186.00" fuelConsumption="3118.00" /> + <Entry engineSpeed="600.00" torque="371.00" fuelConsumption="5105.00" /> + <Entry engineSpeed="600.00" torque="557.00" fuelConsumption="7522.00" /> + <Entry engineSpeed="600.00" torque="743.00" fuelConsumption="9298.00" /> + <Entry engineSpeed="600.00" torque="928.00" fuelConsumption="11208.00" /> + <Entry engineSpeed="600.00" torque="1114.00" fuelConsumption="13370.00" /> + <Entry engineSpeed="600.00" torque="1190.00" fuelConsumption="14252.00" /> + <Entry engineSpeed="800.00" torque="-144.00" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="1745.00" /> + <Entry engineSpeed="800.00" torque="186.00" fuelConsumption="3979.00" /> + <Entry engineSpeed="800.00" torque="371.00" fuelConsumption="6824.00" /> + <Entry engineSpeed="800.00" torque="557.00" fuelConsumption="9340.00" /> + <Entry engineSpeed="800.00" torque="743.00" fuelConsumption="12150.00" /> + <Entry engineSpeed="800.00" torque="928.00" fuelConsumption="14870.00" /> + <Entry engineSpeed="800.00" torque="1114.00" fuelConsumption="17863.00" /> + <Entry engineSpeed="800.00" torque="1300.00" fuelConsumption="20822.00" /> + <Entry engineSpeed="800.00" torque="1486.00" fuelConsumption="23769.00" /> + <Entry engineSpeed="800.00" torque="1663.00" fuelConsumption="26838.00" /> + <Entry engineSpeed="1000.00" torque="-153.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="2660.00" /> + <Entry engineSpeed="1000.00" torque="186.00" fuelConsumption="5536.00" /> + <Entry engineSpeed="1000.00" torque="371.00" fuelConsumption="8540.00" /> + <Entry engineSpeed="1000.00" torque="557.00" fuelConsumption="11470.00" /> + <Entry engineSpeed="1000.00" torque="743.00" fuelConsumption="14823.00" /> + <Entry engineSpeed="1000.00" torque="928.00" fuelConsumption="18443.00" /> + <Entry engineSpeed="1000.00" torque="1114.00" fuelConsumption="21847.00" /> + <Entry engineSpeed="1000.00" torque="1300.00" fuelConsumption="25256.00" /> + <Entry engineSpeed="1000.00" torque="1486.00" fuelConsumption="28936.00" /> + <Entry engineSpeed="1000.00" torque="1671.00" fuelConsumption="32592.00" /> + <Entry engineSpeed="1000.00" torque="1857.00" fuelConsumption="36545.00" /> + <Entry engineSpeed="1000.00" torque="2043.00" fuelConsumption="40964.00" /> + <Entry engineSpeed="1000.00" torque="2135.00" fuelConsumption="43486.00" /> + <Entry engineSpeed="1200.00" torque="-166.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="3070.00" /> + <Entry engineSpeed="1200.00" torque="186.00" fuelConsumption="6404.00" /> + <Entry engineSpeed="1200.00" torque="371.00" fuelConsumption="9889.00" /> + <Entry engineSpeed="1200.00" torque="557.00" fuelConsumption="13598.00" /> + <Entry engineSpeed="1200.00" torque="743.00" fuelConsumption="17748.00" /> + <Entry engineSpeed="1200.00" torque="928.00" fuelConsumption="21984.00" /> + <Entry engineSpeed="1200.00" torque="1114.00" fuelConsumption="26164.00" /> + <Entry engineSpeed="1200.00" torque="1300.00" fuelConsumption="30111.00" /> + <Entry engineSpeed="1200.00" torque="1486.00" fuelConsumption="34354.00" /> + <Entry engineSpeed="1200.00" torque="1671.00" fuelConsumption="38709.00" /> + <Entry engineSpeed="1200.00" torque="1857.00" fuelConsumption="43559.00" /> + <Entry engineSpeed="1200.00" torque="2043.00" fuelConsumption="48079.00" /> + <Entry engineSpeed="1200.00" torque="2135.00" fuelConsumption="51003.00" /> + <Entry engineSpeed="1400.00" torque="-188.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="3998.00" /> + <Entry engineSpeed="1400.00" torque="186.00" fuelConsumption="7561.00" /> + <Entry engineSpeed="1400.00" torque="371.00" fuelConsumption="11813.00" /> + <Entry engineSpeed="1400.00" torque="557.00" fuelConsumption="16270.00" /> + <Entry engineSpeed="1400.00" torque="743.00" fuelConsumption="20694.00" /> + <Entry engineSpeed="1400.00" torque="928.00" fuelConsumption="25155.00" /> + <Entry engineSpeed="1400.00" torque="1114.00" fuelConsumption="30209.00" /> + <Entry engineSpeed="1400.00" torque="1300.00" fuelConsumption="35046.00" /> + <Entry engineSpeed="1400.00" torque="1486.00" fuelConsumption="40105.00" /> + <Entry engineSpeed="1400.00" torque="1671.00" fuelConsumption="45916.00" /> + <Entry engineSpeed="1400.00" torque="1857.00" fuelConsumption="51762.00" /> + <Entry engineSpeed="1400.00" torque="2043.00" fuelConsumption="56704.00" /> + <Entry engineSpeed="1400.00" torque="2135.00" fuelConsumption="59772.00" /> + <Entry engineSpeed="1600.00" torque="-218.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="4836.00" /> + <Entry engineSpeed="1600.00" torque="186.00" fuelConsumption="8977.00" /> + <Entry engineSpeed="1600.00" torque="371.00" fuelConsumption="13777.00" /> + <Entry engineSpeed="1600.00" torque="557.00" fuelConsumption="18687.00" /> + <Entry engineSpeed="1600.00" torque="743.00" fuelConsumption="24042.00" /> + <Entry engineSpeed="1600.00" torque="928.00" fuelConsumption="29369.00" /> + <Entry engineSpeed="1600.00" torque="1114.00" fuelConsumption="34584.00" /> + <Entry engineSpeed="1600.00" torque="1300.00" fuelConsumption="40342.00" /> + <Entry engineSpeed="1600.00" torque="1486.00" fuelConsumption="46194.00" /> + <Entry engineSpeed="1600.00" torque="1671.00" fuelConsumption="52942.00" /> + <Entry engineSpeed="1600.00" torque="1857.00" fuelConsumption="59343.00" /> + <Entry engineSpeed="1600.00" torque="1930.00" fuelConsumption="61762.00" /> + <Entry engineSpeed="1800.00" torque="-245.00" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="5951.00" /> + <Entry engineSpeed="1800.00" torque="186.00" fuelConsumption="10935.00" /> + <Entry engineSpeed="1800.00" torque="371.00" fuelConsumption="16081.00" /> + <Entry engineSpeed="1800.00" torque="557.00" fuelConsumption="21721.00" /> + <Entry engineSpeed="1800.00" torque="743.00" fuelConsumption="28319.00" /> + <Entry engineSpeed="1800.00" torque="928.00" fuelConsumption="33776.00" /> + <Entry engineSpeed="1800.00" torque="1114.00" fuelConsumption="39998.00" /> + <Entry engineSpeed="1800.00" torque="1300.00" fuelConsumption="46656.00" /> + <Entry engineSpeed="1800.00" torque="1486.00" fuelConsumption="53328.00" /> + <Entry engineSpeed="1800.00" torque="1671.00" fuelConsumption="60497.00" /> + <Entry engineSpeed="1800.00" torque="1724.00" fuelConsumption="62741.00" /> + <Entry engineSpeed="2000.00" torque="-279.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="8474.00" /> + <Entry engineSpeed="2000.00" torque="186.00" fuelConsumption="13762.00" /> + <Entry engineSpeed="2000.00" torque="371.00" fuelConsumption="19178.00" /> + <Entry engineSpeed="2000.00" torque="557.00" fuelConsumption="25139.00" /> + <Entry engineSpeed="2000.00" torque="743.00" fuelConsumption="31743.00" /> + <Entry engineSpeed="2000.00" torque="928.00" fuelConsumption="39773.00" /> + <Entry engineSpeed="2000.00" torque="1114.00" fuelConsumption="47369.00" /> + <Entry engineSpeed="2000.00" torque="1255.00" fuelConsumption="52568.00" /> + <Entry engineSpeed="2100.00" torque="-297.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2100.00" torque="0.00" fuelConsumption="9721.00" /> + <Entry engineSpeed="2100.00" torque="186.00" fuelConsumption="15164.00" /> + <Entry engineSpeed="2100.00" torque="371.00" fuelConsumption="20794.00" /> + <Entry engineSpeed="2100.00" torque="557.00" fuelConsumption="26846.00" /> + <Entry engineSpeed="2100.00" torque="743.00" fuelConsumption="33162.00" /> + <Entry engineSpeed="2100.00" torque="928.00" fuelConsumption="42378.00" /> + <Entry engineSpeed="2100.00" torque="1021.00" fuelConsumption="47030.00" /> + <Entry engineSpeed="2200.00" torque="-315.00" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="12483.00" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>GBX-N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="400.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="400.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-10000.00" torqueLoss="200.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="10000.00" torqueLoss="200.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Gearbox> + <Retarder> + <Data id="RET-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2017-07-06T15:06:08.3133609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2.640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2.640</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00" /> + <Entry inputSpeed="5000.00" inputTorque="50.00" torqueLoss="2.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2.640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0051</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-07-06T15:06:08.3153609Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Crankshaft mounted - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Small</Technology> + </PneumaticSystem> + <HVAC> + <Technology>None</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2017-07-06T15:06:08.3163609Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.45</CdxA_0> + <TransferredCdxA>5.45</TransferredCdxA> + <DeclaredCdxA>5.45</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll.xml new file mode 100644 index 0000000000000000000000000000000000000000..eb02d9921c9daa5dbb3d911e703fe2fd14524693 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll.xml @@ -0,0 +1,2139 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class9_AT_EcoRoll" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <Manufacturer>TUG Generic</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N.A.</VIN> + <Date>2019-02-27T09:39:05.3188703Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Lorry</VehicleCategory> + <AxleConfiguration>6x2</AxleConfiguration> + <CurbMassChassis>7750</CurbMassChassis> + <GrossVehicleMass>26000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </v2.1:PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS xsi:type="AdvancedDriverAssistantSystemsType"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <!--<APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch>--> + </ADAS> + <Components xsi:type="v2.0:VehicleComponentsType"> + <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> + <Data id="ENG-Generic220kW7.7lEngine" xsi:type="EngineDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>Generic 220kW 7.7l Engine</Model> + <CertificationNumber>ENG-Generic 220kW 7.7l Engine</CertificationNumber> + <Date>2019-02-27T09:39:05.3241256Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>7700</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>219774</RatedPower> + <MaxEngineTorque>1200</MaxEngineTorque> + <WHTCUrban>1.0300</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-144.58" fuelConsumption="0.00"/> + <Entry engineSpeed="600.00" torque="-44.58" fuelConsumption="0.00"/> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="638.00"/> + <Entry engineSpeed="600.00" torque="70.00" fuelConsumption="1601.24"/> + <Entry engineSpeed="600.00" torque="100.00" fuelConsumption="2020.04"/> + <Entry engineSpeed="600.00" torque="200.00" fuelConsumption="3330.71"/> + <Entry engineSpeed="600.00" torque="300.00" fuelConsumption="4651.64"/> + <Entry engineSpeed="600.00" torque="400.00" fuelConsumption="5962.41"/> + <Entry engineSpeed="600.00" torque="500.00" fuelConsumption="7979.12"/> + <Entry engineSpeed="600.00" torque="600.00" fuelConsumption="10025.12"/> + <Entry engineSpeed="800.00" torque="-154.66" fuelConsumption="0.00"/> + <Entry engineSpeed="800.00" torque="-54.66" fuelConsumption="0.00"/> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="914.26"/> + <Entry engineSpeed="800.00" torque="70.00" fuelConsumption="1862.24"/> + <Entry engineSpeed="800.00" torque="100.00" fuelConsumption="2367.75"/> + <Entry engineSpeed="800.00" torque="200.00" fuelConsumption="4006.79"/> + <Entry engineSpeed="800.00" torque="300.00" fuelConsumption="5667.98"/> + <Entry engineSpeed="800.00" torque="400.00" fuelConsumption="7335.35"/> + <Entry engineSpeed="800.00" torque="500.00" fuelConsumption="9511.02"/> + <Entry engineSpeed="800.00" torque="600.00" fuelConsumption="11650.65"/> + <Entry engineSpeed="800.00" torque="700.00" fuelConsumption="13773.98"/> + <Entry engineSpeed="800.00" torque="800.00" fuelConsumption="15797.43"/> + <Entry engineSpeed="800.00" torque="836.00" fuelConsumption="16529.92"/> + <Entry engineSpeed="1000.00" torque="-163.63" fuelConsumption="0.00"/> + <Entry engineSpeed="1000.00" torque="-63.63" fuelConsumption="0.00"/> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="1190.51"/> + <Entry engineSpeed="1000.00" torque="70.00" fuelConsumption="2123.23"/> + <Entry engineSpeed="1000.00" torque="100.00" fuelConsumption="2715.46"/> + <Entry engineSpeed="1000.00" torque="200.00" fuelConsumption="4682.86"/> + <Entry engineSpeed="1000.00" torque="300.00" fuelConsumption="6684.33"/> + <Entry engineSpeed="1000.00" torque="400.00" fuelConsumption="8708.28"/> + <Entry engineSpeed="1000.00" torque="500.00" fuelConsumption="11042.92"/> + <Entry engineSpeed="1000.00" torque="600.00" fuelConsumption="13276.18"/> + <Entry engineSpeed="1000.00" torque="700.00" fuelConsumption="15477.76"/> + <Entry engineSpeed="1000.00" torque="800.00" fuelConsumption="17682.68"/> + <Entry engineSpeed="1000.00" torque="900.00" fuelConsumption="19910.32"/> + <Entry engineSpeed="1000.00" torque="1000.00" fuelConsumption="22137.47"/> + <Entry engineSpeed="1000.00" torque="1070.00" fuelConsumption="23687.75"/> + <Entry engineSpeed="1200.00" torque="-174.94" fuelConsumption="0.00"/> + <Entry engineSpeed="1200.00" torque="-74.94" fuelConsumption="0.00"/> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="1466.77"/> + <Entry engineSpeed="1200.00" torque="70.00" fuelConsumption="2384.23"/> + <Entry engineSpeed="1200.00" torque="100.00" fuelConsumption="3063.16"/> + <Entry engineSpeed="1200.00" torque="200.00" fuelConsumption="5358.94"/> + <Entry engineSpeed="1200.00" torque="300.00" fuelConsumption="7700.67"/> + <Entry engineSpeed="1200.00" torque="400.00" fuelConsumption="10081.22"/> + <Entry engineSpeed="1200.00" torque="500.00" fuelConsumption="12574.82"/> + <Entry engineSpeed="1200.00" torque="600.00" fuelConsumption="14901.72"/> + <Entry engineSpeed="1200.00" torque="700.00" fuelConsumption="17181.54"/> + <Entry engineSpeed="1200.00" torque="800.00" fuelConsumption="19567.93"/> + <Entry engineSpeed="1200.00" torque="900.00" fuelConsumption="21988.50"/> + <Entry engineSpeed="1200.00" torque="1000.00" fuelConsumption="24410.55"/> + <Entry engineSpeed="1200.00" torque="1100.00" fuelConsumption="26818.12"/> + <Entry engineSpeed="1200.00" torque="1200.00" fuelConsumption="29600.85"/> + <Entry engineSpeed="1400.00" torque="-186.25" fuelConsumption="0.00"/> + <Entry engineSpeed="1400.00" torque="-86.25" fuelConsumption="0.00"/> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="1943.23"/> + <Entry engineSpeed="1400.00" torque="70.00" fuelConsumption="2867.47"/> + <Entry engineSpeed="1400.00" torque="100.00" fuelConsumption="3660.90"/> + <Entry engineSpeed="1400.00" torque="200.00" fuelConsumption="6305.67"/> + <Entry engineSpeed="1400.00" torque="300.00" fuelConsumption="9033.23"/> + <Entry engineSpeed="1400.00" torque="400.00" fuelConsumption="11786.02"/> + <Entry engineSpeed="1400.00" torque="500.00" fuelConsumption="14469.48"/> + <Entry engineSpeed="1400.00" torque="600.00" fuelConsumption="17183.33"/> + <Entry engineSpeed="1400.00" torque="700.00" fuelConsumption="20019.01"/> + <Entry engineSpeed="1400.00" torque="800.00" fuelConsumption="22833.01"/> + <Entry engineSpeed="1400.00" torque="900.00" fuelConsumption="25503.81"/> + <Entry engineSpeed="1400.00" torque="1000.00" fuelConsumption="28133.13"/> + <Entry engineSpeed="1400.00" torque="1100.00" fuelConsumption="30822.69"/> + <Entry engineSpeed="1400.00" torque="1200.00" fuelConsumption="33616.50"/> + <Entry engineSpeed="1600.00" torque="-197.57" fuelConsumption="0.00"/> + <Entry engineSpeed="1600.00" torque="-97.57" fuelConsumption="0.00"/> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="2390.68"/> + <Entry engineSpeed="1600.00" torque="70.00" fuelConsumption="3375.40"/> + <Entry engineSpeed="1600.00" torque="100.00" fuelConsumption="4270.71"/> + <Entry engineSpeed="1600.00" torque="200.00" fuelConsumption="7255.08"/> + <Entry engineSpeed="1600.00" torque="300.00" fuelConsumption="10395.25"/> + <Entry engineSpeed="1600.00" torque="400.00" fuelConsumption="13532.58"/> + <Entry engineSpeed="1600.00" torque="500.00" fuelConsumption="16706.54"/> + <Entry engineSpeed="1600.00" torque="600.00" fuelConsumption="19830.25"/> + <Entry engineSpeed="1600.00" torque="700.00" fuelConsumption="22960.50"/> + <Entry engineSpeed="1600.00" torque="800.00" fuelConsumption="26109.44"/> + <Entry engineSpeed="1600.00" torque="900.00" fuelConsumption="29158.70"/> + <Entry engineSpeed="1600.00" torque="1000.00" fuelConsumption="32050.23"/> + <Entry engineSpeed="1600.00" torque="1100.00" fuelConsumption="35223.83"/> + <Entry engineSpeed="1600.00" torque="1200.00" fuelConsumption="38415.23"/> + <Entry engineSpeed="1800.00" torque="-204.41" fuelConsumption="0.00"/> + <Entry engineSpeed="1800.00" torque="-104.41" fuelConsumption="0.00"/> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="2890.46"/> + <Entry engineSpeed="1800.00" torque="70.00" fuelConsumption="3985.03"/> + <Entry engineSpeed="1800.00" torque="100.00" fuelConsumption="4965.43"/> + <Entry engineSpeed="1800.00" torque="200.00" fuelConsumption="8233.42"/> + <Entry engineSpeed="1800.00" torque="300.00" fuelConsumption="11783.43"/> + <Entry engineSpeed="1800.00" torque="400.00" fuelConsumption="15307.09"/> + <Entry engineSpeed="1800.00" torque="500.00" fuelConsumption="18849.16"/> + <Entry engineSpeed="1800.00" torque="600.00" fuelConsumption="22267.47"/> + <Entry engineSpeed="1800.00" torque="700.00" fuelConsumption="25749.16"/> + <Entry engineSpeed="1800.00" torque="800.00" fuelConsumption="29389.56"/> + <Entry engineSpeed="1800.00" torque="900.00" fuelConsumption="32951.65"/> + <Entry engineSpeed="1800.00" torque="1000.00" fuelConsumption="36567.98"/> + <Entry engineSpeed="1800.00" torque="1100.00" fuelConsumption="40354.88"/> + <Entry engineSpeed="1800.00" torque="1124.00" fuelConsumption="41263.46"/> + <Entry engineSpeed="2000.00" torque="-211.73" fuelConsumption="0.00"/> + <Entry engineSpeed="2000.00" torque="-111.73" fuelConsumption="0.00"/> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="3496.10"/> + <Entry engineSpeed="2000.00" torque="70.00" fuelConsumption="4806.79"/> + <Entry engineSpeed="2000.00" torque="100.00" fuelConsumption="5854.51"/> + <Entry engineSpeed="2000.00" torque="200.00" fuelConsumption="9346.91"/> + <Entry engineSpeed="2000.00" torque="300.00" fuelConsumption="13318.20"/> + <Entry engineSpeed="2000.00" torque="400.00" fuelConsumption="17192.16"/> + <Entry engineSpeed="2000.00" torque="500.00" fuelConsumption="21141.10"/> + <Entry engineSpeed="2000.00" torque="600.00" fuelConsumption="25063.69"/> + <Entry engineSpeed="2000.00" torque="700.00" fuelConsumption="28933.73"/> + <Entry engineSpeed="2000.00" torque="800.00" fuelConsumption="33033.20"/> + <Entry engineSpeed="2000.00" torque="900.00" fuelConsumption="37186.49"/> + <Entry engineSpeed="2000.00" torque="1000.00" fuelConsumption="41216.66"/> + <Entry engineSpeed="2000.00" torque="1038.00" fuelConsumption="42697.63"/> + <Entry engineSpeed="2200.00" torque="-225.56" fuelConsumption="0.00"/> + <Entry engineSpeed="2200.00" torque="-125.56" fuelConsumption="0.00"/> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="4247.18"/> + <Entry engineSpeed="2200.00" torque="70.00" fuelConsumption="5534.02"/> + <Entry engineSpeed="2200.00" torque="100.00" fuelConsumption="6687.77"/> + <Entry engineSpeed="2200.00" torque="200.00" fuelConsumption="10533.61"/> + <Entry engineSpeed="2200.00" torque="300.00" fuelConsumption="14853.02"/> + <Entry engineSpeed="2200.00" torque="400.00" fuelConsumption="19148.40"/> + <Entry engineSpeed="2200.00" torque="500.00" fuelConsumption="23390.99"/> + <Entry engineSpeed="2200.00" torque="600.00" fuelConsumption="27829.44"/> + <Entry engineSpeed="2200.00" torque="700.00" fuelConsumption="32500.75"/> + <Entry engineSpeed="2200.00" torque="800.00" fuelConsumption="37123.63"/> + <Entry engineSpeed="2200.00" torque="900.00" fuelConsumption="41612.31"/> + <Entry engineSpeed="2200.00" torque="955.00" fuelConsumption="44050.20"/> + <Entry engineSpeed="2400.00" torque="-235.72" fuelConsumption="0.00"/> + <Entry engineSpeed="2400.00" torque="-135.72" fuelConsumption="0.00"/> + <Entry engineSpeed="2400.00" torque="0.00" fuelConsumption="4945.10"/> + <Entry engineSpeed="2400.00" torque="70.00" fuelConsumption="6234.18"/> + <Entry engineSpeed="2400.00" torque="100.00" fuelConsumption="7525.66"/> + <Entry engineSpeed="2400.00" torque="200.00" fuelConsumption="11830.60"/> + <Entry engineSpeed="2400.00" torque="300.00" fuelConsumption="16443.47"/> + <Entry engineSpeed="2400.00" torque="400.00" fuelConsumption="21308.19"/> + <Entry engineSpeed="2400.00" torque="500.00" fuelConsumption="26325.66"/> + <Entry engineSpeed="2400.00" torque="600.00" fuelConsumption="31335.42"/> + <Entry engineSpeed="2400.00" torque="700.00" fuelConsumption="36716.19"/> + <Entry engineSpeed="2400.00" torque="800.00" fuelConsumption="42106.80"/> + <Entry engineSpeed="2400.00" torque="815.00" fuelConsumption="42844.11"/> + <Entry engineSpeed="2400.00" torque="915.00" fuelConsumption="42844.11"/> + <Entry engineSpeed="2500.00" torque="-240.18" fuelConsumption="0.00"/> + <Entry engineSpeed="2500.00" torque="-140.18" fuelConsumption="0.00"/> + <Entry engineSpeed="2500.00" torque="0.00" fuelConsumption="5337.87"/> + <Entry engineSpeed="2500.00" torque="70.00" fuelConsumption="6286.76"/> + <Entry engineSpeed="2500.00" torque="100.00" fuelConsumption="7731.93"/> + <Entry engineSpeed="2500.00" torque="200.00" fuelConsumption="12386.92"/> + <Entry engineSpeed="2500.00" torque="300.00" fuelConsumption="17232.61"/> + <Entry engineSpeed="2500.00" torque="400.00" fuelConsumption="22335.99"/> + <Entry engineSpeed="2500.00" torque="500.00" fuelConsumption="27944.55"/> + <Entry engineSpeed="2500.00" torque="600.00" fuelConsumption="33199.92"/> + <Entry engineSpeed="2500.00" torque="710.00" fuelConsumption="39388.78"/> + <Entry engineSpeed="2600.00" torque="-146.13" fuelConsumption="0.00"/> + <Entry engineSpeed="2600.00" torque="0.00" fuelConsumption="5534.25"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="600.00" dragTorque="-43.58"/> + <Entry engineSpeed="800.00" maxTorque="836.00" dragTorque="-53.66"/> + <Entry engineSpeed="1000.00" maxTorque="1069.52" dragTorque="-62.03"/> + <Entry engineSpeed="1200.00" maxTorque="1200.00" dragTorque="-73.94"/> + <Entry engineSpeed="1400.00" maxTorque="1200.00" dragTorque="-85.25"/> + <Entry engineSpeed="1600.00" maxTorque="1200.00" dragTorque="-96.57"/> + <Entry engineSpeed="1800.00" maxTorque="1123.62" dragTorque="-103.41"/> + <Entry engineSpeed="2000.00" maxTorque="1037.52" dragTorque="-110.73"/> + <Entry engineSpeed="2200.00" maxTorque="953.95" dragTorque="-124.56"/> + <Entry engineSpeed="2400.00" maxTorque="815.35" dragTorque="-134.72"/> + <Entry engineSpeed="2500.00" maxTorque="711.29" dragTorque="-139.18"/> + <Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-145.13"/> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-Generic220kW7.7lEngine" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Engine> + <Gearbox xsi:type="GearboxComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="GBX-APT-SGenericTqMax1200" xsi:type="v2.0:GearboxDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> + <Date>2019-02-27T09:39:05.3400867Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>3.490</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00"/> + <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00"/> + <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00"/> + <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00"/> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00"/> + <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00"/> + <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00"/> + <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00"/> + <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00"/> + <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00"/> + <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00"/> + <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00"/> + <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00"/> + <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00"/> + <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00"/> + <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00"/> + <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00"/> + <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00"/> + <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00"/> + <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00"/> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00"/> + <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00"/> + <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00"/> + <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00"/> + <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00"/> + <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00"/> + <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00"/> + <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00"/> + <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00"/> + <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00"/> + <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00"/> + <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00"/> + <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00"/> + <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00"/> + <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00"/> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00"/> + <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00"/> + <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00"/> + <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00"/> + <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00"/> + <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00"/> + <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00"/> + <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00"/> + <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00"/> + <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00"/> + <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00"/> + <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00"/> + <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00"/> + <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00"/> + <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00"/> + <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00"/> + <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00"/> + <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00"/> + <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00"/> + <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00"/> + <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00"/> + <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00"/> + <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00"/> + <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00"/> + <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00"/> + <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00"/> + <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00"/> + <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.860</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.410</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00"/> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.750</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00"/> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00"/> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00"/> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00"/> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00"/> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00"/> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00"/> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00"/> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00"/> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00"/> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00"/> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00"/> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00"/> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00"/> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00"/> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00"/> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00"/> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00"/> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00"/> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00"/> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00"/> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00"/> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00"/> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00"/> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00"/> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00"/> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00"/> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00"/> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00"/> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00"/> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00"/> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00"/> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00"/> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00"/> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00"/> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00"/> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00"/> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00"/> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00"/> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00"/> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00"/> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00"/> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00"/> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00"/> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00"/> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00"/> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00"/> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00"/> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00"/> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00"/> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00"/> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00"/> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Gearbox> + <TorqueConverter xsi:type="TorqueConverterComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="TC-APT-SGenericTqMax1200" xsi:type="v2.0:TorqueConverterDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79"/> + <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30"/> + <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80"/> + <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31"/> + <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82"/> + <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33"/> + <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83"/> + <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59"/> + <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35"/> + <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11"/> + <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87"/> + <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63"/> + <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40"/> + <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20"/> + <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00"/> + <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34"/> + <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34"/> + <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11"/> + <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52"/> + <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19"/> + <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77"/> + <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00"/> + <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00"/> + <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00"/> + <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00"/> + <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00"/> + <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00"/> + </Characteristics> + </Data> + <Signature> + <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </TorqueConverter> + <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> + <v2.0:Data id="AXLGEAR-6.500" xsi:type="v1.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-6.500</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>6.500</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="0.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="0.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="0.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="0.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="0.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="0.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="0.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="0.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="0.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="0.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="0.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="0.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="0.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="0.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="0.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="0.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="0.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="0.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="0.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="0.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="0.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="0.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="0.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="0.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="0.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="0.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="0.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="0.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="0.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="0.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="0.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="0.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="325.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="325.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="325.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="325.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="325.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="325.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="325.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="325.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="325.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="325.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="325.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="325.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="325.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="325.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="325.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="325.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="325.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="325.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="325.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="325.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="325.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="325.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="325.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="325.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="325.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="325.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="325.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="325.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="325.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="325.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="325.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="325.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="325.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="650.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="650.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="650.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="650.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="650.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="650.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="650.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="650.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="650.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="650.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="650.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="650.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="650.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="650.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="650.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="650.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="650.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="650.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="650.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="650.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="650.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="650.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="650.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="650.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="650.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="650.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="650.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="650.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="650.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="650.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="650.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="650.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="650.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="975.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="975.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="975.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="975.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="975.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="975.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="975.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="975.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="975.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="975.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="975.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="975.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="975.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="975.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="975.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="975.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="975.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="975.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="975.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="975.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="975.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="975.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="975.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="975.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="975.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="975.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="975.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="975.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="975.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="975.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="975.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="975.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="975.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1300.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1300.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1300.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1300.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1300.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1300.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1300.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1300.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1300.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1300.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1300.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1300.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1300.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1300.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1300.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1300.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1300.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1300.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1300.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1300.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1300.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1300.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1300.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1300.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1300.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1300.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1300.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1300.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1300.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1300.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1300.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1300.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1300.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1625.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1625.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1625.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1625.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1625.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1625.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1625.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1625.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1625.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1625.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1625.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1625.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1625.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1625.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1625.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1625.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1625.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1625.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1625.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1625.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1625.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1625.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1625.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1625.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1625.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1625.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1625.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1625.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1625.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1625.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1625.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1625.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1625.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1950.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1950.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1950.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1950.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1950.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1950.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1950.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1950.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1950.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1950.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1950.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1950.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1950.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1950.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1950.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1950.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1950.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1950.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1950.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1950.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1950.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1950.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1950.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1950.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1950.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1950.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1950.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1950.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1950.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1950.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1950.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1950.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1950.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2275.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2275.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2275.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2275.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2275.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2275.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2275.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2275.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2275.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2275.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2275.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2275.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2275.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2275.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2275.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2275.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2275.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2275.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2275.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2275.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2275.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2275.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2275.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2275.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2275.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2275.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2275.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2275.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2275.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2275.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2275.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2275.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2275.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2600.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2600.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2600.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2600.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2600.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2600.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2600.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2600.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2600.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2600.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2600.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2600.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2600.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2600.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2600.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2600.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2600.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2600.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2600.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2600.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2600.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2600.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2600.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2600.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2600.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2600.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2600.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2600.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2600.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2600.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2600.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2600.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2600.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2925.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2925.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2925.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2925.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2925.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2925.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2925.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2925.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2925.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2925.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2925.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2925.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2925.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2925.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2925.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2925.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2925.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2925.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2925.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2925.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2925.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2925.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2925.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2925.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2925.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2925.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2925.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2925.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2925.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2925.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2925.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2925.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2925.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="3250.00" inputTorque="31.96" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="70.42" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="110.07" torqueLoss="33.15"/> + <Entry inputSpeed="3250.00" inputTorque="149.72" torqueLoss="34.34"/> + <Entry inputSpeed="3250.00" inputTorque="189.37" torqueLoss="35.53"/> + <Entry inputSpeed="3250.00" inputTorque="268.68" torqueLoss="37.91"/> + <Entry inputSpeed="3250.00" inputTorque="347.98" torqueLoss="40.29"/> + <Entry inputSpeed="3250.00" inputTorque="506.58" torqueLoss="45.04"/> + <Entry inputSpeed="3250.00" inputTorque="665.19" torqueLoss="49.80"/> + <Entry inputSpeed="3250.00" inputTorque="823.79" torqueLoss="54.56"/> + <Entry inputSpeed="3250.00" inputTorque="982.39" torqueLoss="59.32"/> + <Entry inputSpeed="3250.00" inputTorque="1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="3250.00" inputTorque="1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="3250.00" inputTorque="1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="3250.00" inputTorque="1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="3250.00" inputTorque="1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="3250.00" inputTorque="2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="3250.00" inputTorque="2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="3250.00" inputTorque="2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="3250.00" inputTorque="3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="3250.00" inputTorque="3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="3250.00" inputTorque="3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="3250.00" inputTorque="4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="3250.00" inputTorque="4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="3250.00" inputTorque="4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="3250.00" inputTorque="5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="3250.00" inputTorque="5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="3250.00" inputTorque="5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="3250.00" inputTorque="6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="3250.00" inputTorque="6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="3250.00" inputTorque="6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="3250.00" inputTorque="7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="3250.00" inputTorque="7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="3250.00" inputTorque="7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="3250.00" inputTorque="7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="0.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="0.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="0.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="0.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="0.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="0.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="0.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="0.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="0.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="0.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="0.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="0.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="0.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="0.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="0.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="0.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="0.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="0.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="0.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="0.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="0.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="0.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="0.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="0.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="0.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="0.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="0.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="0.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="0.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="0.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="0.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="0.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="0.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="0.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="325.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="325.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="325.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="325.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="325.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="325.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="325.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="325.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="325.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="325.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="325.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="325.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="325.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="325.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="325.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="325.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="325.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="325.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="325.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="325.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="325.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="325.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="325.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="325.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="325.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="325.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="325.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="325.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="325.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="325.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="325.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="325.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="325.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="325.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="650.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="650.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="650.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="650.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="650.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="650.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="650.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="650.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="650.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="650.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="650.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="650.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="650.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="650.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="650.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="650.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="650.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="650.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="650.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="650.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="650.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="650.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="650.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="650.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="650.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="650.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="650.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="650.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="650.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="650.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="650.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="650.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="650.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="650.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="975.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="975.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="975.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="975.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="975.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="975.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="975.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="975.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="975.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="975.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="975.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="975.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="975.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="975.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="975.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="975.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="975.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="975.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="975.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="975.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="975.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="975.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="975.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="975.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="975.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="975.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="975.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="975.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="975.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="975.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="975.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="975.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="975.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="975.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1300.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1300.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1300.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1300.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1300.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1300.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1300.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1300.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1300.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1300.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1300.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1300.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1300.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1300.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1300.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1300.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1300.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1300.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1300.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1300.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1300.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1300.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1300.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1300.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1300.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1300.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1300.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1300.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1300.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1300.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1300.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1300.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1300.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1300.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1625.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1625.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1625.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1625.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1625.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1625.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1625.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1625.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1625.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1625.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1625.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1625.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1625.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1625.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1625.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1625.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1625.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1625.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1625.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1625.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1625.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1625.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1625.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1625.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1625.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1625.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1625.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1625.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1625.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1625.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1625.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1625.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1625.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1625.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="1950.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="1950.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="1950.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="1950.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="1950.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="1950.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="1950.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="1950.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="1950.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="1950.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="1950.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="1950.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="1950.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="1950.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="1950.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="1950.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="1950.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="1950.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="1950.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="1950.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="1950.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="1950.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="1950.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="1950.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="1950.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="1950.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="1950.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="1950.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="1950.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="1950.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="1950.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="1950.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="1950.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="1950.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2275.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2275.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2275.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2275.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2275.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2275.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2275.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2275.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2275.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2275.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2275.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2275.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2275.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2275.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2275.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2275.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2275.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2275.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2275.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2275.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2275.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2275.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2275.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2275.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2275.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2275.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2275.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2275.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2275.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2275.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2275.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2275.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2275.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2275.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2600.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2600.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2600.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2600.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2600.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2600.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2600.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2600.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2600.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2600.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2600.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2600.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2600.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2600.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2600.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2600.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2600.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2600.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2600.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2600.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2600.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2600.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2600.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2600.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2600.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2600.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2600.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2600.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2600.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2600.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2600.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2600.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2600.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2600.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="2925.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="2925.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="2925.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="2925.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="2925.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="2925.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="2925.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="2925.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="2925.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="2925.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="2925.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="2925.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="2925.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="2925.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="2925.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="2925.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="2925.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="2925.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="2925.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="2925.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="2925.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="2925.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="2925.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="2925.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="2925.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="2925.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="2925.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="2925.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="2925.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="2925.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="2925.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="2925.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="2925.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="2925.00" inputTorque="-7960.98" torqueLoss="268.68"/> + <Entry inputSpeed="3250.00" inputTorque="-31.96" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="-70.42" torqueLoss="31.96"/> + <Entry inputSpeed="3250.00" inputTorque="-110.07" torqueLoss="33.15"/> + <Entry inputSpeed="3250.00" inputTorque="-149.72" torqueLoss="34.34"/> + <Entry inputSpeed="3250.00" inputTorque="-189.37" torqueLoss="35.53"/> + <Entry inputSpeed="3250.00" inputTorque="-268.68" torqueLoss="37.91"/> + <Entry inputSpeed="3250.00" inputTorque="-347.98" torqueLoss="40.29"/> + <Entry inputSpeed="3250.00" inputTorque="-506.58" torqueLoss="45.04"/> + <Entry inputSpeed="3250.00" inputTorque="-665.19" torqueLoss="49.80"/> + <Entry inputSpeed="3250.00" inputTorque="-823.79" torqueLoss="54.56"/> + <Entry inputSpeed="3250.00" inputTorque="-982.39" torqueLoss="59.32"/> + <Entry inputSpeed="3250.00" inputTorque="-1141.00" torqueLoss="64.08"/> + <Entry inputSpeed="3250.00" inputTorque="-1299.60" torqueLoss="68.83"/> + <Entry inputSpeed="3250.00" inputTorque="-1458.21" torqueLoss="73.59"/> + <Entry inputSpeed="3250.00" inputTorque="-1616.81" torqueLoss="78.35"/> + <Entry inputSpeed="3250.00" inputTorque="-1934.02" torqueLoss="87.87"/> + <Entry inputSpeed="3250.00" inputTorque="-2251.23" torqueLoss="97.38"/> + <Entry inputSpeed="3250.00" inputTorque="-2568.44" torqueLoss="106.90"/> + <Entry inputSpeed="3250.00" inputTorque="-2885.65" torqueLoss="116.42"/> + <Entry inputSpeed="3250.00" inputTorque="-3202.85" torqueLoss="125.93"/> + <Entry inputSpeed="3250.00" inputTorque="-3520.06" torqueLoss="135.45"/> + <Entry inputSpeed="3250.00" inputTorque="-3837.27" torqueLoss="144.96"/> + <Entry inputSpeed="3250.00" inputTorque="-4154.48" torqueLoss="154.48"/> + <Entry inputSpeed="3250.00" inputTorque="-4471.69" torqueLoss="164.00"/> + <Entry inputSpeed="3250.00" inputTorque="-4788.90" torqueLoss="173.51"/> + <Entry inputSpeed="3250.00" inputTorque="-5106.11" torqueLoss="183.03"/> + <Entry inputSpeed="3250.00" inputTorque="-5423.31" torqueLoss="192.55"/> + <Entry inputSpeed="3250.00" inputTorque="-5740.52" torqueLoss="202.06"/> + <Entry inputSpeed="3250.00" inputTorque="-6057.73" torqueLoss="211.58"/> + <Entry inputSpeed="3250.00" inputTorque="-6374.94" torqueLoss="221.09"/> + <Entry inputSpeed="3250.00" inputTorque="-6692.15" torqueLoss="230.61"/> + <Entry inputSpeed="3250.00" inputTorque="-7009.36" torqueLoss="240.13"/> + <Entry inputSpeed="3250.00" inputTorque="-7326.57" torqueLoss="249.64"/> + <Entry inputSpeed="3250.00" inputTorque="-7643.77" torqueLoss="259.16"/> + <Entry inputSpeed="3250.00" inputTorque="-7960.98" torqueLoss="268.68"/> + </TorqueLossMap> + </v2.0:Data> + <Signature> + <Reference URI="#AXLGEAR-6.500" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Axlegear> + <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> + <Data xsi:type="AxleWheelsDataDeclarationType"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5" xsi:type="v2.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </v2.0:Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3" xsi:type="AxleDataDeclarationType"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>false</Steered> + <Tyre> + <v2.0:Data id="TYRE-315_70R22.5" xsi:type="v1.0:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </v2.0:Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> + <Data xsi:type="AuxiliariesDataDeclarationType"> + <Fan> + <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + ESS + AMS</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> + <Data id="Airdrag-N.A." xsi:type="AirDragDataDeclarationType"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.80</CdxA_0> + <TransferredCdxA>5.80</TransferredCdxA> + <DeclaredCdxA>5.80</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue/> + </Reference> + </Signature> + </AirDrag> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll_missingParam.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll_missingParam.xml new file mode 100644 index 0000000000000000000000000000000000000000..1dce2edb9831019936c1d68df1201c89b369f691 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EcoRoll_missingParam.xml @@ -0,0 +1,2137 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-class9_AT_EcoRoll"> + <Manufacturer>TUG Generic</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N.A.</VIN> + <Date>2019-02-27T09:39:05.3188703Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Lorry</VehicleCategory> + <AxleConfiguration>6x2</AxleConfiguration> + <CurbMassChassis>7750</CurbMassChassis> + <GrossVehicleMass>26000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-Generic220kW7.7lEngine"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>Generic 220kW 7.7l Engine</Model> + <CertificationNumber>ENG-Generic 220kW 7.7l Engine</CertificationNumber> + <Date>2019-02-27T09:39:05.3241256Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>7700</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>219774</RatedPower> + <MaxEngineTorque>1200</MaxEngineTorque> + <WHTCUrban>1.0300</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-144.58" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="-44.58" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="638.00" /> + <Entry engineSpeed="600.00" torque="70.00" fuelConsumption="1601.24" /> + <Entry engineSpeed="600.00" torque="100.00" fuelConsumption="2020.04" /> + <Entry engineSpeed="600.00" torque="200.00" fuelConsumption="3330.71" /> + <Entry engineSpeed="600.00" torque="300.00" fuelConsumption="4651.64" /> + <Entry engineSpeed="600.00" torque="400.00" fuelConsumption="5962.41" /> + <Entry engineSpeed="600.00" torque="500.00" fuelConsumption="7979.12" /> + <Entry engineSpeed="600.00" torque="600.00" fuelConsumption="10025.12" /> + <Entry engineSpeed="800.00" torque="-154.66" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="-54.66" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="914.26" /> + <Entry engineSpeed="800.00" torque="70.00" fuelConsumption="1862.24" /> + <Entry engineSpeed="800.00" torque="100.00" fuelConsumption="2367.75" /> + <Entry engineSpeed="800.00" torque="200.00" fuelConsumption="4006.79" /> + <Entry engineSpeed="800.00" torque="300.00" fuelConsumption="5667.98" /> + <Entry engineSpeed="800.00" torque="400.00" fuelConsumption="7335.35" /> + <Entry engineSpeed="800.00" torque="500.00" fuelConsumption="9511.02" /> + <Entry engineSpeed="800.00" torque="600.00" fuelConsumption="11650.65" /> + <Entry engineSpeed="800.00" torque="700.00" fuelConsumption="13773.98" /> + <Entry engineSpeed="800.00" torque="800.00" fuelConsumption="15797.43" /> + <Entry engineSpeed="800.00" torque="836.00" fuelConsumption="16529.92" /> + <Entry engineSpeed="1000.00" torque="-163.63" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="-63.63" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="1190.51" /> + <Entry engineSpeed="1000.00" torque="70.00" fuelConsumption="2123.23" /> + <Entry engineSpeed="1000.00" torque="100.00" fuelConsumption="2715.46" /> + <Entry engineSpeed="1000.00" torque="200.00" fuelConsumption="4682.86" /> + <Entry engineSpeed="1000.00" torque="300.00" fuelConsumption="6684.33" /> + <Entry engineSpeed="1000.00" torque="400.00" fuelConsumption="8708.28" /> + <Entry engineSpeed="1000.00" torque="500.00" fuelConsumption="11042.92" /> + <Entry engineSpeed="1000.00" torque="600.00" fuelConsumption="13276.18" /> + <Entry engineSpeed="1000.00" torque="700.00" fuelConsumption="15477.76" /> + <Entry engineSpeed="1000.00" torque="800.00" fuelConsumption="17682.68" /> + <Entry engineSpeed="1000.00" torque="900.00" fuelConsumption="19910.32" /> + <Entry engineSpeed="1000.00" torque="1000.00" fuelConsumption="22137.47" /> + <Entry engineSpeed="1000.00" torque="1070.00" fuelConsumption="23687.75" /> + <Entry engineSpeed="1200.00" torque="-174.94" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="-74.94" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="1466.77" /> + <Entry engineSpeed="1200.00" torque="70.00" fuelConsumption="2384.23" /> + <Entry engineSpeed="1200.00" torque="100.00" fuelConsumption="3063.16" /> + <Entry engineSpeed="1200.00" torque="200.00" fuelConsumption="5358.94" /> + <Entry engineSpeed="1200.00" torque="300.00" fuelConsumption="7700.67" /> + <Entry engineSpeed="1200.00" torque="400.00" fuelConsumption="10081.22" /> + <Entry engineSpeed="1200.00" torque="500.00" fuelConsumption="12574.82" /> + <Entry engineSpeed="1200.00" torque="600.00" fuelConsumption="14901.72" /> + <Entry engineSpeed="1200.00" torque="700.00" fuelConsumption="17181.54" /> + <Entry engineSpeed="1200.00" torque="800.00" fuelConsumption="19567.93" /> + <Entry engineSpeed="1200.00" torque="900.00" fuelConsumption="21988.50" /> + <Entry engineSpeed="1200.00" torque="1000.00" fuelConsumption="24410.55" /> + <Entry engineSpeed="1200.00" torque="1100.00" fuelConsumption="26818.12" /> + <Entry engineSpeed="1200.00" torque="1200.00" fuelConsumption="29600.85" /> + <Entry engineSpeed="1400.00" torque="-186.25" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="-86.25" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="1943.23" /> + <Entry engineSpeed="1400.00" torque="70.00" fuelConsumption="2867.47" /> + <Entry engineSpeed="1400.00" torque="100.00" fuelConsumption="3660.90" /> + <Entry engineSpeed="1400.00" torque="200.00" fuelConsumption="6305.67" /> + <Entry engineSpeed="1400.00" torque="300.00" fuelConsumption="9033.23" /> + <Entry engineSpeed="1400.00" torque="400.00" fuelConsumption="11786.02" /> + <Entry engineSpeed="1400.00" torque="500.00" fuelConsumption="14469.48" /> + <Entry engineSpeed="1400.00" torque="600.00" fuelConsumption="17183.33" /> + <Entry engineSpeed="1400.00" torque="700.00" fuelConsumption="20019.01" /> + <Entry engineSpeed="1400.00" torque="800.00" fuelConsumption="22833.01" /> + <Entry engineSpeed="1400.00" torque="900.00" fuelConsumption="25503.81" /> + <Entry engineSpeed="1400.00" torque="1000.00" fuelConsumption="28133.13" /> + <Entry engineSpeed="1400.00" torque="1100.00" fuelConsumption="30822.69" /> + <Entry engineSpeed="1400.00" torque="1200.00" fuelConsumption="33616.50" /> + <Entry engineSpeed="1600.00" torque="-197.57" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="-97.57" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="2390.68" /> + <Entry engineSpeed="1600.00" torque="70.00" fuelConsumption="3375.40" /> + <Entry engineSpeed="1600.00" torque="100.00" fuelConsumption="4270.71" /> + <Entry engineSpeed="1600.00" torque="200.00" fuelConsumption="7255.08" /> + <Entry engineSpeed="1600.00" torque="300.00" fuelConsumption="10395.25" /> + <Entry engineSpeed="1600.00" torque="400.00" fuelConsumption="13532.58" /> + <Entry engineSpeed="1600.00" torque="500.00" fuelConsumption="16706.54" /> + <Entry engineSpeed="1600.00" torque="600.00" fuelConsumption="19830.25" /> + <Entry engineSpeed="1600.00" torque="700.00" fuelConsumption="22960.50" /> + <Entry engineSpeed="1600.00" torque="800.00" fuelConsumption="26109.44" /> + <Entry engineSpeed="1600.00" torque="900.00" fuelConsumption="29158.70" /> + <Entry engineSpeed="1600.00" torque="1000.00" fuelConsumption="32050.23" /> + <Entry engineSpeed="1600.00" torque="1100.00" fuelConsumption="35223.83" /> + <Entry engineSpeed="1600.00" torque="1200.00" fuelConsumption="38415.23" /> + <Entry engineSpeed="1800.00" torque="-204.41" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="-104.41" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="2890.46" /> + <Entry engineSpeed="1800.00" torque="70.00" fuelConsumption="3985.03" /> + <Entry engineSpeed="1800.00" torque="100.00" fuelConsumption="4965.43" /> + <Entry engineSpeed="1800.00" torque="200.00" fuelConsumption="8233.42" /> + <Entry engineSpeed="1800.00" torque="300.00" fuelConsumption="11783.43" /> + <Entry engineSpeed="1800.00" torque="400.00" fuelConsumption="15307.09" /> + <Entry engineSpeed="1800.00" torque="500.00" fuelConsumption="18849.16" /> + <Entry engineSpeed="1800.00" torque="600.00" fuelConsumption="22267.47" /> + <Entry engineSpeed="1800.00" torque="700.00" fuelConsumption="25749.16" /> + <Entry engineSpeed="1800.00" torque="800.00" fuelConsumption="29389.56" /> + <Entry engineSpeed="1800.00" torque="900.00" fuelConsumption="32951.65" /> + <Entry engineSpeed="1800.00" torque="1000.00" fuelConsumption="36567.98" /> + <Entry engineSpeed="1800.00" torque="1100.00" fuelConsumption="40354.88" /> + <Entry engineSpeed="1800.00" torque="1124.00" fuelConsumption="41263.46" /> + <Entry engineSpeed="2000.00" torque="-211.73" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="-111.73" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="3496.10" /> + <Entry engineSpeed="2000.00" torque="70.00" fuelConsumption="4806.79" /> + <Entry engineSpeed="2000.00" torque="100.00" fuelConsumption="5854.51" /> + <Entry engineSpeed="2000.00" torque="200.00" fuelConsumption="9346.91" /> + <Entry engineSpeed="2000.00" torque="300.00" fuelConsumption="13318.20" /> + <Entry engineSpeed="2000.00" torque="400.00" fuelConsumption="17192.16" /> + <Entry engineSpeed="2000.00" torque="500.00" fuelConsumption="21141.10" /> + <Entry engineSpeed="2000.00" torque="600.00" fuelConsumption="25063.69" /> + <Entry engineSpeed="2000.00" torque="700.00" fuelConsumption="28933.73" /> + <Entry engineSpeed="2000.00" torque="800.00" fuelConsumption="33033.20" /> + <Entry engineSpeed="2000.00" torque="900.00" fuelConsumption="37186.49" /> + <Entry engineSpeed="2000.00" torque="1000.00" fuelConsumption="41216.66" /> + <Entry engineSpeed="2000.00" torque="1038.00" fuelConsumption="42697.63" /> + <Entry engineSpeed="2200.00" torque="-225.56" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="-125.56" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="4247.18" /> + <Entry engineSpeed="2200.00" torque="70.00" fuelConsumption="5534.02" /> + <Entry engineSpeed="2200.00" torque="100.00" fuelConsumption="6687.77" /> + <Entry engineSpeed="2200.00" torque="200.00" fuelConsumption="10533.61" /> + <Entry engineSpeed="2200.00" torque="300.00" fuelConsumption="14853.02" /> + <Entry engineSpeed="2200.00" torque="400.00" fuelConsumption="19148.40" /> + <Entry engineSpeed="2200.00" torque="500.00" fuelConsumption="23390.99" /> + <Entry engineSpeed="2200.00" torque="600.00" fuelConsumption="27829.44" /> + <Entry engineSpeed="2200.00" torque="700.00" fuelConsumption="32500.75" /> + <Entry engineSpeed="2200.00" torque="800.00" fuelConsumption="37123.63" /> + <Entry engineSpeed="2200.00" torque="900.00" fuelConsumption="41612.31" /> + <Entry engineSpeed="2200.00" torque="955.00" fuelConsumption="44050.20" /> + <Entry engineSpeed="2400.00" torque="-235.72" fuelConsumption="0.00" /> + <Entry engineSpeed="2400.00" torque="-135.72" fuelConsumption="0.00" /> + <Entry engineSpeed="2400.00" torque="0.00" fuelConsumption="4945.10" /> + <Entry engineSpeed="2400.00" torque="70.00" fuelConsumption="6234.18" /> + <Entry engineSpeed="2400.00" torque="100.00" fuelConsumption="7525.66" /> + <Entry engineSpeed="2400.00" torque="200.00" fuelConsumption="11830.60" /> + <Entry engineSpeed="2400.00" torque="300.00" fuelConsumption="16443.47" /> + <Entry engineSpeed="2400.00" torque="400.00" fuelConsumption="21308.19" /> + <Entry engineSpeed="2400.00" torque="500.00" fuelConsumption="26325.66" /> + <Entry engineSpeed="2400.00" torque="600.00" fuelConsumption="31335.42" /> + <Entry engineSpeed="2400.00" torque="700.00" fuelConsumption="36716.19" /> + <Entry engineSpeed="2400.00" torque="800.00" fuelConsumption="42106.80" /> + <Entry engineSpeed="2400.00" torque="815.00" fuelConsumption="42844.11" /> + <Entry engineSpeed="2500.00" torque="-240.18" fuelConsumption="0.00" /> + <Entry engineSpeed="2500.00" torque="-140.18" fuelConsumption="0.00" /> + <Entry engineSpeed="2500.00" torque="0.00" fuelConsumption="5337.87" /> + <Entry engineSpeed="2500.00" torque="70.00" fuelConsumption="6286.76" /> + <Entry engineSpeed="2500.00" torque="100.00" fuelConsumption="7731.93" /> + <Entry engineSpeed="2500.00" torque="200.00" fuelConsumption="12386.92" /> + <Entry engineSpeed="2500.00" torque="300.00" fuelConsumption="17232.61" /> + <Entry engineSpeed="2500.00" torque="400.00" fuelConsumption="22335.99" /> + <Entry engineSpeed="2500.00" torque="500.00" fuelConsumption="27944.55" /> + <Entry engineSpeed="2500.00" torque="600.00" fuelConsumption="33199.92" /> + <Entry engineSpeed="2500.00" torque="710.00" fuelConsumption="39388.78" /> + <Entry engineSpeed="2600.00" torque="-146.13" fuelConsumption="0.00" /> + <Entry engineSpeed="2600.00" torque="0.00" fuelConsumption="5534.25" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="600.00" dragTorque="-43.58" /> + <Entry engineSpeed="800.00" maxTorque="836.00" dragTorque="-53.66" /> + <Entry engineSpeed="1000.00" maxTorque="1069.52" dragTorque="-62.03" /> + <Entry engineSpeed="1200.00" maxTorque="1200.00" dragTorque="-73.94" /> + <Entry engineSpeed="1400.00" maxTorque="1200.00" dragTorque="-85.25" /> + <Entry engineSpeed="1600.00" maxTorque="1200.00" dragTorque="-96.57" /> + <Entry engineSpeed="1800.00" maxTorque="1123.62" dragTorque="-103.41" /> + <Entry engineSpeed="2000.00" maxTorque="1037.52" dragTorque="-110.73" /> + <Entry engineSpeed="2200.00" maxTorque="953.95" dragTorque="-124.56" /> + <Entry engineSpeed="2400.00" maxTorque="815.35" dragTorque="-134.72" /> + <Entry engineSpeed="2500.00" maxTorque="711.29" dragTorque="-139.18" /> + <Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-145.13" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-Generic220kW7.7lEngine" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-APT-SGenericTqMax1200"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> + <Date>2019-02-27T09:39:05.3400867Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>3.490</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00" /> + <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00" /> + <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00" /> + <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00" /> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00" /> + <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00" /> + <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00" /> + <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00" /> + <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00" /> + <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00" /> + <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00" /> + <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00" /> + <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00" /> + <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00" /> + <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00" /> + <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00" /> + <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00" /> + <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00" /> + <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00" /> + <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00" /> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00" /> + <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00" /> + <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00" /> + <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00" /> + <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00" /> + <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00" /> + <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00" /> + <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00" /> + <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00" /> + <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00" /> + <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00" /> + <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00" /> + <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00" /> + <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00" /> + <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00" /> + <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00" /> + <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00" /> + <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00" /> + <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00" /> + <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00" /> + <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00" /> + <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00" /> + <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00" /> + <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00" /> + <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00" /> + <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00" /> + <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00" /> + <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00" /> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00" /> + <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00" /> + <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00" /> + <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00" /> + <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00" /> + <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00" /> + <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00" /> + <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00" /> + <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00" /> + <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00" /> + <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00" /> + <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00" /> + <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00" /> + <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.860</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.410</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.750</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + <TorqueConverter> + <Data id="TC-APT-SGenericTqMax1200"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79" /> + <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30" /> + <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80" /> + <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31" /> + <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82" /> + <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33" /> + <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83" /> + <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59" /> + <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35" /> + <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11" /> + <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87" /> + <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63" /> + <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40" /> + <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20" /> + <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00" /> + <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34" /> + <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34" /> + <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11" /> + <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52" /> + <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19" /> + <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77" /> + <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00" /> + <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00" /> + <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00" /> + <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00" /> + <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00" /> + <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00" /> + </Characteristics> + </Data> + <Signature> + <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </TorqueConverter> + </Gearbox> + <Axlegear> + <Data id="AXLGEAR-6.500"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-6.500</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>6.500</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="0.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="0.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="0.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="0.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="0.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="0.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="0.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="0.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="0.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="0.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="0.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="0.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="0.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="0.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="0.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="0.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="0.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="0.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="0.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="0.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="0.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="0.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="0.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="0.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="0.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="0.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="0.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="0.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="0.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="0.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="0.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="0.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="325.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="325.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="325.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="325.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="325.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="325.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="325.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="325.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="325.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="325.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="325.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="325.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="325.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="325.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="325.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="325.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="325.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="325.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="325.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="325.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="325.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="325.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="325.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="325.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="325.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="325.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="325.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="325.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="325.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="325.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="325.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="325.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="325.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="650.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="650.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="650.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="650.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="650.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="650.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="650.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="650.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="650.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="650.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="650.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="650.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="650.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="650.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="650.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="650.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="650.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="650.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="650.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="650.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="650.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="650.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="650.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="650.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="650.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="650.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="650.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="650.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="650.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="650.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="650.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="650.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="650.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="975.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="975.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="975.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="975.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="975.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="975.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="975.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="975.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="975.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="975.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="975.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="975.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="975.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="975.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="975.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="975.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="975.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="975.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="975.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="975.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="975.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="975.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="975.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="975.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="975.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="975.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="975.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="975.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="975.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="975.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="975.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="975.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="975.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1300.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1300.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1300.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1300.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1300.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1300.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1300.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1300.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1300.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1300.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1300.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1300.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1300.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1300.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1300.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1300.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1300.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1300.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1300.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1300.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1300.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1300.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1300.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1300.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1300.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1300.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1300.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1300.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1300.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1300.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1300.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1300.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1300.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1625.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1625.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1625.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1625.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1625.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1625.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1625.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1625.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1625.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1625.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1625.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1625.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1625.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1625.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1625.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1625.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1625.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1625.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1625.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1625.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1625.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1625.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1625.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1625.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1625.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1625.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1625.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1625.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1625.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1625.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1625.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1625.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1625.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1950.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1950.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1950.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1950.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1950.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1950.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1950.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1950.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1950.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1950.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1950.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1950.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1950.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1950.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1950.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1950.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1950.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1950.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1950.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1950.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1950.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1950.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1950.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1950.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1950.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1950.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1950.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1950.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1950.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1950.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1950.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1950.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1950.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2275.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2275.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2275.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2275.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2275.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2275.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2275.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2275.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2275.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2275.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2275.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2275.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2275.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2275.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2275.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2275.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2275.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2275.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2275.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2275.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2275.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2275.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2275.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2275.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2275.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2275.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2275.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2275.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2275.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2275.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2275.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2275.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2275.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2600.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2600.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2600.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2600.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2600.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2600.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2600.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2600.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2600.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2600.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2600.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2600.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2600.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2600.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2600.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2600.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2600.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2600.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2600.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2600.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2600.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2600.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2600.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2600.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2600.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2600.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2600.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2600.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2600.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2600.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2600.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2600.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2600.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2925.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2925.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2925.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2925.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2925.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2925.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2925.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2925.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2925.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2925.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2925.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2925.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2925.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2925.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2925.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2925.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2925.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2925.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2925.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2925.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2925.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2925.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2925.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2925.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2925.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2925.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2925.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2925.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2925.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2925.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2925.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2925.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2925.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="3250.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="3250.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="3250.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="3250.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="3250.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="3250.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="3250.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="3250.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="3250.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="3250.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="3250.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="3250.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="3250.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="3250.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="3250.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="3250.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="3250.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="3250.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="3250.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="3250.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="3250.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="3250.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="3250.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="3250.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="3250.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="3250.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="3250.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="3250.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="3250.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="3250.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="3250.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="3250.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="3250.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="0.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="0.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="0.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="0.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="0.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="0.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="0.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="0.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="0.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="0.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="0.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="0.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="0.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="0.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="0.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="0.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="0.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="0.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="0.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="0.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="0.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="0.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="0.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="0.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="0.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="0.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="0.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="0.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="0.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="0.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="0.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="0.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="0.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="325.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="325.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="325.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="325.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="325.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="325.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="325.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="325.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="325.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="325.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="325.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="325.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="325.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="325.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="325.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="325.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="325.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="325.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="325.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="325.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="325.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="325.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="325.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="325.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="325.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="325.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="325.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="325.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="325.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="325.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="325.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="325.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="325.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="650.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="650.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="650.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="650.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="650.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="650.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="650.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="650.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="650.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="650.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="650.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="650.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="650.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="650.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="650.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="650.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="650.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="650.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="650.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="650.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="650.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="650.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="650.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="650.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="650.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="650.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="650.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="650.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="650.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="650.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="650.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="650.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="650.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="975.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="975.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="975.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="975.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="975.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="975.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="975.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="975.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="975.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="975.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="975.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="975.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="975.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="975.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="975.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="975.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="975.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="975.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="975.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="975.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="975.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="975.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="975.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="975.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="975.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="975.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="975.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="975.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="975.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="975.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="975.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="975.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="975.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1300.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1300.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1300.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1300.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1300.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1300.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1300.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1300.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1300.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1300.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1300.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1300.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1300.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1300.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1300.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1300.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1300.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1300.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1300.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1300.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1300.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1300.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1300.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1300.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1300.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1300.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1300.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1300.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1300.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1300.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1300.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1300.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1300.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1625.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1625.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1625.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1625.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1625.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1625.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1625.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1625.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1625.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1625.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1625.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1625.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1625.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1625.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1625.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1625.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1625.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1625.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1625.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1625.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1625.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1625.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1625.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1625.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1625.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1625.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1625.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1625.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1625.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1625.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1625.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1625.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1625.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1950.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1950.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1950.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1950.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1950.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1950.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1950.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1950.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1950.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1950.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1950.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1950.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1950.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1950.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1950.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1950.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1950.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1950.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1950.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1950.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1950.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1950.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1950.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1950.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1950.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1950.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1950.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1950.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1950.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1950.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1950.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1950.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1950.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2275.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2275.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2275.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2275.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2275.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2275.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2275.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2275.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2275.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2275.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2275.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2275.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2275.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2275.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2275.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2275.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2275.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2275.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2275.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2275.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2275.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2275.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2275.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2275.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2275.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2275.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2275.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2275.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2275.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2275.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2275.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2275.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2275.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2600.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2600.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2600.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2600.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2600.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2600.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2600.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2600.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2600.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2600.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2600.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2600.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2600.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2600.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2600.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2600.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2600.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2600.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2600.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2600.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2600.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2600.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2600.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2600.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2600.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2600.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2600.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2600.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2600.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2600.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2600.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2600.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2600.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2925.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2925.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2925.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2925.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2925.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2925.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2925.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2925.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2925.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2925.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2925.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2925.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2925.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2925.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2925.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2925.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2925.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2925.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2925.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2925.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2925.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2925.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2925.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2925.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2925.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2925.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2925.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2925.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2925.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2925.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2925.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2925.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2925.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="3250.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="3250.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="3250.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="3250.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="3250.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="3250.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="3250.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="3250.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="3250.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="3250.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="3250.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="3250.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="3250.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="3250.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="3250.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="3250.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="3250.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="3250.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="3250.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="3250.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="3250.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="3250.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="3250.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="3250.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="3250.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="3250.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="3250.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="3250.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="3250.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="3250.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="3250.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="3250.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="3250.00" inputTorque="-7960.98" torqueLoss="268.68" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-6.500" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + ESS + AMS</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.80</CdxA_0> + <TransferredCdxA>5.80</TransferredCdxA> + <DeclaredCdxA>5.80</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EngineStopStart.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EngineStopStart.xml new file mode 100644 index 0000000000000000000000000000000000000000..2e489740785e0ec68309517d0e6b9a0a7c94a922 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_EngineStopStart.xml @@ -0,0 +1,2137 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-class9_AT_EngineStopStart"> + <Manufacturer>TUG Generic</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>N.A.</Model> + <VIN>N.A.</VIN> + <Date>2019-02-27T09:39:05.3188703Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Lorry</VehicleCategory> + <AxleConfiguration>6x2</AxleConfiguration> + <CurbMassChassis>7750</CurbMassChassis> + <GrossVehicleMass>26000</GrossVehicleMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-Generic220kW7.7lEngine"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>Generic 220kW 7.7l Engine</Model> + <CertificationNumber>ENG-Generic 220kW 7.7l Engine</CertificationNumber> + <Date>2019-02-27T09:39:05.3241256Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>7700</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>219774</RatedPower> + <MaxEngineTorque>1200</MaxEngineTorque> + <WHTCUrban>1.0300</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="600.00" torque="-144.58" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="-44.58" fuelConsumption="0.00" /> + <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="638.00" /> + <Entry engineSpeed="600.00" torque="70.00" fuelConsumption="1601.24" /> + <Entry engineSpeed="600.00" torque="100.00" fuelConsumption="2020.04" /> + <Entry engineSpeed="600.00" torque="200.00" fuelConsumption="3330.71" /> + <Entry engineSpeed="600.00" torque="300.00" fuelConsumption="4651.64" /> + <Entry engineSpeed="600.00" torque="400.00" fuelConsumption="5962.41" /> + <Entry engineSpeed="600.00" torque="500.00" fuelConsumption="7979.12" /> + <Entry engineSpeed="600.00" torque="600.00" fuelConsumption="10025.12" /> + <Entry engineSpeed="800.00" torque="-154.66" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="-54.66" fuelConsumption="0.00" /> + <Entry engineSpeed="800.00" torque="0.00" fuelConsumption="914.26" /> + <Entry engineSpeed="800.00" torque="70.00" fuelConsumption="1862.24" /> + <Entry engineSpeed="800.00" torque="100.00" fuelConsumption="2367.75" /> + <Entry engineSpeed="800.00" torque="200.00" fuelConsumption="4006.79" /> + <Entry engineSpeed="800.00" torque="300.00" fuelConsumption="5667.98" /> + <Entry engineSpeed="800.00" torque="400.00" fuelConsumption="7335.35" /> + <Entry engineSpeed="800.00" torque="500.00" fuelConsumption="9511.02" /> + <Entry engineSpeed="800.00" torque="600.00" fuelConsumption="11650.65" /> + <Entry engineSpeed="800.00" torque="700.00" fuelConsumption="13773.98" /> + <Entry engineSpeed="800.00" torque="800.00" fuelConsumption="15797.43" /> + <Entry engineSpeed="800.00" torque="836.00" fuelConsumption="16529.92" /> + <Entry engineSpeed="1000.00" torque="-163.63" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="-63.63" fuelConsumption="0.00" /> + <Entry engineSpeed="1000.00" torque="0.00" fuelConsumption="1190.51" /> + <Entry engineSpeed="1000.00" torque="70.00" fuelConsumption="2123.23" /> + <Entry engineSpeed="1000.00" torque="100.00" fuelConsumption="2715.46" /> + <Entry engineSpeed="1000.00" torque="200.00" fuelConsumption="4682.86" /> + <Entry engineSpeed="1000.00" torque="300.00" fuelConsumption="6684.33" /> + <Entry engineSpeed="1000.00" torque="400.00" fuelConsumption="8708.28" /> + <Entry engineSpeed="1000.00" torque="500.00" fuelConsumption="11042.92" /> + <Entry engineSpeed="1000.00" torque="600.00" fuelConsumption="13276.18" /> + <Entry engineSpeed="1000.00" torque="700.00" fuelConsumption="15477.76" /> + <Entry engineSpeed="1000.00" torque="800.00" fuelConsumption="17682.68" /> + <Entry engineSpeed="1000.00" torque="900.00" fuelConsumption="19910.32" /> + <Entry engineSpeed="1000.00" torque="1000.00" fuelConsumption="22137.47" /> + <Entry engineSpeed="1000.00" torque="1070.00" fuelConsumption="23687.75" /> + <Entry engineSpeed="1200.00" torque="-174.94" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="-74.94" fuelConsumption="0.00" /> + <Entry engineSpeed="1200.00" torque="0.00" fuelConsumption="1466.77" /> + <Entry engineSpeed="1200.00" torque="70.00" fuelConsumption="2384.23" /> + <Entry engineSpeed="1200.00" torque="100.00" fuelConsumption="3063.16" /> + <Entry engineSpeed="1200.00" torque="200.00" fuelConsumption="5358.94" /> + <Entry engineSpeed="1200.00" torque="300.00" fuelConsumption="7700.67" /> + <Entry engineSpeed="1200.00" torque="400.00" fuelConsumption="10081.22" /> + <Entry engineSpeed="1200.00" torque="500.00" fuelConsumption="12574.82" /> + <Entry engineSpeed="1200.00" torque="600.00" fuelConsumption="14901.72" /> + <Entry engineSpeed="1200.00" torque="700.00" fuelConsumption="17181.54" /> + <Entry engineSpeed="1200.00" torque="800.00" fuelConsumption="19567.93" /> + <Entry engineSpeed="1200.00" torque="900.00" fuelConsumption="21988.50" /> + <Entry engineSpeed="1200.00" torque="1000.00" fuelConsumption="24410.55" /> + <Entry engineSpeed="1200.00" torque="1100.00" fuelConsumption="26818.12" /> + <Entry engineSpeed="1200.00" torque="1200.00" fuelConsumption="29600.85" /> + <Entry engineSpeed="1400.00" torque="-186.25" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="-86.25" fuelConsumption="0.00" /> + <Entry engineSpeed="1400.00" torque="0.00" fuelConsumption="1943.23" /> + <Entry engineSpeed="1400.00" torque="70.00" fuelConsumption="2867.47" /> + <Entry engineSpeed="1400.00" torque="100.00" fuelConsumption="3660.90" /> + <Entry engineSpeed="1400.00" torque="200.00" fuelConsumption="6305.67" /> + <Entry engineSpeed="1400.00" torque="300.00" fuelConsumption="9033.23" /> + <Entry engineSpeed="1400.00" torque="400.00" fuelConsumption="11786.02" /> + <Entry engineSpeed="1400.00" torque="500.00" fuelConsumption="14469.48" /> + <Entry engineSpeed="1400.00" torque="600.00" fuelConsumption="17183.33" /> + <Entry engineSpeed="1400.00" torque="700.00" fuelConsumption="20019.01" /> + <Entry engineSpeed="1400.00" torque="800.00" fuelConsumption="22833.01" /> + <Entry engineSpeed="1400.00" torque="900.00" fuelConsumption="25503.81" /> + <Entry engineSpeed="1400.00" torque="1000.00" fuelConsumption="28133.13" /> + <Entry engineSpeed="1400.00" torque="1100.00" fuelConsumption="30822.69" /> + <Entry engineSpeed="1400.00" torque="1200.00" fuelConsumption="33616.50" /> + <Entry engineSpeed="1600.00" torque="-197.57" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="-97.57" fuelConsumption="0.00" /> + <Entry engineSpeed="1600.00" torque="0.00" fuelConsumption="2390.68" /> + <Entry engineSpeed="1600.00" torque="70.00" fuelConsumption="3375.40" /> + <Entry engineSpeed="1600.00" torque="100.00" fuelConsumption="4270.71" /> + <Entry engineSpeed="1600.00" torque="200.00" fuelConsumption="7255.08" /> + <Entry engineSpeed="1600.00" torque="300.00" fuelConsumption="10395.25" /> + <Entry engineSpeed="1600.00" torque="400.00" fuelConsumption="13532.58" /> + <Entry engineSpeed="1600.00" torque="500.00" fuelConsumption="16706.54" /> + <Entry engineSpeed="1600.00" torque="600.00" fuelConsumption="19830.25" /> + <Entry engineSpeed="1600.00" torque="700.00" fuelConsumption="22960.50" /> + <Entry engineSpeed="1600.00" torque="800.00" fuelConsumption="26109.44" /> + <Entry engineSpeed="1600.00" torque="900.00" fuelConsumption="29158.70" /> + <Entry engineSpeed="1600.00" torque="1000.00" fuelConsumption="32050.23" /> + <Entry engineSpeed="1600.00" torque="1100.00" fuelConsumption="35223.83" /> + <Entry engineSpeed="1600.00" torque="1200.00" fuelConsumption="38415.23" /> + <Entry engineSpeed="1800.00" torque="-204.41" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="-104.41" fuelConsumption="0.00" /> + <Entry engineSpeed="1800.00" torque="0.00" fuelConsumption="2890.46" /> + <Entry engineSpeed="1800.00" torque="70.00" fuelConsumption="3985.03" /> + <Entry engineSpeed="1800.00" torque="100.00" fuelConsumption="4965.43" /> + <Entry engineSpeed="1800.00" torque="200.00" fuelConsumption="8233.42" /> + <Entry engineSpeed="1800.00" torque="300.00" fuelConsumption="11783.43" /> + <Entry engineSpeed="1800.00" torque="400.00" fuelConsumption="15307.09" /> + <Entry engineSpeed="1800.00" torque="500.00" fuelConsumption="18849.16" /> + <Entry engineSpeed="1800.00" torque="600.00" fuelConsumption="22267.47" /> + <Entry engineSpeed="1800.00" torque="700.00" fuelConsumption="25749.16" /> + <Entry engineSpeed="1800.00" torque="800.00" fuelConsumption="29389.56" /> + <Entry engineSpeed="1800.00" torque="900.00" fuelConsumption="32951.65" /> + <Entry engineSpeed="1800.00" torque="1000.00" fuelConsumption="36567.98" /> + <Entry engineSpeed="1800.00" torque="1100.00" fuelConsumption="40354.88" /> + <Entry engineSpeed="1800.00" torque="1124.00" fuelConsumption="41263.46" /> + <Entry engineSpeed="2000.00" torque="-211.73" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="-111.73" fuelConsumption="0.00" /> + <Entry engineSpeed="2000.00" torque="0.00" fuelConsumption="3496.10" /> + <Entry engineSpeed="2000.00" torque="70.00" fuelConsumption="4806.79" /> + <Entry engineSpeed="2000.00" torque="100.00" fuelConsumption="5854.51" /> + <Entry engineSpeed="2000.00" torque="200.00" fuelConsumption="9346.91" /> + <Entry engineSpeed="2000.00" torque="300.00" fuelConsumption="13318.20" /> + <Entry engineSpeed="2000.00" torque="400.00" fuelConsumption="17192.16" /> + <Entry engineSpeed="2000.00" torque="500.00" fuelConsumption="21141.10" /> + <Entry engineSpeed="2000.00" torque="600.00" fuelConsumption="25063.69" /> + <Entry engineSpeed="2000.00" torque="700.00" fuelConsumption="28933.73" /> + <Entry engineSpeed="2000.00" torque="800.00" fuelConsumption="33033.20" /> + <Entry engineSpeed="2000.00" torque="900.00" fuelConsumption="37186.49" /> + <Entry engineSpeed="2000.00" torque="1000.00" fuelConsumption="41216.66" /> + <Entry engineSpeed="2000.00" torque="1038.00" fuelConsumption="42697.63" /> + <Entry engineSpeed="2200.00" torque="-225.56" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="-125.56" fuelConsumption="0.00" /> + <Entry engineSpeed="2200.00" torque="0.00" fuelConsumption="4247.18" /> + <Entry engineSpeed="2200.00" torque="70.00" fuelConsumption="5534.02" /> + <Entry engineSpeed="2200.00" torque="100.00" fuelConsumption="6687.77" /> + <Entry engineSpeed="2200.00" torque="200.00" fuelConsumption="10533.61" /> + <Entry engineSpeed="2200.00" torque="300.00" fuelConsumption="14853.02" /> + <Entry engineSpeed="2200.00" torque="400.00" fuelConsumption="19148.40" /> + <Entry engineSpeed="2200.00" torque="500.00" fuelConsumption="23390.99" /> + <Entry engineSpeed="2200.00" torque="600.00" fuelConsumption="27829.44" /> + <Entry engineSpeed="2200.00" torque="700.00" fuelConsumption="32500.75" /> + <Entry engineSpeed="2200.00" torque="800.00" fuelConsumption="37123.63" /> + <Entry engineSpeed="2200.00" torque="900.00" fuelConsumption="41612.31" /> + <Entry engineSpeed="2200.00" torque="955.00" fuelConsumption="44050.20" /> + <Entry engineSpeed="2400.00" torque="-235.72" fuelConsumption="0.00" /> + <Entry engineSpeed="2400.00" torque="-135.72" fuelConsumption="0.00" /> + <Entry engineSpeed="2400.00" torque="0.00" fuelConsumption="4945.10" /> + <Entry engineSpeed="2400.00" torque="70.00" fuelConsumption="6234.18" /> + <Entry engineSpeed="2400.00" torque="100.00" fuelConsumption="7525.66" /> + <Entry engineSpeed="2400.00" torque="200.00" fuelConsumption="11830.60" /> + <Entry engineSpeed="2400.00" torque="300.00" fuelConsumption="16443.47" /> + <Entry engineSpeed="2400.00" torque="400.00" fuelConsumption="21308.19" /> + <Entry engineSpeed="2400.00" torque="500.00" fuelConsumption="26325.66" /> + <Entry engineSpeed="2400.00" torque="600.00" fuelConsumption="31335.42" /> + <Entry engineSpeed="2400.00" torque="700.00" fuelConsumption="36716.19" /> + <Entry engineSpeed="2400.00" torque="800.00" fuelConsumption="42106.80" /> + <Entry engineSpeed="2400.00" torque="815.00" fuelConsumption="42844.11" /> + <Entry engineSpeed="2500.00" torque="-240.18" fuelConsumption="0.00" /> + <Entry engineSpeed="2500.00" torque="-140.18" fuelConsumption="0.00" /> + <Entry engineSpeed="2500.00" torque="0.00" fuelConsumption="5337.87" /> + <Entry engineSpeed="2500.00" torque="70.00" fuelConsumption="6286.76" /> + <Entry engineSpeed="2500.00" torque="100.00" fuelConsumption="7731.93" /> + <Entry engineSpeed="2500.00" torque="200.00" fuelConsumption="12386.92" /> + <Entry engineSpeed="2500.00" torque="300.00" fuelConsumption="17232.61" /> + <Entry engineSpeed="2500.00" torque="400.00" fuelConsumption="22335.99" /> + <Entry engineSpeed="2500.00" torque="500.00" fuelConsumption="27944.55" /> + <Entry engineSpeed="2500.00" torque="600.00" fuelConsumption="33199.92" /> + <Entry engineSpeed="2500.00" torque="710.00" fuelConsumption="39388.78" /> + <Entry engineSpeed="2600.00" torque="-146.13" fuelConsumption="0.00" /> + <Entry engineSpeed="2600.00" torque="0.00" fuelConsumption="5534.25" /> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="600.00" dragTorque="-43.58" /> + <Entry engineSpeed="800.00" maxTorque="836.00" dragTorque="-53.66" /> + <Entry engineSpeed="1000.00" maxTorque="1069.52" dragTorque="-62.03" /> + <Entry engineSpeed="1200.00" maxTorque="1200.00" dragTorque="-73.94" /> + <Entry engineSpeed="1400.00" maxTorque="1200.00" dragTorque="-85.25" /> + <Entry engineSpeed="1600.00" maxTorque="1200.00" dragTorque="-96.57" /> + <Entry engineSpeed="1800.00" maxTorque="1123.62" dragTorque="-103.41" /> + <Entry engineSpeed="2000.00" maxTorque="1037.52" dragTorque="-110.73" /> + <Entry engineSpeed="2200.00" maxTorque="953.95" dragTorque="-124.56" /> + <Entry engineSpeed="2400.00" maxTorque="815.35" dragTorque="-134.72" /> + <Entry engineSpeed="2500.00" maxTorque="711.29" dragTorque="-139.18" /> + <Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-145.13" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-Generic220kW7.7lEngine" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-APT-SGenericTqMax1200"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> + <Date>2019-02-27T09:39:05.3400867Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>3.490</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00" /> + <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00" /> + <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00" /> + <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00" /> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00" /> + <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00" /> + <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00" /> + <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00" /> + <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00" /> + <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00" /> + <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00" /> + <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00" /> + <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00" /> + <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00" /> + <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00" /> + <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00" /> + <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00" /> + <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00" /> + <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00" /> + <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00" /> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00" /> + <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00" /> + <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00" /> + <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00" /> + <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00" /> + <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00" /> + <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00" /> + <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00" /> + <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00" /> + <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00" /> + <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00" /> + <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00" /> + <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00" /> + <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00" /> + <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00" /> + <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00" /> + <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00" /> + <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00" /> + <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00" /> + <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00" /> + <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00" /> + <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00" /> + <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00" /> + <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00" /> + <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00" /> + <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00" /> + <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00" /> + <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00" /> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00" /> + <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00" /> + <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00" /> + <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00" /> + <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00" /> + <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00" /> + <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00" /> + <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00" /> + <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00" /> + <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00" /> + <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00" /> + <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00" /> + <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00" /> + <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.860</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.410</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.750</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + <TorqueConverter> + <Data id="TC-APT-SGenericTqMax1200"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79" /> + <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30" /> + <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80" /> + <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31" /> + <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82" /> + <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33" /> + <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83" /> + <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59" /> + <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35" /> + <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11" /> + <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87" /> + <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63" /> + <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40" /> + <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20" /> + <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00" /> + <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34" /> + <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34" /> + <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11" /> + <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52" /> + <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19" /> + <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77" /> + <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00" /> + <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00" /> + <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00" /> + <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00" /> + <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00" /> + <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00" /> + </Characteristics> + </Data> + <Signature> + <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </TorqueConverter> + </Gearbox> + <Axlegear> + <Data id="AXLGEAR-6.500"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-6.500</CertificationNumber> + <Date>2019-02-27T09:39:05.3410801Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>6.500</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="0.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="0.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="0.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="0.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="0.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="0.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="0.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="0.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="0.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="0.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="0.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="0.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="0.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="0.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="0.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="0.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="0.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="0.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="0.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="0.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="0.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="0.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="0.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="0.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="0.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="0.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="0.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="0.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="0.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="0.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="0.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="0.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="325.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="325.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="325.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="325.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="325.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="325.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="325.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="325.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="325.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="325.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="325.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="325.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="325.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="325.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="325.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="325.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="325.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="325.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="325.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="325.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="325.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="325.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="325.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="325.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="325.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="325.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="325.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="325.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="325.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="325.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="325.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="325.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="325.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="650.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="650.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="650.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="650.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="650.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="650.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="650.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="650.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="650.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="650.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="650.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="650.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="650.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="650.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="650.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="650.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="650.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="650.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="650.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="650.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="650.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="650.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="650.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="650.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="650.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="650.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="650.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="650.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="650.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="650.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="650.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="650.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="650.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="975.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="975.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="975.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="975.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="975.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="975.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="975.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="975.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="975.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="975.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="975.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="975.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="975.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="975.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="975.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="975.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="975.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="975.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="975.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="975.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="975.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="975.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="975.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="975.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="975.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="975.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="975.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="975.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="975.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="975.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="975.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="975.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="975.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1300.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1300.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1300.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1300.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1300.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1300.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1300.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1300.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1300.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1300.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1300.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1300.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1300.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1300.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1300.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1300.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1300.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1300.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1300.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1300.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1300.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1300.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1300.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1300.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1300.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1300.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1300.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1300.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1300.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1300.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1300.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1300.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1300.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1625.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1625.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1625.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1625.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1625.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1625.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1625.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1625.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1625.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1625.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1625.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1625.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1625.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1625.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1625.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1625.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1625.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1625.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1625.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1625.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1625.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1625.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1625.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1625.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1625.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1625.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1625.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1625.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1625.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1625.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1625.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1625.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1625.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1950.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1950.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1950.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1950.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1950.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1950.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1950.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1950.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1950.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1950.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1950.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1950.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1950.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1950.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1950.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1950.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1950.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1950.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1950.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1950.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1950.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1950.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1950.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1950.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1950.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1950.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1950.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1950.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1950.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1950.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1950.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1950.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1950.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2275.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2275.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2275.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2275.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2275.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2275.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2275.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2275.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2275.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2275.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2275.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2275.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2275.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2275.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2275.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2275.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2275.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2275.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2275.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2275.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2275.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2275.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2275.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2275.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2275.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2275.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2275.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2275.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2275.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2275.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2275.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2275.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2275.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2600.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2600.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2600.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2600.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2600.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2600.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2600.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2600.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2600.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2600.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2600.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2600.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2600.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2600.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2600.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2600.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2600.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2600.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2600.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2600.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2600.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2600.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2600.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2600.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2600.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2600.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2600.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2600.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2600.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2600.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2600.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2600.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2600.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2925.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2925.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2925.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2925.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2925.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2925.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2925.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2925.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2925.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2925.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2925.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2925.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2925.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2925.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2925.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2925.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2925.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2925.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2925.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2925.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2925.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2925.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2925.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2925.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2925.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2925.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2925.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2925.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2925.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2925.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2925.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2925.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2925.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="3250.00" inputTorque="31.96" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="70.42" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="110.07" torqueLoss="33.15" /> + <Entry inputSpeed="3250.00" inputTorque="149.72" torqueLoss="34.34" /> + <Entry inputSpeed="3250.00" inputTorque="189.37" torqueLoss="35.53" /> + <Entry inputSpeed="3250.00" inputTorque="268.68" torqueLoss="37.91" /> + <Entry inputSpeed="3250.00" inputTorque="347.98" torqueLoss="40.29" /> + <Entry inputSpeed="3250.00" inputTorque="506.58" torqueLoss="45.04" /> + <Entry inputSpeed="3250.00" inputTorque="665.19" torqueLoss="49.80" /> + <Entry inputSpeed="3250.00" inputTorque="823.79" torqueLoss="54.56" /> + <Entry inputSpeed="3250.00" inputTorque="982.39" torqueLoss="59.32" /> + <Entry inputSpeed="3250.00" inputTorque="1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="3250.00" inputTorque="1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="3250.00" inputTorque="1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="3250.00" inputTorque="1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="3250.00" inputTorque="1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="3250.00" inputTorque="2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="3250.00" inputTorque="2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="3250.00" inputTorque="2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="3250.00" inputTorque="3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="3250.00" inputTorque="3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="3250.00" inputTorque="3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="3250.00" inputTorque="4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="3250.00" inputTorque="4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="3250.00" inputTorque="4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="3250.00" inputTorque="5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="3250.00" inputTorque="5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="3250.00" inputTorque="5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="3250.00" inputTorque="6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="3250.00" inputTorque="6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="3250.00" inputTorque="6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="3250.00" inputTorque="7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="3250.00" inputTorque="7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="3250.00" inputTorque="7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="3250.00" inputTorque="7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="0.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="0.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="0.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="0.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="0.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="0.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="0.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="0.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="0.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="0.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="0.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="0.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="0.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="0.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="0.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="0.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="0.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="0.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="0.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="0.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="0.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="0.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="0.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="0.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="0.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="0.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="0.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="0.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="0.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="0.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="0.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="0.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="0.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="0.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="325.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="325.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="325.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="325.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="325.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="325.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="325.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="325.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="325.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="325.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="325.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="325.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="325.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="325.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="325.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="325.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="325.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="325.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="325.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="325.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="325.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="325.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="325.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="325.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="325.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="325.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="325.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="325.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="325.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="325.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="325.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="325.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="325.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="325.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="650.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="650.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="650.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="650.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="650.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="650.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="650.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="650.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="650.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="650.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="650.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="650.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="650.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="650.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="650.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="650.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="650.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="650.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="650.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="650.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="650.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="650.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="650.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="650.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="650.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="650.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="650.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="650.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="650.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="650.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="650.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="650.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="650.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="650.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="975.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="975.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="975.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="975.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="975.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="975.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="975.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="975.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="975.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="975.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="975.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="975.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="975.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="975.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="975.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="975.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="975.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="975.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="975.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="975.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="975.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="975.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="975.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="975.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="975.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="975.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="975.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="975.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="975.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="975.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="975.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="975.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="975.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="975.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1300.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1300.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1300.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1300.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1300.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1300.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1300.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1300.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1300.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1300.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1300.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1300.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1300.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1300.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1300.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1300.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1300.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1300.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1300.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1300.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1300.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1300.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1300.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1300.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1300.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1300.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1300.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1300.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1300.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1300.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1300.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1300.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1300.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1300.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1625.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1625.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1625.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1625.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1625.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1625.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1625.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1625.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1625.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1625.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1625.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1625.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1625.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1625.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1625.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1625.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1625.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1625.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1625.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1625.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1625.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1625.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1625.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1625.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1625.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1625.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1625.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1625.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1625.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1625.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1625.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1625.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1625.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1625.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="1950.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="1950.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="1950.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="1950.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="1950.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="1950.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="1950.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="1950.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="1950.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="1950.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="1950.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="1950.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="1950.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="1950.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="1950.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="1950.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="1950.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="1950.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="1950.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="1950.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="1950.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="1950.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="1950.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="1950.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="1950.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="1950.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="1950.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="1950.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="1950.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="1950.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="1950.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="1950.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="1950.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="1950.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2275.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2275.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2275.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2275.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2275.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2275.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2275.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2275.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2275.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2275.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2275.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2275.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2275.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2275.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2275.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2275.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2275.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2275.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2275.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2275.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2275.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2275.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2275.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2275.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2275.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2275.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2275.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2275.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2275.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2275.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2275.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2275.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2275.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2275.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2600.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2600.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2600.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2600.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2600.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2600.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2600.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2600.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2600.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2600.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2600.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2600.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2600.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2600.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2600.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2600.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2600.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2600.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2600.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2600.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2600.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2600.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2600.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2600.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2600.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2600.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2600.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2600.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2600.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2600.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2600.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2600.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2600.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2600.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="2925.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="2925.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="2925.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="2925.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="2925.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="2925.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="2925.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="2925.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="2925.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="2925.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="2925.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="2925.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="2925.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="2925.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="2925.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="2925.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="2925.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="2925.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="2925.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="2925.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="2925.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="2925.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="2925.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="2925.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="2925.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="2925.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="2925.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="2925.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="2925.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="2925.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="2925.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="2925.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="2925.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="2925.00" inputTorque="-7960.98" torqueLoss="268.68" /> + <Entry inputSpeed="3250.00" inputTorque="-31.96" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="-70.42" torqueLoss="31.96" /> + <Entry inputSpeed="3250.00" inputTorque="-110.07" torqueLoss="33.15" /> + <Entry inputSpeed="3250.00" inputTorque="-149.72" torqueLoss="34.34" /> + <Entry inputSpeed="3250.00" inputTorque="-189.37" torqueLoss="35.53" /> + <Entry inputSpeed="3250.00" inputTorque="-268.68" torqueLoss="37.91" /> + <Entry inputSpeed="3250.00" inputTorque="-347.98" torqueLoss="40.29" /> + <Entry inputSpeed="3250.00" inputTorque="-506.58" torqueLoss="45.04" /> + <Entry inputSpeed="3250.00" inputTorque="-665.19" torqueLoss="49.80" /> + <Entry inputSpeed="3250.00" inputTorque="-823.79" torqueLoss="54.56" /> + <Entry inputSpeed="3250.00" inputTorque="-982.39" torqueLoss="59.32" /> + <Entry inputSpeed="3250.00" inputTorque="-1141.00" torqueLoss="64.08" /> + <Entry inputSpeed="3250.00" inputTorque="-1299.60" torqueLoss="68.83" /> + <Entry inputSpeed="3250.00" inputTorque="-1458.21" torqueLoss="73.59" /> + <Entry inputSpeed="3250.00" inputTorque="-1616.81" torqueLoss="78.35" /> + <Entry inputSpeed="3250.00" inputTorque="-1934.02" torqueLoss="87.87" /> + <Entry inputSpeed="3250.00" inputTorque="-2251.23" torqueLoss="97.38" /> + <Entry inputSpeed="3250.00" inputTorque="-2568.44" torqueLoss="106.90" /> + <Entry inputSpeed="3250.00" inputTorque="-2885.65" torqueLoss="116.42" /> + <Entry inputSpeed="3250.00" inputTorque="-3202.85" torqueLoss="125.93" /> + <Entry inputSpeed="3250.00" inputTorque="-3520.06" torqueLoss="135.45" /> + <Entry inputSpeed="3250.00" inputTorque="-3837.27" torqueLoss="144.96" /> + <Entry inputSpeed="3250.00" inputTorque="-4154.48" torqueLoss="154.48" /> + <Entry inputSpeed="3250.00" inputTorque="-4471.69" torqueLoss="164.00" /> + <Entry inputSpeed="3250.00" inputTorque="-4788.90" torqueLoss="173.51" /> + <Entry inputSpeed="3250.00" inputTorque="-5106.11" torqueLoss="183.03" /> + <Entry inputSpeed="3250.00" inputTorque="-5423.31" torqueLoss="192.55" /> + <Entry inputSpeed="3250.00" inputTorque="-5740.52" torqueLoss="202.06" /> + <Entry inputSpeed="3250.00" inputTorque="-6057.73" torqueLoss="211.58" /> + <Entry inputSpeed="3250.00" inputTorque="-6374.94" torqueLoss="221.09" /> + <Entry inputSpeed="3250.00" inputTorque="-6692.15" torqueLoss="230.61" /> + <Entry inputSpeed="3250.00" inputTorque="-7009.36" torqueLoss="240.13" /> + <Entry inputSpeed="3250.00" inputTorque="-7326.57" torqueLoss="249.64" /> + <Entry inputSpeed="3250.00" inputTorque="-7643.77" torqueLoss="259.16" /> + <Entry inputSpeed="3250.00" inputTorque="-7960.98" torqueLoss="268.68" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-6.500" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R22.5"> + <Manufacturer>TUG Generic</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R22.5" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + ESS + AMS</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-N.A."> + <Manufacturer>TUG Generic</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>N.A.</CertificationNumber> + <Date>2019-02-27T09:39:05.3510849Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.80</CdxA_0> + <TransferredCdxA>5.80</TransferredCdxA> + <DeclaredCdxA>5.80</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-N.A." xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCC.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCC.xml index 339a029dc5437bcff94d2366bbc0bc136c7eb3d1..090d95bde0da0e95974a6722e063159b83efa27a 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCC.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCC.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> <Vehicle id="VEH-class9_Class-9_9t0"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCCEcoRoll.xml b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCCEcoRoll.xml new file mode 100644 index 0000000000000000000000000000000000000000..bdfd833130ebaff44991bc322607ea2ddae29686 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/ADAS/Group9_AT_PCCEcoRoll.xml @@ -0,0 +1,1402 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <Vehicle id="VEH-class9_Class-9_9t0_PCCEcoRoll"> + <Manufacturer>Generic Vendor</Manufacturer> + <ManufacturerAddress>N.A.</ManufacturerAddress> + <Model>class 9_Class-9_9t0</Model> + <VIN>standard values</VIN> + <Date>2017-09-26T13:14:56.9056236Z</Date> + <LegislativeClass>N3</LegislativeClass> + <VehicleCategory>Rigid Truck</VehicleCategory> + <AxleConfiguration>6x2</AxleConfiguration> + <CurbMassChassis>9300</CurbMassChassis> + <GrossVehicleMass>40000</GrossVehicleMass> + <IdlingSpeed>100</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <PTO> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <ADAS> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components> + <Engine> + <Data id="ENG-350kW_IVT_12l"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>350kW_IVT_12l</Model> + <CertificationNumber>ENG-350kW_IVT_12l</CertificationNumber> + <Date>2017-09-26T13:14:56.9524682Z</Date> + <AppVersion>VectoCore</AppVersion> + <Displacement>12700</Displacement> + <IdlingSpeed>600</IdlingSpeed> + <RatedSpeed>1736</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHTCUrban>1.0400</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>Diesel CI</FuelType> + <FuelConsumptionMap> +<Entry engineSpeed='600.00' torque='-138.00' fuelConsumption='0.00'/> +<Entry engineSpeed='600.00' torque='0.00' fuelConsumption='1488.18'/> +<Entry engineSpeed='600.00' torque='216.90' fuelConsumption='3609.53'/> +<Entry engineSpeed='600.00' torque='433.80' fuelConsumption='6055.65'/> +<Entry engineSpeed='600.00' torque='650.70' fuelConsumption='8756.65'/> +<Entry engineSpeed='600.00' torque='867.60' fuelConsumption='10922.44'/> +<Entry engineSpeed='600.00' torque='1084.50' fuelConsumption='13315.08'/> +<Entry engineSpeed='600.00' torque='1301.40' fuelConsumption='15886.96'/> +<Entry engineSpeed='600.00' torque='1518.30' fuelConsumption='18459.52'/> +<Entry engineSpeed='600.00' torque='1735.20' fuelConsumption='21032.07'/> +<Entry engineSpeed='600.00' torque='1952.10' fuelConsumption='23604.64'/> +<Entry engineSpeed='600.00' torque='2169.00' fuelConsumption='26177.20'/> +<Entry engineSpeed='748.90' torque='-141.34' fuelConsumption='0.00'/> +<Entry engineSpeed='748.90' torque='0.00' fuelConsumption='1807.12'/> +<Entry engineSpeed='748.90' torque='216.90' fuelConsumption='4373.53'/> +<Entry engineSpeed='748.90' torque='433.80' fuelConsumption='7475.64'/> +<Entry engineSpeed='748.90' torque='650.70' fuelConsumption='10457.98'/> +<Entry engineSpeed='748.90' torque='867.60' fuelConsumption='13478.84'/> +<Entry engineSpeed='748.90' torque='1084.50' fuelConsumption='16596.51'/> +<Entry engineSpeed='748.90' torque='1301.40' fuelConsumption='19894.53'/> +<Entry engineSpeed='748.90' torque='1518.30' fuelConsumption='23170.22'/> +<Entry engineSpeed='748.90' torque='1735.20' fuelConsumption='26588.36'/> +<Entry engineSpeed='748.90' torque='1952.10' fuelConsumption='29968.67'/> +<Entry engineSpeed='748.90' torque='2169.00' fuelConsumption='33353.96'/> +<Entry engineSpeed='897.80' torque='-146.90' fuelConsumption='0.00'/> +<Entry engineSpeed='897.80' torque='0.00' fuelConsumption='2408.37'/> +<Entry engineSpeed='897.80' torque='216.90' fuelConsumption='5478.92'/> +<Entry engineSpeed='897.80' torque='433.80' fuelConsumption='8922.38'/> +<Entry engineSpeed='897.80' torque='650.70' fuelConsumption='12260.27'/> +<Entry engineSpeed='897.80' torque='867.60' fuelConsumption='15955.34'/> +<Entry engineSpeed='897.80' torque='1084.50' fuelConsumption='19735.59'/> +<Entry engineSpeed='897.80' torque='1301.40' fuelConsumption='23532.52'/> +<Entry engineSpeed='897.80' torque='1518.30' fuelConsumption='27401.60'/> +<Entry engineSpeed='897.80' torque='1735.20' fuelConsumption='31431.48'/> +<Entry engineSpeed='897.80' torque='1952.10' fuelConsumption='35551.49'/> +<Entry engineSpeed='897.80' torque='2169.00' fuelConsumption='39938.19'/> +<Entry engineSpeed='1046.70' torque='-154.57' fuelConsumption='0.00'/> +<Entry engineSpeed='1046.70' torque='0.00' fuelConsumption='3027.57'/> +<Entry engineSpeed='1046.70' torque='216.90' fuelConsumption='6421.99'/> +<Entry engineSpeed='1046.70' torque='433.80' fuelConsumption='10081.43'/> +<Entry engineSpeed='1046.70' torque='650.70' fuelConsumption='14038.36'/> +<Entry engineSpeed='1046.70' torque='867.60' fuelConsumption='18377.96'/> +<Entry engineSpeed='1046.70' torque='1084.50' fuelConsumption='22757.72'/> +<Entry engineSpeed='1046.70' torque='1301.40' fuelConsumption='26988.68'/> +<Entry engineSpeed='1046.70' torque='1518.30' fuelConsumption='31260.26'/> +<Entry engineSpeed='1046.70' torque='1735.20' fuelConsumption='35743.42'/> +<Entry engineSpeed='1046.70' torque='1952.10' fuelConsumption='40628.34'/> +<Entry engineSpeed='1046.70' torque='2169.00' fuelConsumption='45412.29'/> +<Entry engineSpeed='1195.57' torque='-164.62' fuelConsumption='0.00'/> +<Entry engineSpeed='1195.57' torque='0.00' fuelConsumption='3363.15'/> +<Entry engineSpeed='1195.57' torque='216.90' fuelConsumption='7411.44'/> +<Entry engineSpeed='1195.57' torque='433.80' fuelConsumption='11737.72'/> +<Entry engineSpeed='1195.57' torque='650.70' fuelConsumption='16263.23'/> +<Entry engineSpeed='1195.57' torque='867.60' fuelConsumption='20856.24'/> +<Entry engineSpeed='1195.57' torque='1084.50' fuelConsumption='25670.77'/> +<Entry engineSpeed='1195.57' torque='1301.40' fuelConsumption='30672.09'/> +<Entry engineSpeed='1195.57' torque='1518.30' fuelConsumption='35685.67'/> +<Entry engineSpeed='1195.57' torque='1735.20' fuelConsumption='41218.25'/> +<Entry engineSpeed='1195.57' torque='1952.10' fuelConsumption='47091.04'/> +<Entry engineSpeed='1195.57' torque='2169.00' fuelConsumption='52361.49'/> +<Entry engineSpeed='1359.19' torque='-181.84' fuelConsumption='0.00'/> +<Entry engineSpeed='1359.19' torque='0.00' fuelConsumption='4184.19'/> +<Entry engineSpeed='1359.19' torque='216.90' fuelConsumption='8561.28'/> +<Entry engineSpeed='1359.19' torque='433.80' fuelConsumption='13381.18'/> +<Entry engineSpeed='1359.19' torque='650.70' fuelConsumption='18349.57'/> +<Entry engineSpeed='1359.19' torque='867.60' fuelConsumption='23932.35'/> +<Entry engineSpeed='1359.19' torque='1084.50' fuelConsumption='29647.63'/> +<Entry engineSpeed='1359.19' torque='1301.40' fuelConsumption='35157.23'/> +<Entry engineSpeed='1359.19' torque='1518.30' fuelConsumption='40858.29'/> +<Entry engineSpeed='1359.19' torque='1735.20' fuelConsumption='46761.70'/> +<Entry engineSpeed='1359.19' torque='1952.10' fuelConsumption='53042.06'/> +<Entry engineSpeed='1359.19' torque='2169.00' fuelConsumption='59818.87'/> +<Entry engineSpeed='1484.00' torque='-199.19' fuelConsumption='0.00'/> +<Entry engineSpeed='1484.00' torque='0.00' fuelConsumption='4778.54'/> +<Entry engineSpeed='1484.00' torque='216.90' fuelConsumption='9374.62'/> +<Entry engineSpeed='1484.00' torque='433.80' fuelConsumption='14744.80'/> +<Entry engineSpeed='1484.00' torque='650.70' fuelConsumption='20327.76'/> +<Entry engineSpeed='1484.00' torque='867.60' fuelConsumption='26067.43'/> +<Entry engineSpeed='1484.00' torque='1084.50' fuelConsumption='31952.86'/> +<Entry engineSpeed='1484.00' torque='1301.40' fuelConsumption='38111.10'/> +<Entry engineSpeed='1484.00' torque='1518.30' fuelConsumption='44443.35'/> +<Entry engineSpeed='1484.00' torque='1735.20' fuelConsumption='51470.04'/> +<Entry engineSpeed='1484.00' torque='1952.10' fuelConsumption='58756.61'/> +<Entry engineSpeed='1484.00' torque='2169.00' fuelConsumption='65464.76'/> +<Entry engineSpeed='1608.90' torque='-218.26' fuelConsumption='0.00'/> +<Entry engineSpeed='1608.90' torque='0.00' fuelConsumption='5366.63'/> +<Entry engineSpeed='1608.90' torque='216.90' fuelConsumption='10403.91'/> +<Entry engineSpeed='1608.90' torque='433.80' fuelConsumption='16163.11'/> +<Entry engineSpeed='1608.90' torque='650.70' fuelConsumption='22182.12'/> +<Entry engineSpeed='1608.90' torque='867.60' fuelConsumption='28597.95'/> +<Entry engineSpeed='1608.90' torque='1084.50' fuelConsumption='34917.01'/> +<Entry engineSpeed='1608.90' torque='1301.40' fuelConsumption='41482.64'/> +<Entry engineSpeed='1608.90' torque='1518.30' fuelConsumption='48448.45'/> +<Entry engineSpeed='1608.90' torque='1735.20' fuelConsumption='56115.31'/> +<Entry engineSpeed='1608.90' torque='1952.10' fuelConsumption='63908.02'/> +<Entry engineSpeed='1608.90' torque='2169.00' fuelConsumption='71473.19'/> +<Entry engineSpeed='1733.80' torque='-234.65' fuelConsumption='0.00'/> +<Entry engineSpeed='1733.80' torque='0.00' fuelConsumption='6131.02'/> +<Entry engineSpeed='1733.80' torque='216.90' fuelConsumption='11766.81'/> +<Entry engineSpeed='1733.80' torque='433.80' fuelConsumption='17828.63'/> +<Entry engineSpeed='1733.80' torque='650.70' fuelConsumption='24479.55'/> +<Entry engineSpeed='1733.80' torque='867.60' fuelConsumption='31562.49'/> +<Entry engineSpeed='1733.80' torque='1084.50' fuelConsumption='38232.16'/> +<Entry engineSpeed='1733.80' torque='1301.40' fuelConsumption='45509.86'/> +<Entry engineSpeed='1733.80' torque='1518.30' fuelConsumption='53112.67'/> +<Entry engineSpeed='1733.80' torque='1735.20' fuelConsumption='61204.37'/> +<Entry engineSpeed='1733.80' torque='1952.10' fuelConsumption='69616.48'/> +<Entry engineSpeed='1733.80' torque='2169.00' fuelConsumption='77908.71'/> +<Entry engineSpeed='1858.61' torque='-253.37' fuelConsumption='0.00'/> +<Entry engineSpeed='1858.61' torque='0.00' fuelConsumption='7348.60'/> +<Entry engineSpeed='1858.61' torque='216.90' fuelConsumption='13406.42'/> +<Entry engineSpeed='1858.61' torque='433.80' fuelConsumption='19725.74'/> +<Entry engineSpeed='1858.61' torque='650.70' fuelConsumption='26797.91'/> +<Entry engineSpeed='1858.61' torque='867.60' fuelConsumption='34515.72'/> +<Entry engineSpeed='1858.61' torque='1084.50' fuelConsumption='42106.72'/> +<Entry engineSpeed='1858.61' torque='1301.40' fuelConsumption='50047.02'/> +<Entry engineSpeed='1858.61' torque='1518.30' fuelConsumption='58207.47'/> +<Entry engineSpeed='1858.61' torque='1735.20' fuelConsumption='66630.83'/> +<Entry engineSpeed='1858.61' torque='1952.10' fuelConsumption='75353.62'/> +<Entry engineSpeed='1858.61' torque='2169.00' fuelConsumption='84031.99'/> +<Entry engineSpeed='600.00' torque='-238.00' fuelConsumption='0.00'/> +<Entry engineSpeed='748.90' torque='-241.34' fuelConsumption='0.00'/> +<Entry engineSpeed='897.80' torque='-246.90' fuelConsumption='0.00'/> +<Entry engineSpeed='1046.70' torque='-254.57' fuelConsumption='0.00'/> +<Entry engineSpeed='1195.57' torque='-264.62' fuelConsumption='0.00'/> +<Entry engineSpeed='1359.19' torque='-281.84' fuelConsumption='0.00'/> +<Entry engineSpeed='1484.00' torque='-299.19' fuelConsumption='0.00'/> +<Entry engineSpeed='1608.90' torque='-318.26' fuelConsumption='0.00'/> +<Entry engineSpeed='1733.80' torque='-334.65' fuelConsumption='0.00'/> +<Entry engineSpeed='1858.61' torque='-353.37' fuelConsumption='0.00'/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + </Data> + <Signature> + <Reference URI="#ENG-350kW_IVT_12l" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Engine> + <Gearbox> + <Data id="GBX-APT-SGenericTqMax1200"> + <Manufacturer>Class9_RigidTruck_AT_6x2</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>GBX-APT-S Generic TqMax1200</CertificationNumber> + <Date>2019-09-05T11:08:02.7357578Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-S</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears> + <Gear number="1"> + <Ratio>3.490</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="1300.00" inputTorque="2610.00" torqueLoss="66.00" /> + <Entry inputSpeed="1300.00" inputTorque="2842.00" torqueLoss="71.00" /> + <Entry inputSpeed="1500.00" inputTorque="-812.00" torqueLoss="46.00" /> + <Entry inputSpeed="1500.00" inputTorque="-348.00" torqueLoss="37.00" /> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="13.00" /> + <Entry inputSpeed="1500.00" inputTorque="58.00" torqueLoss="16.00" /> + <Entry inputSpeed="1500.00" inputTorque="290.00" torqueLoss="21.00" /> + <Entry inputSpeed="1500.00" inputTorque="522.00" torqueLoss="26.00" /> + <Entry inputSpeed="1500.00" inputTorque="754.00" torqueLoss="30.00" /> + <Entry inputSpeed="1500.00" inputTorque="986.00" torqueLoss="35.00" /> + <Entry inputSpeed="1500.00" inputTorque="1218.00" torqueLoss="39.00" /> + <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="44.00" /> + <Entry inputSpeed="1500.00" inputTorque="1682.00" torqueLoss="49.00" /> + <Entry inputSpeed="1500.00" inputTorque="1914.00" torqueLoss="53.00" /> + <Entry inputSpeed="1500.00" inputTorque="2146.00" torqueLoss="58.00" /> + <Entry inputSpeed="1500.00" inputTorque="2378.00" torqueLoss="63.00" /> + <Entry inputSpeed="1500.00" inputTorque="2610.00" torqueLoss="67.00" /> + <Entry inputSpeed="1500.00" inputTorque="2842.00" torqueLoss="72.00" /> + <Entry inputSpeed="1700.00" inputTorque="-812.00" torqueLoss="49.00" /> + <Entry inputSpeed="1700.00" inputTorque="-348.00" torqueLoss="39.00" /> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="14.00" /> + <Entry inputSpeed="1700.00" inputTorque="58.00" torqueLoss="17.00" /> + <Entry inputSpeed="1700.00" inputTorque="290.00" torqueLoss="22.00" /> + <Entry inputSpeed="1700.00" inputTorque="522.00" torqueLoss="27.00" /> + <Entry inputSpeed="1700.00" inputTorque="754.00" torqueLoss="31.00" /> + <Entry inputSpeed="1700.00" inputTorque="986.00" torqueLoss="36.00" /> + <Entry inputSpeed="1700.00" inputTorque="1218.00" torqueLoss="41.00" /> + <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="45.00" /> + <Entry inputSpeed="1700.00" inputTorque="1682.00" torqueLoss="50.00" /> + <Entry inputSpeed="1700.00" inputTorque="1914.00" torqueLoss="55.00" /> + <Entry inputSpeed="1700.00" inputTorque="2146.00" torqueLoss="59.00" /> + <Entry inputSpeed="1700.00" inputTorque="2378.00" torqueLoss="64.00" /> + <Entry inputSpeed="1700.00" inputTorque="2610.00" torqueLoss="68.00" /> + <Entry inputSpeed="1700.00" inputTorque="2842.00" torqueLoss="73.00" /> + <Entry inputSpeed="1900.00" inputTorque="-812.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="-348.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="15.00" /> + <Entry inputSpeed="1900.00" inputTorque="58.00" torqueLoss="19.00" /> + <Entry inputSpeed="1900.00" inputTorque="290.00" torqueLoss="23.00" /> + <Entry inputSpeed="1900.00" inputTorque="522.00" torqueLoss="28.00" /> + <Entry inputSpeed="1900.00" inputTorque="754.00" torqueLoss="32.00" /> + <Entry inputSpeed="1900.00" inputTorque="986.00" torqueLoss="37.00" /> + <Entry inputSpeed="1900.00" inputTorque="1218.00" torqueLoss="42.00" /> + <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="46.00" /> + <Entry inputSpeed="1900.00" inputTorque="1682.00" torqueLoss="51.00" /> + <Entry inputSpeed="1900.00" inputTorque="1914.00" torqueLoss="56.00" /> + <Entry inputSpeed="1900.00" inputTorque="2146.00" torqueLoss="60.00" /> + <Entry inputSpeed="1900.00" inputTorque="2378.00" torqueLoss="65.00" /> + <Entry inputSpeed="1900.00" inputTorque="2610.00" torqueLoss="70.00" /> + <Entry inputSpeed="1900.00" inputTorque="2842.00" torqueLoss="74.00" /> + <Entry inputSpeed="2100.00" inputTorque="-812.00" torqueLoss="53.00" /> + <Entry inputSpeed="2100.00" inputTorque="-348.00" torqueLoss="44.00" /> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="16.00" /> + <Entry inputSpeed="2100.00" inputTorque="58.00" torqueLoss="20.00" /> + <Entry inputSpeed="2100.00" inputTorque="290.00" torqueLoss="24.00" /> + <Entry inputSpeed="2100.00" inputTorque="522.00" torqueLoss="29.00" /> + <Entry inputSpeed="2100.00" inputTorque="754.00" torqueLoss="34.00" /> + <Entry inputSpeed="2100.00" inputTorque="986.00" torqueLoss="38.00" /> + <Entry inputSpeed="2100.00" inputTorque="1218.00" torqueLoss="43.00" /> + <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="48.00" /> + <Entry inputSpeed="2100.00" inputTorque="1682.00" torqueLoss="52.00" /> + <Entry inputSpeed="2100.00" inputTorque="1914.00" torqueLoss="57.00" /> + <Entry inputSpeed="2100.00" inputTorque="2146.00" torqueLoss="61.00" /> + <Entry inputSpeed="2100.00" inputTorque="2378.00" torqueLoss="66.00" /> + <Entry inputSpeed="2100.00" inputTorque="2610.00" torqueLoss="71.00" /> + <Entry inputSpeed="2100.00" inputTorque="2842.00" torqueLoss="75.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>1.860</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>1.410</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="145.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="50.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="52.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="54.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="57.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="60.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="68.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="59.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="61.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="63.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="66.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="69.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="77.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="68.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="70.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="75.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="78.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="86.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="91.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="80.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="84.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="87.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="90.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="98.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="103.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="92.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="96.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="99.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="102.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="110.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="115.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="107.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="109.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="111.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="117.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="125.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="130.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="122.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="124.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="126.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="129.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="132.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="140.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="145.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>0.750</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>0.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="0.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="0.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="0.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="0.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="0.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="0.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="2500.00" torqueLoss="220.00" /> + <Entry inputSpeed="600.00" inputTorque="0.00" torqueLoss="48.00" /> + <Entry inputSpeed="600.00" inputTorque="-200.00" torqueLoss="56.00" /> + <Entry inputSpeed="600.00" inputTorque="-400.00" torqueLoss="64.00" /> + <Entry inputSpeed="600.00" inputTorque="-600.00" torqueLoss="72.00" /> + <Entry inputSpeed="600.00" inputTorque="-900.00" torqueLoss="84.00" /> + <Entry inputSpeed="600.00" inputTorque="-1200.00" torqueLoss="96.00" /> + <Entry inputSpeed="600.00" inputTorque="-1600.00" torqueLoss="112.00" /> + <Entry inputSpeed="600.00" inputTorque="-2000.00" torqueLoss="128.00" /> + <Entry inputSpeed="600.00" inputTorque="-2500.00" torqueLoss="148.00" /> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="57.00" /> + <Entry inputSpeed="900.00" inputTorque="-200.00" torqueLoss="65.00" /> + <Entry inputSpeed="900.00" inputTorque="-400.00" torqueLoss="73.00" /> + <Entry inputSpeed="900.00" inputTorque="-600.00" torqueLoss="81.00" /> + <Entry inputSpeed="900.00" inputTorque="-900.00" torqueLoss="93.00" /> + <Entry inputSpeed="900.00" inputTorque="-1200.00" torqueLoss="105.00" /> + <Entry inputSpeed="900.00" inputTorque="-1600.00" torqueLoss="121.00" /> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="137.00" /> + <Entry inputSpeed="900.00" inputTorque="-2500.00" torqueLoss="157.00" /> + <Entry inputSpeed="1200.00" inputTorque="0.00" torqueLoss="66.00" /> + <Entry inputSpeed="1200.00" inputTorque="-200.00" torqueLoss="74.00" /> + <Entry inputSpeed="1200.00" inputTorque="-400.00" torqueLoss="82.00" /> + <Entry inputSpeed="1200.00" inputTorque="-600.00" torqueLoss="90.00" /> + <Entry inputSpeed="1200.00" inputTorque="-900.00" torqueLoss="102.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1200.00" torqueLoss="114.00" /> + <Entry inputSpeed="1200.00" inputTorque="-1600.00" torqueLoss="130.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2000.00" torqueLoss="146.00" /> + <Entry inputSpeed="1200.00" inputTorque="-2500.00" torqueLoss="166.00" /> + <Entry inputSpeed="1600.00" inputTorque="0.00" torqueLoss="78.00" /> + <Entry inputSpeed="1600.00" inputTorque="-200.00" torqueLoss="86.00" /> + <Entry inputSpeed="1600.00" inputTorque="-400.00" torqueLoss="94.00" /> + <Entry inputSpeed="1600.00" inputTorque="-600.00" torqueLoss="102.00" /> + <Entry inputSpeed="1600.00" inputTorque="-900.00" torqueLoss="114.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1200.00" torqueLoss="126.00" /> + <Entry inputSpeed="1600.00" inputTorque="-1600.00" torqueLoss="142.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2000.00" torqueLoss="158.00" /> + <Entry inputSpeed="1600.00" inputTorque="-2500.00" torqueLoss="178.00" /> + <Entry inputSpeed="2000.00" inputTorque="0.00" torqueLoss="90.00" /> + <Entry inputSpeed="2000.00" inputTorque="-200.00" torqueLoss="98.00" /> + <Entry inputSpeed="2000.00" inputTorque="-400.00" torqueLoss="106.00" /> + <Entry inputSpeed="2000.00" inputTorque="-600.00" torqueLoss="114.00" /> + <Entry inputSpeed="2000.00" inputTorque="-900.00" torqueLoss="126.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1200.00" torqueLoss="138.00" /> + <Entry inputSpeed="2000.00" inputTorque="-1600.00" torqueLoss="154.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2000.00" torqueLoss="170.00" /> + <Entry inputSpeed="2000.00" inputTorque="-2500.00" torqueLoss="190.00" /> + <Entry inputSpeed="2500.00" inputTorque="0.00" torqueLoss="105.00" /> + <Entry inputSpeed="2500.00" inputTorque="-200.00" torqueLoss="113.00" /> + <Entry inputSpeed="2500.00" inputTorque="-400.00" torqueLoss="121.00" /> + <Entry inputSpeed="2500.00" inputTorque="-600.00" torqueLoss="129.00" /> + <Entry inputSpeed="2500.00" inputTorque="-900.00" torqueLoss="141.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1200.00" torqueLoss="153.00" /> + <Entry inputSpeed="2500.00" inputTorque="-1600.00" torqueLoss="169.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2000.00" torqueLoss="185.00" /> + <Entry inputSpeed="2500.00" inputTorque="-2500.00" torqueLoss="205.00" /> + <Entry inputSpeed="3000.00" inputTorque="0.00" torqueLoss="120.00" /> + <Entry inputSpeed="3000.00" inputTorque="-200.00" torqueLoss="128.00" /> + <Entry inputSpeed="3000.00" inputTorque="-400.00" torqueLoss="136.00" /> + <Entry inputSpeed="3000.00" inputTorque="-600.00" torqueLoss="144.00" /> + <Entry inputSpeed="3000.00" inputTorque="-900.00" torqueLoss="156.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1200.00" torqueLoss="168.00" /> + <Entry inputSpeed="3000.00" inputTorque="-1600.00" torqueLoss="184.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2000.00" torqueLoss="200.00" /> + <Entry inputSpeed="3000.00" inputTorque="-2500.00" torqueLoss="220.00" /> + </TorqueLossMap> + </Gear> + </Gears> + </Data> + <Signature> + <Reference URI="#GBX-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + <TorqueConverter> + <Data id="TC-APT-SGenericTqMax1200"> + <Manufacturer>Class9_RigidTruck_AT_6x2</Manufacturer> + <Model>APT-S Generic TqMax1200</Model> + <CertificationNumber>N/A</CertificationNumber> + <Date>2019-09-05T11:08:02.7357578Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.80" inputTorqueRef="404.79" /> + <Entry speedRatio="0.1000" torqueRatio="1.71" inputTorqueRef="391.30" /> + <Entry speedRatio="0.2000" torqueRatio="1.61" inputTorqueRef="377.80" /> + <Entry speedRatio="0.3000" torqueRatio="1.52" inputTorqueRef="364.31" /> + <Entry speedRatio="0.4000" torqueRatio="1.42" inputTorqueRef="350.82" /> + <Entry speedRatio="0.5000" torqueRatio="1.33" inputTorqueRef="337.33" /> + <Entry speedRatio="0.6000" torqueRatio="1.23" inputTorqueRef="323.83" /> + <Entry speedRatio="0.6500" torqueRatio="1.19" inputTorqueRef="303.59" /> + <Entry speedRatio="0.7000" torqueRatio="1.14" inputTorqueRef="283.35" /> + <Entry speedRatio="0.7500" torqueRatio="1.09" inputTorqueRef="263.11" /> + <Entry speedRatio="0.8000" torqueRatio="1.04" inputTorqueRef="242.87" /> + <Entry speedRatio="0.8500" torqueRatio="1.00" inputTorqueRef="222.63" /> + <Entry speedRatio="0.9000" torqueRatio="0.95" inputTorqueRef="202.40" /> + <Entry speedRatio="0.9500" torqueRatio="0.95" inputTorqueRef="101.20" /> + <Entry speedRatio="1.0000" torqueRatio="0.95" inputTorqueRef="0.00" /> + <Entry speedRatio="1.1000" torqueRatio="1.00" inputTorqueRef="-40.34" /> + <Entry speedRatio="1.2220" torqueRatio="1.00" inputTorqueRef="-80.34" /> + <Entry speedRatio="1.3750" torqueRatio="1.00" inputTorqueRef="-136.11" /> + <Entry speedRatio="1.5710" torqueRatio="1.00" inputTorqueRef="-216.52" /> + <Entry speedRatio="1.8330" torqueRatio="1.00" inputTorqueRef="-335.19" /> + <Entry speedRatio="2.2000" torqueRatio="1.00" inputTorqueRef="-528.77" /> + <Entry speedRatio="2.5000" torqueRatio="1.00" inputTorqueRef="-721.00" /> + <Entry speedRatio="3.0000" torqueRatio="1.00" inputTorqueRef="-1122.00" /> + <Entry speedRatio="3.5000" torqueRatio="1.00" inputTorqueRef="-1648.00" /> + <Entry speedRatio="4.0000" torqueRatio="1.00" inputTorqueRef="-2326.00" /> + <Entry speedRatio="4.5000" torqueRatio="1.00" inputTorqueRef="-3182.00" /> + <Entry speedRatio="5.0000" torqueRatio="1.00" inputTorqueRef="-4242.00" /> + </Characteristics> + </Data> + <Signature> + <Reference URI="#TC-APT-SGenericTqMax1200" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </TorqueConverter> + </Gearbox> + <Retarder> + <Data id="RET-RET-generic"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>RET-generic</Model> + <CertificationNumber>standard values</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00" /> + <Entry retarderSpeed="100.00" torqueLoss="10.00" /> + <Entry retarderSpeed="200.00" torqueLoss="10.10" /> + <Entry retarderSpeed="300.00" torqueLoss="10.20" /> + <Entry retarderSpeed="400.00" torqueLoss="10.30" /> + <Entry retarderSpeed="500.00" torqueLoss="10.50" /> + <Entry retarderSpeed="600.00" torqueLoss="10.70" /> + <Entry retarderSpeed="700.00" torqueLoss="11.00" /> + <Entry retarderSpeed="800.00" torqueLoss="11.30" /> + <Entry retarderSpeed="900.00" torqueLoss="11.60" /> + <Entry retarderSpeed="1000.00" torqueLoss="12.00" /> + <Entry retarderSpeed="1100.00" torqueLoss="12.40" /> + <Entry retarderSpeed="1200.00" torqueLoss="12.90" /> + <Entry retarderSpeed="1300.00" torqueLoss="13.40" /> + <Entry retarderSpeed="1400.00" torqueLoss="13.90" /> + <Entry retarderSpeed="1500.00" torqueLoss="14.50" /> + <Entry retarderSpeed="1600.00" torqueLoss="15.10" /> + <Entry retarderSpeed="1700.00" torqueLoss="15.80" /> + <Entry retarderSpeed="1800.00" torqueLoss="16.50" /> + <Entry retarderSpeed="1900.00" torqueLoss="17.20" /> + <Entry retarderSpeed="2000.00" torqueLoss="18.00" /> + <Entry retarderSpeed="2100.00" torqueLoss="18.80" /> + <Entry retarderSpeed="2200.00" torqueLoss="19.70" /> + <Entry retarderSpeed="2300.00" torqueLoss="20.60" /> + <Entry retarderSpeed="2400.00" torqueLoss="21.50" /> + <Entry retarderSpeed="2500.00" torqueLoss="22.50" /> + <Entry retarderSpeed="2600.00" torqueLoss="23.50" /> + <Entry retarderSpeed="2700.00" torqueLoss="24.60" /> + <Entry retarderSpeed="2800.00" torqueLoss="25.70" /> + <Entry retarderSpeed="2900.00" torqueLoss="26.80" /> + <Entry retarderSpeed="3000.00" torqueLoss="28.00" /> + </RetarderLossMap> + </Data> + <Signature> + <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Retarder> + <Axlegear> + <Data id="AXLGEAR-2640"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>AXLGEAR-2640</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.640</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-200.00" torqueLoss="8.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="8.00" /> + <Entry inputSpeed="0.00" inputTorque="200.00" torqueLoss="8.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-1253.00" torqueLoss="50.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="50.00" /> + <Entry inputSpeed="5000.00" inputTorque="1253.00" torqueLoss="50.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <Signature> + <Reference URI="#AXLGEAR-2640" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Axlegear> + <AxleWheels> + <Data> + <Axles> + <Axle axleNumber="1"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="TYRE-315_70R225"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0052</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="2"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R225"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0061</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + <Axle axleNumber="3"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="TYRE-315_70R225"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>315/70 R22.5</Model> + <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0052</RRCDeclared> + <FzISO>33350</FzISO> + </Data> + <Signature> + <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data> + <Fan> + <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> + </Fan> + <SteeringPump> + <Technology>Fixed displacement with elec. control</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 1-stage + ESS + AMS</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-genericcabin"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>N.A.</Model> + <CertificationNumber>generic cabin</CertificationNumber> + <Date>2017-09-26T13:14:56.9680955Z</Date> + <AppVersion>VectoCore</AppVersion> + <CdxA_0>5.50</CdxA_0> + <TransferredCdxA>5.50</TransferredCdxA> + <DeclaredCdxA>5.50</DeclaredCdxA> + </Data> + <Signature> + <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments" /> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <DigestValue></DigestValue> + </Reference> + </Signature> + </AirDrag> + </Components> + </Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml index 1fb3b2f6d2991834d3f217ab1d547ab51965bbdb..2abcc0a6799026518aea6383501a518c7a206a5a 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml @@ -1,671 +1,681 @@ <?xml version="1.0" encoding="utf-8"?> -<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 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> - <PrimaryVehicle> - <Data xsi:type="PrimaryVehicleDataType" id="PIF-584956b9e3ab43acaf97"> - <Vehicle xsi:type="VehiclePIFType"> - <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> - <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> - <Model>Generic Model Primary</Model> - <VIN>VEH-1234567890_SmartPS</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeCategory>M3</LegislativeCategory> - <ChassisConfiguration>Bus</ChassisConfiguration> - <AxleConfiguration>6x2</AxleConfiguration> - <Articulated>false</Articulated> - <TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass> - <IdlingSpeed>600</IdlingSpeed> - <RetarderType>Transmission Output Retarder</RetarderType> - <RetarderRatio>1.000</RetarderRatio> - <AngledriveType>None</AngledriveType> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <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> - </ADAS> - <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" /> - <tcl:Entry gear="12" maxTorque="1900" /> - </TorqueLimits> - <Components xsi:type="VehicleComponentsPIFType"> - <Engine> - <Data xsi:type="EngineDataPIFType"> - <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer> - <Model>Bus 6x2 Engine</Model> - <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> - <Date>2017-02-15T11:00:00Z</Date> - <AppVersion>VectoEngine x.y</AppVersion> - <Displacement>12730</Displacement> - <RatedSpeed>1800</RatedSpeed> - <RatedPower>325032</RatedPower> - <MaxEngineTorque>2134</MaxEngineTorque> - <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> - </WHRType> - <Mode> - <IdlingSpeed>600</IdlingSpeed> - <FullLoadAndDragCurve> - <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> - <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> - <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> - <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> - <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> - <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> - <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> - <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> - <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> - <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> - </FullLoadAndDragCurve> - <Fuels> - <FuelType>Diesel CI</FuelType> - </Fuels> - </Mode> - </Data> - </Engine> - <Transmission> - <Data xsi:type="TransmissionDataPIFType"> - <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer> - <Model>Generic 40t Long Haul Truck Gearbox Primary</Model> - <MainCertificationMethod>Standard values</MainCertificationMethod> - <Date>2017-01-11T11:00:00Z</Date> - <AppVersion>3.0.1</AppVersion> - <TransmissionType>AMT</TransmissionType> - <Gears xsi:type="TransmissionGearsPIFType"> - <Gear number="1"> - <Ratio>14.930</Ratio> - <MaxTorque>1900</MaxTorque> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="2"> - <Ratio>11.640</Ratio> - <MaxTorque>1900</MaxTorque> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="3"> - <Ratio>9.020</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="4"> - <Ratio>7.040</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="5"> - <Ratio>5.640</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="6"> - <Ratio>4.400</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="7"> - <Ratio>3.390</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="8"> - <Ratio>2.650</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="9"> - <Ratio>2.050</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="10"> - <Ratio>1.600</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="11"> - <Ratio>1.280</Ratio> - <MaxSpeed>2000</MaxSpeed> - </Gear> - <Gear number="12"> - <Ratio>1.000</Ratio> - </Gear> - </Gears> - </Data> - </Transmission> - <Axlegear> - <Data xsi:type="AxlegearDataPIFType"> - <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> - <Model>Generic 40t Long Haul Truck AxleGear Primary</Model> - <CertificationMethod>Standard values</CertificationMethod> - <Date>2017-01-11T11:00:00Z</Date> - <AppVersion>3.0.1</AppVersion> - <LineType>Single portal axle</LineType> - <Ratio>2.590</Ratio> - </Data> - </Axlegear> - <AxleWheels> - <Data xsi:type="AxleWheelsDataPIFType"> -<!-- <AxleWheels xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> +<VectoOutputMultistep 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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> + <PrimaryVehicle> + <Data xsi:type="PrimaryVehicleDataType" id="PIF-584956b9e3ab43acaf97"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model Primary</Model> + <VIN>VEH-1234567890_SmartPS</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <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> + </ADAS> + <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"/> + <tcl:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer> + <Model>Bus 6x2 Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>1800</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>600</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>Diesel CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox Primary</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear Primary</Model> + <CertificationMethod>Standard values</CertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <!-- <AxleWheels xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> <Data xsi:type="AxleWheelsDataDeclarationType"> ---> <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:Axle axleNumber="3" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</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.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> - </Axles> - </Data> - </AxleWheels> - <Auxiliaries> - <Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType"> - <Fan> - <Technology>Hydraulic driven - Constant displacement pump</Technology> - </Fan> - <SteeringPump> - <Technology axleNumber="1">Variable displacement elec. controlled</Technology> - </SteeringPump> - <ElectricSystem> - <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> - </ElectricSystem> - <PneumaticSystem> - <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> - <CompressorDrive>mechanically</CompressorDrive> - <Clutch>none</Clutch> - <CompressorRatio>1.000</CompressorRatio> - <SmartCompressionSystem>true</SmartCompressionSystem> - <SmartRegenerationSystem>false</SmartRegenerationSystem> - <AirsuspensionControl>electronically</AirsuspensionControl> - <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> - </PneumaticSystem> - <HVAC> - <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> - <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> - </HVAC> - </Data> - </Auxiliaries> - </Components> - </Vehicle> - <InputDataSignature> - <di:Reference URI="#VEH-PrimaryBus_SmartPS"> - <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>KyEUoR+pb/fnqRuLFC53Ft+RhDf+ABAdd1xxsMwH7io=</di:DigestValue> - </di:Reference> - </InputDataSignature> - <ManufacturerRecordSignature> - <di:Reference URI="#RESULT-77ea5cb9575a4fe3b401"> - <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>jIFYjdZEqVpxFinMBSoXvJg8Wl3OjE09xRAnjEgnhhY=</di:DigestValue> - </di:Reference> - </ManufacturerRecordSignature> - <Results> - <Status>success</Status> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Heavy Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> - <Payload unit="kg">1352.52</Payload> - <PassengerCount>19.89</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1555.73</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Heavy Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> - <Payload unit="kg">6762.60</Payload> - <PassengerCount>99.45</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1862.57</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> - <Payload unit="kg">1352.52</Payload> - <PassengerCount>19.89</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1227.15</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> - <Payload unit="kg">6762.60</Payload> - <PassengerCount>99.45</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1483.80</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Suburban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> - <Payload unit="kg">1352.52</Payload> - <PassengerCount>19.89</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1051.58</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33SD</VehicleGroup> - <Mission>Suburban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> - <Payload unit="kg">6762.60</Payload> - <PassengerCount>99.45</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1290.13</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Heavy Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> - <Payload unit="kg">1578.29</Payload> - <PassengerCount>23.21</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1665.49</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Heavy Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> - <Payload unit="kg">7891.43</Payload> - <PassengerCount>116.05</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">2049.48</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> - <Payload unit="kg">1578.29</Payload> - <PassengerCount>23.21</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1312.66</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Urban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> - <Payload unit="kg">7891.43</Payload> - <PassengerCount>116.05</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1630.09</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Suburban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> - <Payload unit="kg">1578.29</Payload> - <PassengerCount>23.21</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1120.08</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P33DD</VehicleGroup> - <Mission>Suburban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> - <Payload unit="kg">7891.43</Payload> - <PassengerCount>116.05</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1411.95</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34SD</VehicleGroup> - <Mission>Interurban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">16239.55</TotalVehicleMass> - <Payload unit="kg">1026.55</Payload> - <PassengerCount>14.46</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">11.82464</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">866.77</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34SD</VehicleGroup> - <Mission>Interurban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> - <Payload unit="kg">4106.21</Payload> - <PassengerCount>57.83</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">976.63</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34SD</VehicleGroup> - <Mission>Coach</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> - <Payload unit="kg">1277.49</Payload> - <PassengerCount>17.99</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">639.08</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34SD</VehicleGroup> - <Mission>Coach</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> - <Payload unit="kg">3193.72</Payload> - <PassengerCount>44.98</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">674.57</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34DD</VehicleGroup> - <Mission>Interurban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">19298.40</TotalVehicleMass> - <Payload unit="kg">1448.40</Payload> - <PassengerCount>20.40</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">13.44807</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">985.77</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34DD</VehicleGroup> - <Mission>Interurban</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> - <Payload unit="kg">5793.60</Payload> - <PassengerCount>81.60</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">1141.12</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34DD</VehicleGroup> - <Mission>Coach</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> - <Payload unit="kg">1853.95</Payload> - <PassengerCount>26.11</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">720.51</CO2> - </Result> - <Result status="success"> - <VehicleGroup>P34DD</VehicleGroup> - <Mission>Coach</Mission> - <SimulationParameters> - <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> - <Payload unit="kg">4634.88</Payload> - <PassengerCount>65.28</PassengerCount> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <Fuel type="Diesel CI"> - <EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption> - </Fuel> - <CO2 unit="g/km">774.60</CO2> - </Result> - </Results> - <ApplicationInformation> - <SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2020-05-27T08:16:48.0278823Z</Date> - </ApplicationInformation> - </Data> - <Signature> - <di:Reference URI="#PIF-584956b9e3ab43acaf97"> - <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>GPW3cyV+VQrDzyGeryMrakfOlD+YUWtdaHz/C2lhxJQ=</di:DigestValue> - </di:Reference> - </Signature> - </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="vif0.1:BusManufacturingStageDataType" id="asdf"> - <HashPreviousStage> +--> + <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:Axle axleNumber="3" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</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.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> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>true</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_SmartPS"> + <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>KyEUoR+pb/fnqRuLFC53Ft+RhDf+ABAdd1xxsMwH7io=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-77ea5cb9575a4fe3b401"> + <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>jIFYjdZEqVpxFinMBSoXvJg8Wl3OjE09xRAnjEgnhhY=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1555.73</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1862.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1227.15</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1483.80</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1051.58</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1290.13</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1665.49</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">2049.48</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1312.66</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1630.09</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1120.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1411.95</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16239.55</TotalVehicleMass> + <Payload unit="kg">1026.55</Payload> + <PassengerCount>14.46</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.82464</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">866.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> + <Payload unit="kg">4106.21</Payload> + <PassengerCount>57.83</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">976.63</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> + <Payload unit="kg">1277.49</Payload> + <PassengerCount>17.99</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">639.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> + <Payload unit="kg">3193.72</Payload> + <PassengerCount>44.98</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">674.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19298.40</TotalVehicleMass> + <Payload unit="kg">1448.40</Payload> + <PassengerCount>20.40</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.44807</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">985.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> + <Payload unit="kg">5793.60</Payload> + <PassengerCount>81.60</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1141.12</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> + <Payload unit="kg">1853.95</Payload> + <PassengerCount>26.11</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">720.51</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> + <Payload unit="kg">4634.88</Payload> + <PassengerCount>65.28</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">774.60</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2020-05-27T08:16:48.0278823Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#PIF-584956b9e3ab43acaf97"> + <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>GPW3cyV+VQrDzyGeryMrakfOlD+YUWtdaHz/C2lhxJQ=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> + <ManufacturingStep stepCount="2"> + <Data xsi:type="vif0.1:BusManufacturingStepDataType" id="asdf"> + <HashPreviousStep> <di:Reference> - <di:DigestMethod Algorithm=""></di:DigestMethod> - <di:DigestValue></di:DigestValue> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> </di:Reference> - </HashPreviousStage> - <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="MST-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8"> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MST-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <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>8300</CorrectedActualMass> - <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <ClassBus>I+II</ClassBus> - <NumberPassengersLowerDeck>30</NumberPassengersLowerDeck> - <NumberPassengersUpperDeck>0</NumberPassengersUpperDeck> - <BodyworkCode>CE</BodyworkCode> - <LowEntry>true</LowEntry> - <HeightIntegratedBody>3000</HeightIntegratedBody> - <VehicleLength>11830</VehicleLength> - <VehicleWidth>2550</VehicleWidth> - <EntranceHeight>120</EntranceHeight> - <DoorDriveTechnology>pneumatic</DoorDriveTechnology> - <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> - <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>6.31</CdxA_0> - <TransferredCdxA>6.32</TransferredCdxA> - <DeclaredCdxA>6.34</DeclaredCdxA> - </Data> - <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> - </Signature> - </v2.8:AirDrag> - <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> - <ElectricSystem> - <LEDLights> - <Interiorlights>false</Interiorlights> - <Dayrunninglights>false</Dayrunninglights> - <Positionlights>false</Positionlights> - <Brakelights>false</Brakelights> - <Headlights>false</Headlights> - </LEDLights> - </ElectricSystem> - <HVAC> - <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 4-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> - <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> - <DoubleGlazing>true</DoubleGlazing> - <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> - <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> - </HVAC> - </Data> - </Auxiliaries> - </Components> - </vif0.1:Vehicle> + <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>8300</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>I+II</ClassBus> + <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>11830</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>120</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <v2.4:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <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> + </Signature> + </v2.4:AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>false</Dayrunninglights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>7</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2020-05-27T08:16:48.0278823Z</Date> + <Date>2020-05-27T08:16:48.0278823Z</Date> </ApplicationInformation> </Data> <Signature> <di:Reference> - <di:DigestMethod Algorithm=""></di:DigestMethod> - <di:DigestValue></di:DigestValue> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> \ No newline at end of file + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41.RSLT_VIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41.RSLT_VIF.xml index edac9d402239cda727e06804182bcdf5881eb98f..dbdda181ffeb2f7b0cecb5b5bbd23ae5c7cd8288 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41.RSLT_VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41.RSLT_VIF.xml @@ -1,5 +1,11 @@ <?xml version="1.0" encoding="utf-8"?> -<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 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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:v2.3" + +xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-4121ae4751874cefa376"> <Vehicle xsi:type="VehiclePIFType"> @@ -41,9 +47,9 @@ <RatedPower>220000</RatedPower> <MaxEngineTorque>1100</MaxEngineTorque> <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> + <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> + <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> + <v2.3:ElectricalOutput>false</v2.3:ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>700</IdlingSpeed> @@ -553,4 +559,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_AT-P.RSLT_VIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_AT-P.RSLT_VIF.xml index 2e2d5f6e986c980bc220fdd7a75b63ec16449af7..65e0097fe1b5ddf4cc66a9dba38794c2838219c9 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_AT-P.RSLT_VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_AT-P.RSLT_VIF.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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:v2.3" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-04fd187f166a4d89aa84"> <Vehicle xsi:type="VehiclePIFType"> @@ -41,9 +41,9 @@ <RatedPower>220000</RatedPower> <MaxEngineTorque>1100</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>700</IdlingSpeed> @@ -540,4 +540,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart.xml index 4219c8578373897a6e02b6a4b4c16853defb697d..e7407b8a112453950acd3890e4045eb8806f3f07 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,18 +24,18 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic primary bus 41 Engine</Model> @@ -209,7 +218,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -218,10 +227,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox > + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" > <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>AT 6 Gear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1194,7 +1203,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1203,10 +1212,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1243,15 +1252,15 @@ <Entry speedRatio='5.0000' torqueRatio='1.00' inputTorqueRef='-4242.00'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1268,7 +1277,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1277,10 +1286,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1315,7 +1324,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1324,10 +1333,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2109,7 +2118,7 @@ <Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2118,10 +2127,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -2179,9 +2188,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -2190,7 +2199,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -2207,7 +2215,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart_AT-P.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart_AT-P.xml index 8c295412cb80623fa03bb0ed9b4939c061e7cd3e..d8f8622df505c2bed7a448fed7c8ebdaea3fe3ff 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart_AT-P.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group41_nonSmart_AT-P.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart_ATP" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart_ATP" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,18 +24,18 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic primary bus 41 Engine</Model> @@ -209,7 +218,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-132.07'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -218,10 +227,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>AT 6 Gear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -746,7 +755,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -755,10 +764,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -785,15 +794,15 @@ <Entry speedRatio="8.1500" torqueRatio="1.00" inputTorqueRef="-16540.98"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -828,7 +837,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -837,10 +846,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic primary bus 41 AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1622,7 +1631,7 @@ <Entry inputSpeed='3250.00' inputTorque='-7960.98' torqueLoss='268.68'/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1631,10 +1640,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" > <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -1692,9 +1701,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -1703,7 +1712,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -1720,7 +1728,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml index 8280da3de3b4f002e45489138af883e7966cdf0c..bff61ff9ed3f1b9152dfe45df7ea915c422481ae 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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:v2.3" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-584956b9e3ab43acaf97"> <Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +42,9 @@ <RatedPower>325032</RatedPower> <MaxEngineTorque>2134</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>600</IdlingSpeed> @@ -574,4 +574,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.xml index c4bea06ee54b9f6e8dd1d963240706be853b5966..fc6870eeb4a3b3fa80d8cfa5a5c2ddb12c3bfce1 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model Primary</Model> <VIN>VEH-1234567890_SmartPS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer> <Model>Bus 6x2 Engine</Model> @@ -181,7 +190,7 @@ <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -190,10 +199,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox Primary</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2581,7 +2590,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2590,10 +2599,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2606,15 +2615,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2631,7 +2640,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2640,10 +2649,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -2714,7 +2723,7 @@ <Entry retarderSpeed="6000.00" torqueLoss="14.00" /> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2723,10 +2732,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear Primary</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3231,7 +3240,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3240,10 +3249,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3328,9 +3337,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3339,7 +3348,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3356,7 +3364,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml index c9db0481c519a1fab72f7b3ce821c71351e5c0e3..a9a4902688f813ba97783b3c106a952db4368010 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -16,9 +17,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -31,9 +32,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -43,7 +45,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -52,10 +54,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -67,10 +69,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 4-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml index 0fe54266ec17ef49046ea9f5c5aa41c36db79bec..724fe6f64c5b126bc619ec1a111a92621787ed86 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_41_mixed.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890_mixed" xsi:type="InterimStageInputType" > + <v2.0:Vehicle id="VEH-1234567890_mixed" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890_m</VIN> @@ -16,9 +17,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -31,9 +32,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>mixed</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -43,7 +45,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -52,10 +54,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -67,10 +69,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml index 6fbd95682f22879d8226585099b06ed5c3cc9e23..78d6c1900901f39ca64b7c68d7f4f441de3bccf9 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-completed_heavyBus_42.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -16,7 +17,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> <ClassBus>I+II</ClassBus> <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> @@ -30,9 +31,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -42,7 +44,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -51,10 +53,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -66,10 +68,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_VIF.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_VIF.xml index b2eb57ba5297be0c47006675b087f065cf2720e9..5a8bd1363abb59bbf5579a8efcb16eef1d33cbd3 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_VIF.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<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 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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:v2.3" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data xsi:type="PrimaryVehicleDataType" id="PIF-65de7efe65ee4b4cac4c"> <Vehicle xsi:type="VehiclePIFType"> @@ -42,9 +42,9 @@ <RatedPower>380000</RatedPower> <MaxEngineTorque>2400</MaxEngineTorque> <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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>560</IdlingSpeed> @@ -547,4 +547,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.xml index 9ee432111624b9ec7e8b3b1998c51b91c3c97e02..a56564aadaad6b4096a5a1e31066227d88d5306a 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/FactorMethod/vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" + xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" + xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" + xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" + xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" + xmlns:di="http://www.w3.org/2000/09/xmldsig#" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>true</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Electrically driven - Electronically controlled</Technology> </Fan> @@ -3266,7 +3275,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3291,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/primary_heavyBus group P39_40_nonSmart_ESS.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/primary_heavyBus group P39_40_nonSmart_ESS.xml index 24c1114427f0b957eda716e1e443eac0a4878376..3d43dac8ac1bf13788951f14e453fb4a2cc21085 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/primary_heavyBus group P39_40_nonSmart_ESS.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/primary_heavyBus group P39_40_nonSmart_ESS.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart-ESS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart-ESS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart-ESS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>8x2</AxleConfiguration> <Articulated>true</Articulated> @@ -15,20 +24,20 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Entry gear="6" maxTorque="1800"/> - <Entry gear="1" maxTorque="2500"/> - <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> + <v2.0:Data id="ENG-gooZah3D" xsi:type="EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>8x2 articulated bus Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -209,7 +218,7 @@ <Entry engineSpeed='2600.00' maxTorque='0.00' dragTorque='-172.00'/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -218,10 +227,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>8x2 Bus</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -688,8 +697,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -698,10 +707,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -716,15 +725,15 @@ <Entry speedRatio='3.6738' torqueRatio='1.22' inputTorqueRef='-3238.32'/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -741,7 +750,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -750,10 +759,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -788,7 +797,7 @@ <Entry retarderSpeed="4000.00" torqueLoss="42.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -797,10 +806,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>8x2 articulated bus</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -1400,7 +1409,7 @@ <Entry inputSpeed='4930.00' inputTorque='5303.63' torqueLoss='131.21'/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1409,10 +1418,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -1524,9 +1533,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -1535,7 +1544,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -1552,7 +1560,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml index 1218ea9e6c58183cac5e710f12f7428d6badae43..d18dc30e4433fb844d44703d1305bbc2612a8168 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-completed_heavyBus.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -16,8 +17,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>50</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> @@ -30,9 +32,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -42,7 +45,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -51,10 +54,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.8:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -66,10 +69,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCor </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus.xml index 095050c4686fd49b8b8fce67577fd27ec30545e0..4a79f5dd6cf648cca400afd9a80d20418a5472e3 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3266,7 +3275,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3291,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES.xml index 680613a7bd1119fdda7e5674722c44e96d1d81be..14918b95d64e8a1399cd58f5a3c7dd1556f7a7fe 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_SmartES" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartES" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartES</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3275,7 +3284,6 @@ <RatedCapacity>50</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3292,7 +3300,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES_PS.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES_PS.xml index f7452fd6df79b0c1c660e0731c03cac1a098aacf..dfd0274077b3ebc215d6bc4b7c817796761c3122 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES_PS.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartES_PS.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_SmartES-PS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartES-PS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartES-PS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3275,7 +3284,6 @@ <RatedCapacity>50</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3292,7 +3300,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartPS.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartPS.xml index 510a78327853b541a61a6d9487c145292fc8ced1..5fc3a0bf24ed07b25bb11f8f4cde32c838aecadb 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartPS.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_SmartPS.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_SmartPS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartPS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" > <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3266,7 +3275,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3291,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart.xml index e31a44e7d3507c8bb177972986a14d1dfca04794..f2c545c2de513e60e85dbeee53663366d35e0b19 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3266,7 +3275,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3291,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart_ESS.xml b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart_ESS.xml index f60a12e48e37cf148783cea1ae0e0909cdf8b0b9..04e7190fe5e9d936d005ab55ff0aa81a5ef47553 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart_ESS.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/Buses/vecto_vehicle-primary_heavyBus_nonSmart_ESS.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart-ESS" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart-ESS" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart-ESS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +182,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +191,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2573,7 +2582,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2591,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2598,15 +2607,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2623,7 +2632,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2641,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2669,7 +2678,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2687,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3185,7 +3194,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3203,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3264,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3266,7 +3275,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3291,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml index 7edc44e504c22c8b4dab0856f57c608c9cd44597..cf0d205bc88442fd72cb35ddb57f1ff400184cfd 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class4_Vocational/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class4"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_ADAS/Tractor_4x2_vehicle-class-5_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_ADAS/Tractor_4x2_vehicle-class-5_EURO6_2018.xml index 18b364021547b4281c925a3ac25fcc4d8111389f..a9b91e68d024882d9c0664d1e43c3fec5471ef08 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_ADAS/Tractor_4x2_vehicle-class-5_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_ADAS/Tractor_4x2_vehicle-class-5_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_NG/Tractor_4x2_vehicle-class-5_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_NG/Tractor_4x2_vehicle-class-5_EURO6_2018.xml index bca4430e757ab7db5fe7606ce6d86b808043766e..fdc6212002c1235cce9f8314761e4d109e186339 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_NG/Tractor_4x2_vehicle-class-5_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_NG/Tractor_4x2_vehicle-class-5_EURO6_2018.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.1.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml index 455dede892a66afec55c0ca2a6c0a61bbd1dbca2..1aaecc0106f27ba7a7842675fa42d7f8711f4e5e 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/Class5_Vocational/Tractor_4x2_vehicle-class-5_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/EngineSpeedTooHigh/vecto_vehicle-sample_9gears.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/EngineSpeedTooHigh/vecto_vehicle-sample_9gears.xml index 98818d2a51e24b8d7d2c7cf5bb64447802fa6a0c..9a63044e731537f08d8596a8b5e3a844844c577b 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/EngineSpeedTooHigh/vecto_vehicle-sample_9gears.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/EngineSpeedTooHigh/vecto_vehicle-sample_9gears.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" +xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted.xml deleted file mode 100644 index b437e77a26760af10c552b5d5dcabbd0dfcaf243..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV.xml deleted file mode 100644 index 67fdf8d43c5d419031f4de2955c8d878098da396..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV_2.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV_2.xml deleted file mode 100644 index 5c30b4004abdf92e44f3c6ff28aca69edb13338b..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_PEV_2.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperF.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperF.xml deleted file mode 100644 index 4f42484c8c9d6db9c17f9c114c70640c1f5f2627..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperF.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>false</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperT.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperT.xml deleted file mode 100644 index 244646f740b0c2a11b039a53b1df1aec35f9f19a..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl+sleeperT.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl.xml deleted file mode 100644 index 99c300940a78ca9dbd5242d2f2cc9c74b87a30f8..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_axl.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperF.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperF.xml deleted file mode 100644 index 2715486feb7b090aa380d2501a79eb2ab1c75243..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperF.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>false</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperT.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperT.xml deleted file mode 100644 index b1c887ea5bc82b38c85381c2bc75c3922c5d21f8..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_sleeperT.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.1.0.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> - <Vehicle id="VEH-1234567890"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1.xml deleted file mode 100644 index 3ea24084124cdfb5223acbdde41217eca1623b08..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV.xml deleted file mode 100644 index 48d78a570746c4e4909c7225f189736175abc28a..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV_2.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV_2.xml deleted file mode 100644 index 672cbd0a9b7f32f04e922c6c7a578aa10d328df4..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_PEV_2.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>true</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperF.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperF.xml deleted file mode 100644 index c11c7a0d696cc7a15fddec754fee9eb803be2fcd..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperF.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>false</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperT.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperT.xml deleted file mode 100644 index 1c1699e1594ba420ec9a9f837b07053e9cdc38f3..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl+SleeperT.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl.xml deleted file mode 100644 index dd5832f90ecbe8410745de203575ae8bae8600b0..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_axl.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperF.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperF.xml deleted file mode 100644 index cd16516726d5333c6dc8cb4e4df007cf27c49094..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperF.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>false</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperT.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperT.xml deleted file mode 100644 index b9cb686b58dbd0fb0abd2408dafb8ab33fbf904c..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/exempted_v2.2.1_sleeperT.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2.1" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:q1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/\XSD/VectoInput.2.0.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> - <Manufacturer>Generic Truck Manufacturer</Manufacturer> - <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> - <Model>Generic Model</Model> - <VIN>VEH-1234567890</VIN> - <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <SleeperCab>true</SleeperCab> - <MaxNetPower1>30000</MaxNetPower1> - <MaxNetPower2>20000</MaxNetPower2> - <HybridElectricHDV>true</HybridElectricHDV> - <DualFuelVehicle>true</DualFuelVehicle> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/vecto_vehicle-sample_exempted.xml b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/vecto_vehicle-sample_exempted.xml index 597692b6a9bcd6b5a3967e4d64779aba597b38a2..52ddc4c8423faca882a93f1e200e1188c4204114 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/vecto_vehicle-sample_exempted.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/DeclarationMode/ExemptedVehicle/vecto_vehicle-sample_exempted.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry-Van.xml b/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry-Van.xml index 5587ae41adc2e92c5479626522e2eae3c683d179..78c480615b82dac301914a14747ddf3270bb2dfc 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry-Van.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry-Van.xml @@ -1,30 +1,30 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0_van" xsi:type="VehicleMediumLorryDeclarationType"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class5_Class-5_5t0_van" xsi:type="Vehicle_Conventional_MediumLorryDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> <Model>class 5_Class-5_5t0</Model> <VIN>standard values_van</VIN> <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Van</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>4229</CurbMassChassis> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>4229</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>7000</TechnicalPermissibleMaximumLadenMass> - <CargoVolume>8.55</CargoVolume> - <IdlingSpeed>100</IdlingSpeed> + <IdlingSpeed>600</IdlingSpeed> + <CargoVolume>8.550</CargoVolume> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> + <VehicleTypeApprovalNumber>asdf</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="VehicleComponentsNoAxlegearType"> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> <Engine> <v2.0:Data id="ENG-350kW_IVT_12l" xsi:type="v1.0:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> @@ -190,8 +190,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Reference> </v2.0:Signature> </Engine> - <v2.6:Gearbox> - <v2.0:Data id="GBX-GB_12-gear" xsi:type="v2.6:GearboxDataDeclarationType"> + <Gearbox> + <v2.0:Data id="GBX-GB_12-gear" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>GB_12-gear</Model> <CertificationNumber>GBX-GB_12-gear</CertificationNumber> @@ -199,9 +199,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <AppVersion>VectoCore</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>2.600</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gears xsi:type="v2.0:GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <TorqueLossMap> @@ -382,7 +380,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00"/> </TorqueLossMap> </Gear> - </v2.6:Gears> + </Gears> </v2.0:Data> <v2.0:Signature> <Reference URI="#GBX-GB_12-gear" xmlns="http://www.w3.org/2000/09/xmldsig#"> @@ -394,9 +392,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestValue/> </Reference> </v2.0:Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> + </Gearbox> + <Retarder> + <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -437,7 +435,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -446,10 +444,526 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data xsi:type="AxlegearDataDeclarationType" id="AXL-EC3ohnoh" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="300.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="300.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="300.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="300.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="300.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="300.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="300.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="0.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="0.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="0.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="0.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="0.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="0.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="0.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="0.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="0.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="0.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="0.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="0.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="0.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="0.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="0.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="0.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="0.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="0.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="0.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="0.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="0.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="0.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="0.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="0.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="0.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="0.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="0.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="0.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="100.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="300.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="300.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="300.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="300.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="300.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="300.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="300.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="300.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="300.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="300.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="300.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="300.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="300.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="300.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="300.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="300.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="300.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="300.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="300.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="300.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="300.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="300.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="300.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="300.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="300.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="300.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="300.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="300.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="300.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="500.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="500.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="500.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="500.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="500.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="500.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="500.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="500.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="500.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="500.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="500.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="500.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="500.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="500.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="500.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="500.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="500.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="500.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="500.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="500.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="500.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="500.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="500.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="500.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="500.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="500.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="500.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="500.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="500.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="500.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="500.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="500.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="500.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="500.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="500.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="500.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="500.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="500.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="500.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="700.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="700.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="700.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="700.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="700.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="700.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="700.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="700.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="700.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="700.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="700.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="700.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="700.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="700.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="700.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="700.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="700.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="700.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="700.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="700.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="700.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="700.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="700.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="700.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="700.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="700.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="700.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="700.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="700.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="700.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="700.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="700.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="700.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="700.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="700.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="700.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="700.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="700.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="700.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="900.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="900.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="900.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="900.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="900.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="900.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="900.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="900.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="900.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="900.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="900.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="900.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="900.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="900.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="900.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="900.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="900.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="900.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="900.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="900.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="900.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="900.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="900.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="900.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="900.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="900.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="900.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="900.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="900.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="900.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="900.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="900.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="900.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="900.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="900.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="900.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1100.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1300.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1300.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1300.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1300.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1300.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1300.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1300.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1300.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1300.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1300.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1300.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1300.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1300.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1300.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1300.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1300.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1300.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1300.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1300.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1300.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1300.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1300.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1300.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1300.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1300.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1300.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1300.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1300.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1300.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1300.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1300.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1300.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1300.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1300.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1300.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1300.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1300.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1300.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1300.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1500.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1500.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1500.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1500.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1500.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1500.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1500.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1500.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1500.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1500.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1500.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1500.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1500.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1500.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1500.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1500.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1500.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1500.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1500.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1500.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1500.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1500.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1500.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1500.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1500.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1500.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1500.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1500.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1500.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1500.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1500.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1500.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1500.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1500.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1500.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1500.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1500.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1500.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1700.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1700.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1700.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1700.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1700.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1700.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1700.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1700.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1700.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1700.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1700.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1700.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1700.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1700.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1700.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1700.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1700.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1700.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1700.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1700.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1700.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1700.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1700.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1700.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1700.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1700.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1700.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1700.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1700.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1700.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1700.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1700.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1700.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1700.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1700.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1700.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1700.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1900.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1900.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1900.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1900.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1900.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1900.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1900.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1900.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1900.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1900.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1900.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1900.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1900.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1900.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1900.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1900.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1900.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1900.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1900.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1900.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1900.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1900.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1900.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1900.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1900.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1900.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1900.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1900.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1900.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1900.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1900.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1900.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1900.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1900.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1900.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1900.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1900.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1900.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="2100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="2100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="2100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="2100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="2100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="2100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="2100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="2100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="2100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="2100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="2100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="2100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="2100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="2100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="2100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="2100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="2100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="2100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="2100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="2100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="2100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="2100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="2100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="2100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="2100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="2100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="2100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="2100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="2100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="2100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="2100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <Reference URI="#AXL-EC3ohnoh" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</DigestValue> + </Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -507,14 +1021,14 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> <Fan> <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> </Fan> <SteeringPump> - <Technology>Fixed displacement with elec. control</Technology> + <Technology axleNumber="1">Fixed displacement with elec. control</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology</Technology> @@ -526,9 +1040,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Technology>Default</Technology> </HVAC> </Data> - </v2.6:Auxiliaries> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>N.A.</Model> <CertificationNumber>generic cabin</CertificationNumber> @@ -538,7 +1052,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <TransferredCdxA>5.57</TransferredCdxA> <DeclaredCdxA>5.57</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -547,8 +1061,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:AirDrag> + </v2.0:Signature> + </AirDrag> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry.xml b/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry.xml index cde693140435822b76c9123792203ae98422c9b6..a5c83dc8a0877b8922ba70fa9cd86e0c08850c37 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorry.xml @@ -1,29 +1,38 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleMediumLorryDeclarationType"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="Vehicle_Conventional_MediumLorryDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> <Model>class 5_Class-5_5t0</Model> <VIN>standard values</VIN> <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Rigid Lorry</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>4229</CurbMassChassis> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>4229</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>7000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>100</IdlingSpeed> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> + <VehicleTypeApprovalNumber>asdf</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="VehicleComponentsNoAxlegearType"> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> <Engine> <v2.0:Data id="ENG-350kW_IVT_12l" xsi:type="v1.0:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> @@ -189,8 +198,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Reference> </v2.0:Signature> </Engine> - <v2.6:Gearbox> - <v2.0:Data id="GBX-GB_12-gear" xsi:type="v2.6:GearboxDataDeclarationType"> + <Gearbox> + <v2.0:Data id="GBX-GB_12-gear" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>GB_12-gear</Model> <CertificationNumber>GBX-GB_12-gear</CertificationNumber> @@ -198,9 +207,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <AppVersion>VectoCore</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>2.600</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <TorqueLossMap> @@ -381,7 +388,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00"/> </TorqueLossMap> </Gear> - </v2.6:Gears> + </Gears> </v2.0:Data> <v2.0:Signature> <Reference URI="#GBX-GB_12-gear" xmlns="http://www.w3.org/2000/09/xmldsig#"> @@ -393,9 +400,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestValue/> </Reference> </v2.0:Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> + </Gearbox> + <Retarder> + <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -436,7 +443,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -445,10 +452,526 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data xsi:type="AxlegearDataDeclarationType" id="AXL-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="300.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="300.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="300.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="300.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="300.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="300.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="300.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="0.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="0.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="0.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="0.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="0.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="0.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="0.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="0.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="0.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="0.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="0.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="0.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="0.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="0.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="0.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="0.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="0.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="0.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="0.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="0.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="0.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="0.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="0.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="0.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="0.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="0.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="0.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="0.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="0.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="0.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="100.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="300.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="300.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="300.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="300.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="300.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="300.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="300.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="300.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="300.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="300.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="300.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="300.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="300.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="300.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="300.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="300.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="300.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="300.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="300.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="300.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="300.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="300.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="300.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="300.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="300.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="300.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="300.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="300.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="300.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="300.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="500.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="500.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="500.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="500.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="500.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="500.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="500.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="500.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="500.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="500.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="500.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="500.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="500.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="500.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="500.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="500.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="500.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="500.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="500.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="500.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="500.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="500.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="500.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="500.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="500.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="500.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="500.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="500.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="500.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="500.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="500.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="500.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="500.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="500.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="500.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="500.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="500.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="500.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="500.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="700.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="700.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="700.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="700.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="700.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="700.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="700.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="700.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="700.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="700.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="700.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="700.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="700.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="700.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="700.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="700.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="700.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="700.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="700.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="700.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="700.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="700.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="700.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="700.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="700.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="700.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="700.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="700.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="700.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="700.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="700.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="700.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="700.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="700.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="700.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="700.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="700.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="700.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="700.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="900.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="900.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="900.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="900.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="900.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="900.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="900.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="900.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="900.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="900.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="900.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="900.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="900.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="900.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="900.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="900.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="900.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="900.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="900.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="900.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="900.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="900.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="900.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="900.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="900.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="900.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="900.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="900.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="900.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="900.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="900.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="900.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="900.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="900.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="900.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="900.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="900.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="900.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="900.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1100.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1300.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1300.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1300.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1300.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1300.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1300.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1300.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1300.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1300.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1300.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1300.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1300.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1300.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1300.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1300.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1300.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1300.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1300.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1300.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1300.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1300.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1300.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1300.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1300.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1300.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1300.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1300.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1300.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1300.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1300.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1300.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1300.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1300.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1300.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1300.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1300.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1300.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1300.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1300.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1500.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1500.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1500.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1500.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1500.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1500.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1500.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1500.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1500.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1500.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1500.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1500.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1500.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1500.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1500.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1500.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1500.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1500.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1500.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1500.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1500.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1500.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1500.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1500.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1500.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1500.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1500.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1500.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1500.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1500.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1500.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1500.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1500.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1500.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1500.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1500.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1500.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1500.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1500.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1700.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1700.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1700.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1700.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1700.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1700.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1700.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1700.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1700.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1700.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1700.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1700.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1700.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1700.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1700.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1700.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1700.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1700.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1700.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1700.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1700.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1700.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1700.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1700.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1700.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1700.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1700.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1700.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1700.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1700.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1700.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1700.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1700.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1700.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1700.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1700.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1700.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1700.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="1900.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1900.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1900.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1900.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1900.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="1900.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="1900.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="1900.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1900.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="1900.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="1900.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="1900.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="1900.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="1900.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="1900.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="1900.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="1900.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="1900.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="1900.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="1900.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="1900.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="1900.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="1900.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="1900.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="1900.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="1900.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="1900.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="1900.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="1900.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="1900.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="1900.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="1900.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="1900.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="1900.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="1900.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="1900.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="1900.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="1900.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="1900.00" inputTorque="35000.00" torqueLoss="565.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="-4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="2100.00" inputTorque="-3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="2100.00" inputTorque="-2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="1000.00" torqueLoss="55.00"/> + <Entry inputSpeed="2100.00" inputTorque="2000.00" torqueLoss="70.00"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="85.00"/> + <Entry inputSpeed="2100.00" inputTorque="4000.00" torqueLoss="100.00"/> + <Entry inputSpeed="2100.00" inputTorque="5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="6000.00" torqueLoss="130.00"/> + <Entry inputSpeed="2100.00" inputTorque="7000.00" torqueLoss="145.00"/> + <Entry inputSpeed="2100.00" inputTorque="8000.00" torqueLoss="160.00"/> + <Entry inputSpeed="2100.00" inputTorque="9000.00" torqueLoss="175.00"/> + <Entry inputSpeed="2100.00" inputTorque="10000.00" torqueLoss="190.00"/> + <Entry inputSpeed="2100.00" inputTorque="11000.00" torqueLoss="205.00"/> + <Entry inputSpeed="2100.00" inputTorque="12000.00" torqueLoss="220.00"/> + <Entry inputSpeed="2100.00" inputTorque="13000.00" torqueLoss="235.00"/> + <Entry inputSpeed="2100.00" inputTorque="14000.00" torqueLoss="250.00"/> + <Entry inputSpeed="2100.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="16000.00" torqueLoss="280.00"/> + <Entry inputSpeed="2100.00" inputTorque="17000.00" torqueLoss="295.00"/> + <Entry inputSpeed="2100.00" inputTorque="18000.00" torqueLoss="310.00"/> + <Entry inputSpeed="2100.00" inputTorque="19000.00" torqueLoss="325.00"/> + <Entry inputSpeed="2100.00" inputTorque="20000.00" torqueLoss="340.00"/> + <Entry inputSpeed="2100.00" inputTorque="21000.00" torqueLoss="355.00"/> + <Entry inputSpeed="2100.00" inputTorque="22000.00" torqueLoss="370.00"/> + <Entry inputSpeed="2100.00" inputTorque="23000.00" torqueLoss="385.00"/> + <Entry inputSpeed="2100.00" inputTorque="24000.00" torqueLoss="400.00"/> + <Entry inputSpeed="2100.00" inputTorque="25000.00" torqueLoss="415.00"/> + <Entry inputSpeed="2100.00" inputTorque="26000.00" torqueLoss="430.00"/> + <Entry inputSpeed="2100.00" inputTorque="27000.00" torqueLoss="445.00"/> + <Entry inputSpeed="2100.00" inputTorque="28000.00" torqueLoss="460.00"/> + <Entry inputSpeed="2100.00" inputTorque="29000.00" torqueLoss="475.00"/> + <Entry inputSpeed="2100.00" inputTorque="30000.00" torqueLoss="490.00"/> + <Entry inputSpeed="2100.00" inputTorque="31000.00" torqueLoss="505.00"/> + <Entry inputSpeed="2100.00" inputTorque="32000.00" torqueLoss="520.00"/> + <Entry inputSpeed="2100.00" inputTorque="33000.00" torqueLoss="535.00"/> + <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <Reference URI="#AXL-EC3ohnoh" xmlns="http://www.w3.org/2000/09/xmldsig#"> + <Transforms> + <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> + <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> + </Transforms> + <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</DigestValue> + </Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -506,14 +1029,14 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> <Fan> <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> </Fan> <SteeringPump> - <Technology>Fixed displacement with elec. control</Technology> + <Technology axleNumber="1">Fixed displacement with elec. control</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology</Technology> @@ -525,9 +1048,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Technology>Default</Technology> </HVAC> </Data> - </v2.6:Auxiliaries> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> + </Auxiliaries> + <AirDrag> + <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>N.A.</Model> <CertificationNumber>generic cabin</CertificationNumber> @@ -537,7 +1060,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <TransferredCdxA>5.57</TransferredCdxA> <DeclaredCdxA>5.57</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -546,8 +1069,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:AirDrag> + </v2.0:Signature> + </AirDrag> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorryFWD.xml b/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorryFWD.xml deleted file mode 100644 index bec0a2a816ef64b0374239ff3869e2a6310fa683..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/MediumLorries/vecto_vehicle-medium_lorryFWD.xml +++ /dev/null @@ -1,554 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0_fwd" xsi:type="VehicleMediumLorryDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <ManufacturerAddress>N.A.</ManufacturerAddress> - <Model>class 5_Class-5_5t0</Model> - <VIN>standard values_fwd</VIN> - <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Van</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>4229</CurbMassChassis> - <TechnicalPermissibleMaximumLadenMass>7000</TechnicalPermissibleMaximumLadenMass> - <CargoVolume>10.32</CargoVolume> - <IdlingSpeed>100</IdlingSpeed> - <RetarderType>Transmission Output Retarder</RetarderType> - <RetarderRatio>1.000</RetarderRatio> - <AngledriveType>None</AngledriveType> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> - <EngineStopStart>false</EngineStopStart> - <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> - <EcoRollWithEngineStop>false</EcoRollWithEngineStop> - <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="VehicleComponentsNoAxlegearType"> - <Engine> - <v2.0:Data id="ENG-350kW_IVT_12l" xsi:type="v1.0:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>350kW_IVT_12l</Model> - <CertificationNumber>ENG-350kW_IVT_12l</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <Displacement>12700</Displacement> - <IdlingSpeed>600</IdlingSpeed> - <RatedSpeed>1736</RatedSpeed> - <RatedPower>325032</RatedPower> - <MaxEngineTorque>2134</MaxEngineTorque> - <WHTCUrban>1.0400</WHTCUrban> - <WHTCRural>1.0100</WHTCRural> - <WHTCMotorway>1.0000</WHTCMotorway> - <BFColdHot>1.0000</BFColdHot> - <CFRegPer>1.0000</CFRegPer> - <CFNCV>1.0000</CFNCV> - <FuelType>Diesel CI</FuelType> - <FuelConsumptionMap> - <Entry engineSpeed="600.00" torque="-150.00" fuelConsumption="0.00"/> - <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1459.00"/> - <Entry engineSpeed="600.00" torque="216.90" fuelConsumption="3538.75"/> - <Entry engineSpeed="600.00" torque="433.80" fuelConsumption="5936.91"/> - <Entry engineSpeed="600.00" torque="650.70" fuelConsumption="8584.95"/> - <Entry engineSpeed="600.00" torque="867.60" fuelConsumption="10708.27"/> - <Entry engineSpeed="600.00" torque="1084.50" fuelConsumption="13054.00"/> - <Entry engineSpeed="600.00" torque="1301.40" fuelConsumption="15575.45"/> - <Entry engineSpeed="600.00" torque="1518.30" fuelConsumption="18097.57"/> - <Entry engineSpeed="600.00" torque="1735.20" fuelConsumption="20619.68"/> - <Entry engineSpeed="600.00" torque="1952.10" fuelConsumption="23141.80"/> - <Entry engineSpeed="600.00" torque="2169.00" fuelConsumption="25663.92"/> - <Entry engineSpeed="748.90" torque="-153.25" fuelConsumption="0.00"/> - <Entry engineSpeed="748.90" torque="0.00" fuelConsumption="1771.69"/> - <Entry engineSpeed="748.90" torque="216.90" fuelConsumption="4287.77"/> - <Entry engineSpeed="748.90" torque="433.80" fuelConsumption="7329.06"/> - <Entry engineSpeed="748.90" torque="650.70" fuelConsumption="10252.92"/> - <Entry engineSpeed="748.90" torque="867.60" fuelConsumption="13214.55"/> - <Entry engineSpeed="748.90" torque="1084.50" fuelConsumption="16271.09"/> - <Entry engineSpeed="748.90" torque="1301.40" fuelConsumption="19504.44"/> - <Entry engineSpeed="748.90" torque="1518.30" fuelConsumption="22715.90"/> - <Entry engineSpeed="748.90" torque="1735.20" fuelConsumption="26067.02"/> - <Entry engineSpeed="748.90" torque="1952.10" fuelConsumption="29381.05"/> - <Entry engineSpeed="748.90" torque="2169.00" fuelConsumption="32699.96"/> - <Entry engineSpeed="897.80" torque="-159.33" fuelConsumption="0.00"/> - <Entry engineSpeed="897.80" torque="0.00" fuelConsumption="2361.15"/> - <Entry engineSpeed="897.80" torque="216.90" fuelConsumption="5371.49"/> - <Entry engineSpeed="897.80" torque="433.80" fuelConsumption="8747.43"/> - <Entry engineSpeed="897.80" torque="650.70" fuelConsumption="12019.87"/> - <Entry engineSpeed="897.80" torque="867.60" fuelConsumption="15642.49"/> - <Entry engineSpeed="897.80" torque="1084.50" fuelConsumption="19348.62"/> - <Entry engineSpeed="897.80" torque="1301.40" fuelConsumption="23071.10"/> - <Entry engineSpeed="897.80" torque="1518.30" fuelConsumption="26864.31"/> - <Entry engineSpeed="897.80" torque="1735.20" fuelConsumption="30815.18"/> - <Entry engineSpeed="897.80" torque="1952.10" fuelConsumption="34854.40"/> - <Entry engineSpeed="897.80" torque="2169.00" fuelConsumption="39155.09"/> - <Entry engineSpeed="1046.70" torque="-167.79" fuelConsumption="0.00"/> - <Entry engineSpeed="1046.70" torque="0.00" fuelConsumption="2968.21"/> - <Entry engineSpeed="1046.70" torque="216.90" fuelConsumption="6463.69"/> - <Entry engineSpeed="1046.70" torque="433.80" fuelConsumption="10102.67"/> - <Entry engineSpeed="1046.70" torque="650.70" fuelConsumption="13853.76"/> - <Entry engineSpeed="1046.70" torque="867.60" fuelConsumption="18068.71"/> - <Entry engineSpeed="1046.70" torque="1084.50" fuelConsumption="22383.70"/> - <Entry engineSpeed="1046.70" torque="1301.40" fuelConsumption="26543.40"/> - <Entry engineSpeed="1046.70" torque="1518.30" fuelConsumption="30847.65"/> - <Entry engineSpeed="1046.70" torque="1735.20" fuelConsumption="35304.67"/> - <Entry engineSpeed="1046.70" torque="1952.10" fuelConsumption="40046.29"/> - <Entry engineSpeed="1046.70" torque="2169.00" fuelConsumption="45162.72"/> - <Entry engineSpeed="1195.57" torque="-178.58" fuelConsumption="0.00"/> - <Entry engineSpeed="1195.57" torque="0.00" fuelConsumption="3297.21"/> - <Entry engineSpeed="1195.57" torque="216.90" fuelConsumption="7191.55"/> - <Entry engineSpeed="1195.57" torque="433.80" fuelConsumption="11289.50"/> - <Entry engineSpeed="1195.57" torque="650.70" fuelConsumption="15720.59"/> - <Entry engineSpeed="1195.57" torque="867.60" fuelConsumption="20580.22"/> - <Entry engineSpeed="1195.57" torque="1084.50" fuelConsumption="25484.81"/> - <Entry engineSpeed="1195.57" torque="1301.40" fuelConsumption="30222.77"/> - <Entry engineSpeed="1195.57" torque="1518.30" fuelConsumption="35006.22"/> - <Entry engineSpeed="1195.57" torque="1735.20" fuelConsumption="40026.60"/> - <Entry engineSpeed="1195.57" torque="1952.10" fuelConsumption="45496.89"/> - <Entry engineSpeed="1195.57" torque="2169.00" fuelConsumption="50854.10"/> - <Entry engineSpeed="1359.19" torque="-197.42" fuelConsumption="0.00"/> - <Entry engineSpeed="1359.19" torque="0.00" fuelConsumption="4102.15"/> - <Entry engineSpeed="1359.19" torque="216.90" fuelConsumption="8260.52"/> - <Entry engineSpeed="1359.19" torque="433.80" fuelConsumption="13082.44"/> - <Entry engineSpeed="1359.19" torque="650.70" fuelConsumption="18126.41"/> - <Entry engineSpeed="1359.19" torque="867.60" fuelConsumption="23245.61"/> - <Entry engineSpeed="1359.19" torque="1084.50" fuelConsumption="28611.71"/> - <Entry engineSpeed="1359.19" torque="1301.40" fuelConsumption="34186.01"/> - <Entry engineSpeed="1359.19" torque="1518.30" fuelConsumption="39773.96"/> - <Entry engineSpeed="1359.19" torque="1735.20" fuelConsumption="45940.37"/> - <Entry engineSpeed="1359.19" torque="1952.10" fuelConsumption="52485.97"/> - <Entry engineSpeed="1359.19" torque="2169.00" fuelConsumption="58360.23"/> - <Entry engineSpeed="1484.00" torque="-216.03" fuelConsumption="0.00"/> - <Entry engineSpeed="1484.00" torque="0.00" fuelConsumption="4684.84"/> - <Entry engineSpeed="1484.00" torque="216.90" fuelConsumption="9190.80"/> - <Entry engineSpeed="1484.00" torque="433.80" fuelConsumption="14455.69"/> - <Entry engineSpeed="1484.00" torque="650.70" fuelConsumption="19929.18"/> - <Entry engineSpeed="1484.00" torque="867.60" fuelConsumption="25556.30"/> - <Entry engineSpeed="1484.00" torque="1084.50" fuelConsumption="31326.33"/> - <Entry engineSpeed="1484.00" torque="1301.40" fuelConsumption="37363.82"/> - <Entry engineSpeed="1484.00" torque="1518.30" fuelConsumption="43571.91"/> - <Entry engineSpeed="1484.00" torque="1735.20" fuelConsumption="50460.82"/> - <Entry engineSpeed="1484.00" torque="1952.10" fuelConsumption="57604.52"/> - <Entry engineSpeed="1484.00" torque="2169.00" fuelConsumption="64181.14"/> - <Entry engineSpeed="1608.90" torque="-236.34" fuelConsumption="0.00"/> - <Entry engineSpeed="1608.90" torque="0.00" fuelConsumption="5261.40"/> - <Entry engineSpeed="1608.90" torque="216.90" fuelConsumption="10199.91"/> - <Entry engineSpeed="1608.90" torque="433.80" fuelConsumption="15846.19"/> - <Entry engineSpeed="1608.90" torque="650.70" fuelConsumption="21747.18"/> - <Entry engineSpeed="1608.90" torque="867.60" fuelConsumption="28037.21"/> - <Entry engineSpeed="1608.90" torque="1084.50" fuelConsumption="34232.36"/> - <Entry engineSpeed="1608.90" torque="1301.40" fuelConsumption="40669.25"/> - <Entry engineSpeed="1608.90" torque="1518.30" fuelConsumption="47498.48"/> - <Entry engineSpeed="1608.90" torque="1735.20" fuelConsumption="55015.01"/> - <Entry engineSpeed="1608.90" torque="1952.10" fuelConsumption="62654.92"/> - <Entry engineSpeed="1608.90" torque="2169.00" fuelConsumption="70071.75"/> - <Entry engineSpeed="1733.80" torque="-253.92" fuelConsumption="0.00"/> - <Entry engineSpeed="1733.80" torque="0.00" fuelConsumption="6010.80"/> - <Entry engineSpeed="1733.80" torque="216.90" fuelConsumption="11536.09"/> - <Entry engineSpeed="1733.80" torque="433.80" fuelConsumption="17479.05"/> - <Entry engineSpeed="1733.80" torque="650.70" fuelConsumption="23999.56"/> - <Entry engineSpeed="1733.80" torque="867.60" fuelConsumption="30943.62"/> - <Entry engineSpeed="1733.80" torque="1084.50" fuelConsumption="37482.51"/> - <Entry engineSpeed="1733.80" torque="1301.40" fuelConsumption="44617.51"/> - <Entry engineSpeed="1733.80" torque="1518.30" fuelConsumption="52071.25"/> - <Entry engineSpeed="1733.80" torque="1735.20" fuelConsumption="60004.29"/> - <Entry engineSpeed="1733.80" torque="1952.10" fuelConsumption="68251.45"/> - <Entry engineSpeed="1733.80" torque="2169.00" fuelConsumption="76381.09"/> - <Entry engineSpeed="1858.61" torque="-274.22" fuelConsumption="0.00"/> - <Entry engineSpeed="1858.61" torque="0.00" fuelConsumption="7204.51"/> - <Entry engineSpeed="1858.61" torque="216.90" fuelConsumption="13143.55"/> - <Entry engineSpeed="1858.61" torque="433.80" fuelConsumption="19338.96"/> - <Entry engineSpeed="1858.61" torque="650.70" fuelConsumption="26272.46"/> - <Entry engineSpeed="1858.61" torque="867.60" fuelConsumption="33838.94"/> - <Entry engineSpeed="1858.61" torque="1084.50" fuelConsumption="41281.10"/> - <Entry engineSpeed="1858.61" torque="1301.40" fuelConsumption="49065.71"/> - <Entry engineSpeed="1858.61" torque="1518.30" fuelConsumption="57066.15"/> - <Entry engineSpeed="1858.61" torque="1735.20" fuelConsumption="65324.35"/> - <Entry engineSpeed="1858.61" torque="1952.10" fuelConsumption="73876.10"/> - <Entry engineSpeed="1858.61" torque="2169.00" fuelConsumption="82384.30"/> - </FuelConsumptionMap> - <FullLoadAndDragCurve> - <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> - <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> - <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> - <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> - <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> - <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> - <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> - <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> - <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> - <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> - </FullLoadAndDragCurve> - </v2.0:Data> - <v2.0:Signature> - <Reference URI="#ENG-350kW_IVT_12l" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </v2.0:Signature> - </Engine> - <v2.6:Gearbox> - <v2.0:Data id="GBX-GB_12-gear" xsi:type="v2.6:GearboxDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>GB_12-gear</Model> - <CertificationNumber>GBX-GB_12-gear</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <TransmissionType>AMT</TransmissionType> - <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>2.600</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Gear number="1"> - <Ratio>14.930</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="2"> - <Ratio>11.640</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="3"> - <Ratio>9.020</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="4"> - <Ratio>7.040</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="5"> - <Ratio>5.640</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="6"> - <Ratio>4.400</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="7"> - <Ratio>3.390</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="8"> - <Ratio>2.650</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="9"> - <Ratio>2.050</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="10"> - <Ratio>1.600</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="11"> - <Ratio>1.280</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="12"> - <Ratio>1.000</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00"/> - </TorqueLossMap> - </Gear> - </v2.6:Gears> - </v2.0:Data> - <v2.0:Signature> - <Reference URI="#GBX-GB_12-gear" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </v2.0:Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>RET-generic</Model> - <CertificationNumber>standard values</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <CertificationMethod>Standard values</CertificationMethod> - <RetarderLossMap> - <Entry retarderSpeed="0.00" torqueLoss="10.00"/> - <Entry retarderSpeed="100.00" torqueLoss="10.00"/> - <Entry retarderSpeed="200.00" torqueLoss="10.10"/> - <Entry retarderSpeed="300.00" torqueLoss="10.20"/> - <Entry retarderSpeed="400.00" torqueLoss="10.30"/> - <Entry retarderSpeed="500.00" torqueLoss="10.50"/> - <Entry retarderSpeed="600.00" torqueLoss="10.70"/> - <Entry retarderSpeed="700.00" torqueLoss="11.00"/> - <Entry retarderSpeed="800.00" torqueLoss="11.30"/> - <Entry retarderSpeed="900.00" torqueLoss="11.60"/> - <Entry retarderSpeed="1000.00" torqueLoss="12.00"/> - <Entry retarderSpeed="1100.00" torqueLoss="12.40"/> - <Entry retarderSpeed="1200.00" torqueLoss="12.90"/> - <Entry retarderSpeed="1300.00" torqueLoss="13.40"/> - <Entry retarderSpeed="1400.00" torqueLoss="13.90"/> - <Entry retarderSpeed="1500.00" torqueLoss="14.50"/> - <Entry retarderSpeed="1600.00" torqueLoss="15.10"/> - <Entry retarderSpeed="1700.00" torqueLoss="15.80"/> - <Entry retarderSpeed="1800.00" torqueLoss="16.50"/> - <Entry retarderSpeed="1900.00" torqueLoss="17.20"/> - <Entry retarderSpeed="2000.00" torqueLoss="18.00"/> - <Entry retarderSpeed="2100.00" torqueLoss="18.80"/> - <Entry retarderSpeed="2200.00" torqueLoss="19.70"/> - <Entry retarderSpeed="2300.00" torqueLoss="20.60"/> - <Entry retarderSpeed="2400.00" torqueLoss="21.50"/> - <Entry retarderSpeed="2500.00" torqueLoss="22.50"/> - <Entry retarderSpeed="2600.00" torqueLoss="23.50"/> - <Entry retarderSpeed="2700.00" torqueLoss="24.60"/> - <Entry retarderSpeed="2800.00" torqueLoss="25.70"/> - <Entry retarderSpeed="2900.00" torqueLoss="26.80"/> - <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> - </RetarderLossMap> - </Data> - <Signature> - <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> - <Axles> - <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</TwinTyres> - <Steered>true</Steered> - <Tyre> - <Data id="TYRE-315_70R225" xsi:type="TyreDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>315/70 R22.5</Dimension> - <RRCDeclared>0.0052</RRCDeclared> - <FzISO>33350</FzISO> - </Data> - <Signature> - <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </Tyre> - </Axle> - <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleDriven</AxleType> - <TwinTyres>true</TwinTyres> - <Steered>false</Steered> - <Tyre> - <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.2:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>235/60 R17C</Dimension> - <RRCDeclared>0.0061</RRCDeclared> - <FzISO>33350</FzISO> - </v2.0:Data> - <Signature> - <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </Tyre> - </Axle> - </Axles> - </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> - <Fan> - <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> - </Fan> - <SteeringPump> - <Technology>Fixed displacement with elec. control</Technology> - </SteeringPump> - <ElectricSystem> - <Technology>Standard technology</Technology> - </ElectricSystem> - <PneumaticSystem> - <Technology>Medium Supply 1-stage + ESS + AMS</Technology> - </PneumaticSystem> - <HVAC> - <Technology>Default</Technology> - </HVAC> - </Data> - </v2.6:Auxiliaries> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>N.A.</Model> - <CertificationNumber>generic cabin</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <CdxA_0>5.57</CdxA_0> - <TransferredCdxA>5.57</TransferredCdxA> - <DeclaredCdxA>5.57</DeclaredCdxA> - </Data> - <Signature> - <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </v2.6:AirDrag> - </Components> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional-noADAS.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional-noADAS.vecto new file mode 100644 index 0000000000000000000000000000000000000000..be4ceb42d37eb04f62eb9373c40150ef55456ba3 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional-noADAS.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-09-20T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-primary_heavyBus-sample.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-stage_input_full-sample-final-noADAS.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional.vecto new file mode 100644 index 0000000000000000000000000000000000000000..1adf195f59c2f98083e5995353bfe05865af1851 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifCompletedConventional.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-08-25T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-primary_heavyBus-sample.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-stage_input_full-sample-final.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted-noTPMLM.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted-noTPMLM.vecto new file mode 100644 index 0000000000000000000000000000000000000000..bad751aeaaef7a9ff48c2225fc1ff02703a3deac --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted-noTPMLM.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-08-25T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\exempted_primary_heavyBus.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-exempted_input_completewithoutTMPLM.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted.vecto new file mode 100644 index 0000000000000000000000000000000000000000..f3ffdc2526bb8cb58342dc22efa9c48b684a65db --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExempted.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-08-25T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\exempted_primary_heavyBus.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-exempted_input_full-sample.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExemptedIncomplete.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExemptedIncomplete.vecto new file mode 100644 index 0000000000000000000000000000000000000000..89ced880a30a9412580ba5817f28a9a264e4a225 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifExemptedIncomplete.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-08-25T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\exempted_primary_heavyBus.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-exempted_input_interim-sample.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifInterimDiesel.vecto b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifInterimDiesel.vecto new file mode 100644 index 0000000000000000000000000000000000000000..c313011d65c07e5999bdaaa947539020c87d383e --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/Integration/Multistage/newVifInterimDiesel.vecto @@ -0,0 +1,13 @@ +{ + "Header": { + "CreatedBy": "Harry", + "Date": "2021-08-25T00:00:00+02:00", + "AppVersion": "Vecto3GUI2020", + "FileVersion": 10 + }, + "Body": { + "PrimaryVehicle": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-primary_heavyBus-sample.xml", + "InterimStep": "..\\..\\XML\\XMLReaderDeclaration\\SchemaVersion2.10\\vecto_vehicle-stage_input_full-sample.xml", + "Completed": false + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml index acf1d421b3c9e75840ca0eea31b085a5f278c4f2..08516efcb9bdea147b75aac22b5e18429a23aefb 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class1"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-2_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-2_EURO6_2018.xml index dc5decd5014c643488b25c2e1c4993c81e52c384..71f5d5eea4261e40ce0b73e850962c076fca8cec 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-2_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-2_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class2"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml index ef39358017b9985604b2adf7df5756c46d3109f4..5729902664647c1ccf0cc3aa6942ced9c57ebb0d 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class3"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml index 6b7b491c29dbae1b3d1eb0f1aa94bd7cfd3aa5e3..11e07063064de6cdbb98f349fa537a37192df741 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class4"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x2_vehicle-class-9_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x2_vehicle-class-9_EURO6_2018.xml index 0a8016124b260f06ecfd2bdc14a13674cdb81456..9d630d62d28632f31ccb7d147b7ec1ddf709b18a 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x2_vehicle-class-9_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x2_vehicle-class-9_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class9"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml index 11dde054e5c4d359c388a2899f46659bf0769bc3..6d45545365fe2b2c8a54493b96b1eb7c5634c91a 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class11"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml index fc9a49d0aead644492f8640ef7434e6d7fd18e78..50e38f4e9702d8540aaa7aa07fc13a8f9b866045 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class16"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018.xml index ed78e2df859c1ab0fdc802dedfb98c0f4d6761de..a85ffd7f4da7545d885ffabca0ab9436ec57c1f2 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_FlatFCMap.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_FlatFCMap.xml index a89857f85c79e902e0902daf56a6f29f0fc470d7..4f9f8bb12e2493dab7c20ca86f5262c5205a3262 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_FlatFCMap.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_FlatFCMap.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5_FlatFC"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_IncreasingFCMap.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_IncreasingFCMap.xml index 9605825fed25fc1f2ed5f7988e63752a0eedfcfb..531879faa23dba94ff9841584f72690a67c57d70 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_IncreasingFCMap.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_4x2_vehicle-class-5_EURO6_2018_IncreasingFCMap.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class5_IncreasingFC"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x2_vehicle-class-10_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x2_vehicle-class-10_EURO6_2018.xml index f0259bb06c899f7c9c8664db645a17b56acb82f0..72b83fea9baa88c2f263c0d03002173e4693c44b 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x2_vehicle-class-10_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x2_vehicle-class-10_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class10"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x4_vehicle-class-12_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x4_vehicle-class-12_EURO6_2018.xml index 92203b94eb71d1d86f8d7a35e9bba98a3aefa4cd..4b3f5b27d281dc56d41d6ed2e48fc236aad8c651 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x4_vehicle-class-12_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/ShiftStrategyV2/SampleVehicles/Tractor_6x4_vehicle-class-12_EURO6_2018.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Class12"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.RSLT_MANUFACTURER.xml index b557aed00d664a1fb9aa0d4f99f5bf06b3fc93f7..df735fcaf6d176a5c76f939a27b1e6aed3f3d514 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.RSLT_MANUFACTURER.xml @@ -1,6 +1,7 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> +<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-05da3904a69f4a3a810c"> <Vehicle xsi:type="VehicleTruckType"> <Model>Generic Model</Model> @@ -23,7 +24,7 @@ <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop> <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop> <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl> - <adas:ATEcoRollReleaseLockupClutch>false</adas:ATEcoRollReleaseLockupClutch> + <adas:APTEcoRollReleaseLockupClutch>false</adas:APTEcoRollReleaseLockupClutch> </ADAS> <TorqueLimits> <Entry gear="1" torqueLimit="1900" unit="Nm" torqueLimitPercent="82.6" /> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.xml index 44f09ba7bac3d21b21f987bc94f3a183b7e9a277..4ab9769d46d00487fe31ffaa65f332ea9a301677 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/DualFuelVehicle/vehicle_sampleSingleModeDualFuel.xml @@ -5,9 +5,9 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> @@ -35,7 +35,7 @@ </TorqueLimits> <Components xsi:type="VehicleComponentsType"> <Engine> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle XMLJob PTO/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle XMLJob PTO/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml index 6b5433a542edd5db65a165a4cd5f7ee16c526f76..2f0769aad635f75fc4515fdcf01417b62036e4a5 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle XMLJob PTO/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle XMLJob PTO/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoOutput schemaVersion="0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.4.xsd"> +<VectoOutput schemaVersion="0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.4.xsd"> <Data id="RESULT-b330b679d81a449f92ed"> <Vehicle> <VIN>standard values</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.RSLT_MANUFACTURER.xml index 3069eb40a95836621bde9462d3ccdbe35bc0b9d6..78158d108fa1a84c03019e6bd44fb6af284c9132 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.RSLT_MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoOutput schemaVersion="0.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.5.xsd"> +<VectoOutput schemaVersion="0.5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.5 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.5.xsd"> <Data id="RESULT-bf220343fe634daa8708"> <Vehicle> <VIN>1234</VIN> @@ -15,7 +15,7 @@ <Model>175kW 6.8l Engine</Model> <CertificationNumber>1234</CertificationNumber> <DigestValue>JZmOioDqDbJWb3SWfxl/wSaxs9/WN5mLPh8vtJjs8Vs=</DigestValue> - <RatedPower unit="kW">0</RatedPower> + <RatedPower unit="kW">10</RatedPower> <IdlingSpeed unit="rpm">650</IdlingSpeed> <RatedSpeed unit="rpm">2200</RatedSpeed> <Displacement unit="ltr">6.9</Displacement> @@ -29,11 +29,11 @@ <GearsCount>6</GearsCount> <TransmissionRatioFinalGear>0.620</TransmissionRatioFinalGear> </Gearbox> - <TorqueConverter> - <Model /> + <Torqueconverter> + <Model >asdf</Model> <CertificationMethod>Standard values</CertificationMethod> <DigestValue /> - </TorqueConverter> + </Torqueconverter> <Retarder> <RetarderType>None</RetarderType> </Retarder> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.xml index 28a2b3c3e3bdc345a6e612b96e441d6780ab2eec..af0a1c5512290cfca00ee7156aea2404546cdcbe 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.1.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-N.A."> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser_2TC.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser_2TC.xml index a5924d2fbd2c2d222766fb8db4d342c98a715322..00902b6089bae44c9e5dc4a1664a30d3db4d0323 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser_2TC.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/CityBus_AT_Ser_2TC.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.1.0.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:vdecdef="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-N.A."> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/GB_12-gear.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/GB_12-gear.xml index 1df1671cc57e3b43b1426dc57f12a0fd26d2d27d..90369ac624447a9a88271a4b9f06a5846c0a083c 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/GB_12-gear.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/GB_12-gear.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Gearbox> <Data id="GBX-12gear_Hugo"> <Manufacturer>N.A.</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Generic Engine.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Generic Engine.xml index e124d308c9f8348f0f8a9f4142ddabd63c50dd72..b7154d1528d62ea4c2ab0c461d47dfff4300e2b5 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Generic Engine.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Generic Engine.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Engine> <Data id="ENG-gooZah3D"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> @@ -12,148 +12,146 @@ <RatedSpeed>1800</RatedSpeed> <RatedPower>325000</RatedPower> <MaxEngineTorque>2100</MaxEngineTorque> - <WHTCUrban>1.04</WHTCUrban> - <WHTCRural>1.01</WHTCRural> - <WHTCMotorway>1.00</WHTCMotorway> + <WHTCUrban>1.0400</WHTCUrban> + <WHTCRural>1.0100</WHTCRural> + <WHTCMotorway>1.0000</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>Diesel CI</FuelType> <FuelConsumptionMap> -<Entry engineSpeed='600.00' torque='-150.00' fuelConsumption='0.00'/> -<Entry engineSpeed='600.00' torque='0.00' fuelConsumption='1488.18'/> -<Entry engineSpeed='600.00' torque='216.90' fuelConsumption='3609.53'/> -<Entry engineSpeed='600.00' torque='433.80' fuelConsumption='6055.65'/> -<Entry engineSpeed='600.00' torque='650.70' fuelConsumption='8756.65'/> -<Entry engineSpeed='600.00' torque='867.60' fuelConsumption='10922.44'/> -<Entry engineSpeed='600.00' torque='1084.50' fuelConsumption='13315.08'/> -<Entry engineSpeed='600.00' torque='1301.40' fuelConsumption='15886.96'/> -<Entry engineSpeed='600.00' torque='1518.30' fuelConsumption='18459.52'/> -<Entry engineSpeed='600.00' torque='1735.20' fuelConsumption='21032.07'/> -<Entry engineSpeed='600.00' torque='1952.10' fuelConsumption='23604.64'/> -<Entry engineSpeed='600.00' torque='2169.00' fuelConsumption='26177.20'/> -<Entry engineSpeed='748.90' torque='-153.25' fuelConsumption='0.00'/> -<Entry engineSpeed='748.90' torque='0.00' fuelConsumption='1807.12'/> -<Entry engineSpeed='748.90' torque='216.90' fuelConsumption='4373.53'/> -<Entry engineSpeed='748.90' torque='433.80' fuelConsumption='7475.64'/> -<Entry engineSpeed='748.90' torque='650.70' fuelConsumption='10457.98'/> -<Entry engineSpeed='748.90' torque='867.60' fuelConsumption='13478.84'/> -<Entry engineSpeed='748.90' torque='1084.50' fuelConsumption='16596.51'/> -<Entry engineSpeed='748.90' torque='1301.40' fuelConsumption='19894.53'/> -<Entry engineSpeed='748.90' torque='1518.30' fuelConsumption='23170.22'/> -<Entry engineSpeed='748.90' torque='1735.20' fuelConsumption='26588.36'/> -<Entry engineSpeed='748.90' torque='1952.10' fuelConsumption='29968.67'/> -<Entry engineSpeed='748.90' torque='2169.00' fuelConsumption='33353.96'/> -<Entry engineSpeed='897.80' torque='-159.33' fuelConsumption='0.00'/> -<Entry engineSpeed='897.80' torque='0.00' fuelConsumption='2408.37'/> -<Entry engineSpeed='897.80' torque='216.90' fuelConsumption='5478.92'/> -<Entry engineSpeed='897.80' torque='433.80' fuelConsumption='8922.38'/> -<Entry engineSpeed='897.80' torque='650.70' fuelConsumption='12260.27'/> -<Entry engineSpeed='897.80' torque='867.60' fuelConsumption='15955.34'/> -<Entry engineSpeed='897.80' torque='1084.50' fuelConsumption='19735.59'/> -<Entry engineSpeed='897.80' torque='1301.40' fuelConsumption='23532.52'/> -<Entry engineSpeed='897.80' torque='1518.30' fuelConsumption='27401.60'/> -<Entry engineSpeed='897.80' torque='1735.20' fuelConsumption='31431.48'/> -<Entry engineSpeed='897.80' torque='1952.10' fuelConsumption='35551.49'/> -<Entry engineSpeed='897.80' torque='2169.00' fuelConsumption='39938.19'/> -<Entry engineSpeed='1046.70' torque='-167.79' fuelConsumption='0.00'/> -<Entry engineSpeed='1046.70' torque='0.00' fuelConsumption='3027.57'/> -<Entry engineSpeed='1046.70' torque='216.90' fuelConsumption='6592.96'/> -<Entry engineSpeed='1046.70' torque='433.80' fuelConsumption='10304.72'/> -<Entry engineSpeed='1046.70' torque='650.70' fuelConsumption='14130.84'/> -<Entry engineSpeed='1046.70' torque='867.60' fuelConsumption='18430.08'/> -<Entry engineSpeed='1046.70' torque='1084.50' fuelConsumption='22831.37'/> -<Entry engineSpeed='1046.70' torque='1301.40' fuelConsumption='27074.27'/> -<Entry engineSpeed='1046.70' torque='1518.30' fuelConsumption='31464.60'/> -<Entry engineSpeed='1046.70' torque='1735.20' fuelConsumption='36010.76'/> -<Entry engineSpeed='1046.70' torque='1952.10' fuelConsumption='40847.22'/> -<Entry engineSpeed='1046.70' torque='2169.00' fuelConsumption='46065.97'/> -<Entry engineSpeed='1195.57' torque='-178.58' fuelConsumption='0.00'/> -<Entry engineSpeed='1195.57' torque='0.00' fuelConsumption='3363.15'/> -<Entry engineSpeed='1195.57' torque='216.90' fuelConsumption='7335.38'/> -<Entry engineSpeed='1195.57' torque='433.80' fuelConsumption='11515.29'/> -<Entry engineSpeed='1195.57' torque='650.70' fuelConsumption='16035.00'/> -<Entry engineSpeed='1195.57' torque='867.60' fuelConsumption='20991.82'/> -<Entry engineSpeed='1195.57' torque='1084.50' fuelConsumption='25994.51'/> -<Entry engineSpeed='1195.57' torque='1301.40' fuelConsumption='30827.23'/> -<Entry engineSpeed='1195.57' torque='1518.30' fuelConsumption='35706.34'/> -<Entry engineSpeed='1195.57' torque='1735.20' fuelConsumption='40827.13'/> -<Entry engineSpeed='1195.57' torque='1952.10' fuelConsumption='46406.83'/> -<Entry engineSpeed='1195.57' torque='2169.00' fuelConsumption='51871.18'/> -<Entry engineSpeed='1359.19' torque='-197.42' fuelConsumption='0.00'/> -<Entry engineSpeed='1359.19' torque='0.00' fuelConsumption='4184.19'/> -<Entry engineSpeed='1359.19' torque='216.90' fuelConsumption='8425.73'/> -<Entry engineSpeed='1359.19' torque='433.80' fuelConsumption='13344.09'/> -<Entry engineSpeed='1359.19' torque='650.70' fuelConsumption='18488.94'/> -<Entry engineSpeed='1359.19' torque='867.60' fuelConsumption='23710.52'/> -<Entry engineSpeed='1359.19' torque='1084.50' fuelConsumption='29183.94'/> -<Entry engineSpeed='1359.19' torque='1301.40' fuelConsumption='34869.73'/> -<Entry engineSpeed='1359.19' torque='1518.30' fuelConsumption='40569.44'/> -<Entry engineSpeed='1359.19' torque='1735.20' fuelConsumption='46859.18'/> -<Entry engineSpeed='1359.19' torque='1952.10' fuelConsumption='53535.69'/> -<Entry engineSpeed='1359.19' torque='2169.00' fuelConsumption='59527.43'/> -<Entry engineSpeed='1484.00' torque='-216.03' fuelConsumption='0.00'/> -<Entry engineSpeed='1484.00' torque='0.00' fuelConsumption='4778.54'/> -<Entry engineSpeed='1484.00' torque='216.90' fuelConsumption='9374.62'/> -<Entry engineSpeed='1484.00' torque='433.80' fuelConsumption='14744.80'/> -<Entry engineSpeed='1484.00' torque='650.70' fuelConsumption='20327.76'/> -<Entry engineSpeed='1484.00' torque='867.60' fuelConsumption='26067.43'/> -<Entry engineSpeed='1484.00' torque='1084.50' fuelConsumption='31952.86'/> -<Entry engineSpeed='1484.00' torque='1301.40' fuelConsumption='38111.10'/> -<Entry engineSpeed='1484.00' torque='1518.30' fuelConsumption='44443.35'/> -<Entry engineSpeed='1484.00' torque='1735.20' fuelConsumption='51470.04'/> -<Entry engineSpeed='1484.00' torque='1952.10' fuelConsumption='58756.61'/> -<Entry engineSpeed='1484.00' torque='2169.00' fuelConsumption='65464.76'/> -<Entry engineSpeed='1608.90' torque='-236.34' fuelConsumption='0.00'/> -<Entry engineSpeed='1608.90' torque='0.00' fuelConsumption='5366.63'/> -<Entry engineSpeed='1608.90' torque='216.90' fuelConsumption='10403.91'/> -<Entry engineSpeed='1608.90' torque='433.80' fuelConsumption='16163.11'/> -<Entry engineSpeed='1608.90' torque='650.70' fuelConsumption='22182.12'/> -<Entry engineSpeed='1608.90' torque='867.60' fuelConsumption='28597.95'/> -<Entry engineSpeed='1608.90' torque='1084.50' fuelConsumption='34917.01'/> -<Entry engineSpeed='1608.90' torque='1301.40' fuelConsumption='41482.64'/> -<Entry engineSpeed='1608.90' torque='1518.30' fuelConsumption='48448.45'/> -<Entry engineSpeed='1608.90' torque='1735.20' fuelConsumption='56115.31'/> -<Entry engineSpeed='1608.90' torque='1952.10' fuelConsumption='63908.02'/> -<Entry engineSpeed='1608.90' torque='2169.00' fuelConsumption='71473.19'/> -<Entry engineSpeed='1733.80' torque='-253.92' fuelConsumption='0.00'/> -<Entry engineSpeed='1733.80' torque='0.00' fuelConsumption='6131.02'/> -<Entry engineSpeed='1733.80' torque='216.90' fuelConsumption='11766.81'/> -<Entry engineSpeed='1733.80' torque='433.80' fuelConsumption='17828.63'/> -<Entry engineSpeed='1733.80' torque='650.70' fuelConsumption='24479.55'/> -<Entry engineSpeed='1733.80' torque='867.60' fuelConsumption='31562.49'/> -<Entry engineSpeed='1733.80' torque='1084.50' fuelConsumption='38232.16'/> -<Entry engineSpeed='1733.80' torque='1301.40' fuelConsumption='45509.86'/> -<Entry engineSpeed='1733.80' torque='1518.30' fuelConsumption='53112.67'/> -<Entry engineSpeed='1733.80' torque='1735.20' fuelConsumption='61204.37'/> -<Entry engineSpeed='1733.80' torque='1952.10' fuelConsumption='69616.48'/> -<Entry engineSpeed='1733.80' torque='2169.00' fuelConsumption='77908.71'/> -<Entry engineSpeed='1858.61' torque='-274.22' fuelConsumption='0.00'/> -<Entry engineSpeed='1858.61' torque='0.00' fuelConsumption='7348.60'/> -<Entry engineSpeed='1858.61' torque='216.90' fuelConsumption='13406.42'/> -<Entry engineSpeed='1858.61' torque='433.80' fuelConsumption='19725.74'/> -<Entry engineSpeed='1858.61' torque='650.70' fuelConsumption='26797.91'/> -<Entry engineSpeed='1858.61' torque='867.60' fuelConsumption='34515.72'/> -<Entry engineSpeed='1858.61' torque='1084.50' fuelConsumption='42106.72'/> -<Entry engineSpeed='1858.61' torque='1301.40' fuelConsumption='50047.02'/> -<Entry engineSpeed='1858.61' torque='1518.30' fuelConsumption='58207.47'/> -<Entry engineSpeed='1858.61' torque='1735.20' fuelConsumption='66630.83'/> -<Entry engineSpeed='1858.61' torque='1952.10' fuelConsumption='75353.62'/> -<Entry engineSpeed='1858.61' torque='2169.00' fuelConsumption='84031.99'/> - - + <Entry engineSpeed='600.00' torque='-150.00' fuelConsumption='0.00'/> + <Entry engineSpeed='600.00' torque='0.00' fuelConsumption='1488.18'/> + <Entry engineSpeed='600.00' torque='216.90' fuelConsumption='3609.53'/> + <Entry engineSpeed='600.00' torque='433.80' fuelConsumption='6055.65'/> + <Entry engineSpeed='600.00' torque='650.70' fuelConsumption='8756.65'/> + <Entry engineSpeed='600.00' torque='867.60' fuelConsumption='10922.44'/> + <Entry engineSpeed='600.00' torque='1084.50' fuelConsumption='13315.08'/> + <Entry engineSpeed='600.00' torque='1301.40' fuelConsumption='15886.96'/> + <Entry engineSpeed='600.00' torque='1518.30' fuelConsumption='18459.52'/> + <Entry engineSpeed='600.00' torque='1735.20' fuelConsumption='21032.07'/> + <Entry engineSpeed='600.00' torque='1952.10' fuelConsumption='23604.64'/> + <Entry engineSpeed='600.00' torque='2169.00' fuelConsumption='26177.20'/> + <Entry engineSpeed='748.90' torque='-153.25' fuelConsumption='0.00'/> + <Entry engineSpeed='748.90' torque='0.00' fuelConsumption='1807.12'/> + <Entry engineSpeed='748.90' torque='216.90' fuelConsumption='4373.53'/> + <Entry engineSpeed='748.90' torque='433.80' fuelConsumption='7475.64'/> + <Entry engineSpeed='748.90' torque='650.70' fuelConsumption='10457.98'/> + <Entry engineSpeed='748.90' torque='867.60' fuelConsumption='13478.84'/> + <Entry engineSpeed='748.90' torque='1084.50' fuelConsumption='16596.51'/> + <Entry engineSpeed='748.90' torque='1301.40' fuelConsumption='19894.53'/> + <Entry engineSpeed='748.90' torque='1518.30' fuelConsumption='23170.22'/> + <Entry engineSpeed='748.90' torque='1735.20' fuelConsumption='26588.36'/> + <Entry engineSpeed='748.90' torque='1952.10' fuelConsumption='29968.67'/> + <Entry engineSpeed='748.90' torque='2169.00' fuelConsumption='33353.96'/> + <Entry engineSpeed='897.80' torque='-159.33' fuelConsumption='0.00'/> + <Entry engineSpeed='897.80' torque='0.00' fuelConsumption='2408.37'/> + <Entry engineSpeed='897.80' torque='216.90' fuelConsumption='5478.92'/> + <Entry engineSpeed='897.80' torque='433.80' fuelConsumption='8922.38'/> + <Entry engineSpeed='897.80' torque='650.70' fuelConsumption='12260.27'/> + <Entry engineSpeed='897.80' torque='867.60' fuelConsumption='15955.34'/> + <Entry engineSpeed='897.80' torque='1084.50' fuelConsumption='19735.59'/> + <Entry engineSpeed='897.80' torque='1301.40' fuelConsumption='23532.52'/> + <Entry engineSpeed='897.80' torque='1518.30' fuelConsumption='27401.60'/> + <Entry engineSpeed='897.80' torque='1735.20' fuelConsumption='31431.48'/> + <Entry engineSpeed='897.80' torque='1952.10' fuelConsumption='35551.49'/> + <Entry engineSpeed='897.80' torque='2169.00' fuelConsumption='39938.19'/> + <Entry engineSpeed='1046.70' torque='-167.79' fuelConsumption='0.00'/> + <Entry engineSpeed='1046.70' torque='0.00' fuelConsumption='3027.57'/> + <Entry engineSpeed='1046.70' torque='216.90' fuelConsumption='6592.96'/> + <Entry engineSpeed='1046.70' torque='433.80' fuelConsumption='10304.72'/> + <Entry engineSpeed='1046.70' torque='650.70' fuelConsumption='14130.84'/> + <Entry engineSpeed='1046.70' torque='867.60' fuelConsumption='18430.08'/> + <Entry engineSpeed='1046.70' torque='1084.50' fuelConsumption='22831.37'/> + <Entry engineSpeed='1046.70' torque='1301.40' fuelConsumption='27074.27'/> + <Entry engineSpeed='1046.70' torque='1518.30' fuelConsumption='31464.60'/> + <Entry engineSpeed='1046.70' torque='1735.20' fuelConsumption='36010.76'/> + <Entry engineSpeed='1046.70' torque='1952.10' fuelConsumption='40847.22'/> + <Entry engineSpeed='1046.70' torque='2169.00' fuelConsumption='46065.97'/> + <Entry engineSpeed='1195.57' torque='-178.58' fuelConsumption='0.00'/> + <Entry engineSpeed='1195.57' torque='0.00' fuelConsumption='3363.15'/> + <Entry engineSpeed='1195.57' torque='216.90' fuelConsumption='7335.38'/> + <Entry engineSpeed='1195.57' torque='433.80' fuelConsumption='11515.29'/> + <Entry engineSpeed='1195.57' torque='650.70' fuelConsumption='16035.00'/> + <Entry engineSpeed='1195.57' torque='867.60' fuelConsumption='20991.82'/> + <Entry engineSpeed='1195.57' torque='1084.50' fuelConsumption='25994.51'/> + <Entry engineSpeed='1195.57' torque='1301.40' fuelConsumption='30827.23'/> + <Entry engineSpeed='1195.57' torque='1518.30' fuelConsumption='35706.34'/> + <Entry engineSpeed='1195.57' torque='1735.20' fuelConsumption='40827.13'/> + <Entry engineSpeed='1195.57' torque='1952.10' fuelConsumption='46406.83'/> + <Entry engineSpeed='1195.57' torque='2169.00' fuelConsumption='51871.18'/> + <Entry engineSpeed='1359.19' torque='-197.42' fuelConsumption='0.00'/> + <Entry engineSpeed='1359.19' torque='0.00' fuelConsumption='4184.19'/> + <Entry engineSpeed='1359.19' torque='216.90' fuelConsumption='8425.73'/> + <Entry engineSpeed='1359.19' torque='433.80' fuelConsumption='13344.09'/> + <Entry engineSpeed='1359.19' torque='650.70' fuelConsumption='18488.94'/> + <Entry engineSpeed='1359.19' torque='867.60' fuelConsumption='23710.52'/> + <Entry engineSpeed='1359.19' torque='1084.50' fuelConsumption='29183.94'/> + <Entry engineSpeed='1359.19' torque='1301.40' fuelConsumption='34869.73'/> + <Entry engineSpeed='1359.19' torque='1518.30' fuelConsumption='40569.44'/> + <Entry engineSpeed='1359.19' torque='1735.20' fuelConsumption='46859.18'/> + <Entry engineSpeed='1359.19' torque='1952.10' fuelConsumption='53535.69'/> + <Entry engineSpeed='1359.19' torque='2169.00' fuelConsumption='59527.43'/> + <Entry engineSpeed='1484.00' torque='-216.03' fuelConsumption='0.00'/> + <Entry engineSpeed='1484.00' torque='0.00' fuelConsumption='4778.54'/> + <Entry engineSpeed='1484.00' torque='216.90' fuelConsumption='9374.62'/> + <Entry engineSpeed='1484.00' torque='433.80' fuelConsumption='14744.80'/> + <Entry engineSpeed='1484.00' torque='650.70' fuelConsumption='20327.76'/> + <Entry engineSpeed='1484.00' torque='867.60' fuelConsumption='26067.43'/> + <Entry engineSpeed='1484.00' torque='1084.50' fuelConsumption='31952.86'/> + <Entry engineSpeed='1484.00' torque='1301.40' fuelConsumption='38111.10'/> + <Entry engineSpeed='1484.00' torque='1518.30' fuelConsumption='44443.35'/> + <Entry engineSpeed='1484.00' torque='1735.20' fuelConsumption='51470.04'/> + <Entry engineSpeed='1484.00' torque='1952.10' fuelConsumption='58756.61'/> + <Entry engineSpeed='1484.00' torque='2169.00' fuelConsumption='65464.76'/> + <Entry engineSpeed='1608.90' torque='-236.34' fuelConsumption='0.00'/> + <Entry engineSpeed='1608.90' torque='0.00' fuelConsumption='5366.63'/> + <Entry engineSpeed='1608.90' torque='216.90' fuelConsumption='10403.91'/> + <Entry engineSpeed='1608.90' torque='433.80' fuelConsumption='16163.11'/> + <Entry engineSpeed='1608.90' torque='650.70' fuelConsumption='22182.12'/> + <Entry engineSpeed='1608.90' torque='867.60' fuelConsumption='28597.95'/> + <Entry engineSpeed='1608.90' torque='1084.50' fuelConsumption='34917.01'/> + <Entry engineSpeed='1608.90' torque='1301.40' fuelConsumption='41482.64'/> + <Entry engineSpeed='1608.90' torque='1518.30' fuelConsumption='48448.45'/> + <Entry engineSpeed='1608.90' torque='1735.20' fuelConsumption='56115.31'/> + <Entry engineSpeed='1608.90' torque='1952.10' fuelConsumption='63908.02'/> + <Entry engineSpeed='1608.90' torque='2169.00' fuelConsumption='71473.19'/> + <Entry engineSpeed='1733.80' torque='-253.92' fuelConsumption='0.00'/> + <Entry engineSpeed='1733.80' torque='0.00' fuelConsumption='6131.02'/> + <Entry engineSpeed='1733.80' torque='216.90' fuelConsumption='11766.81'/> + <Entry engineSpeed='1733.80' torque='433.80' fuelConsumption='17828.63'/> + <Entry engineSpeed='1733.80' torque='650.70' fuelConsumption='24479.55'/> + <Entry engineSpeed='1733.80' torque='867.60' fuelConsumption='31562.49'/> + <Entry engineSpeed='1733.80' torque='1084.50' fuelConsumption='38232.16'/> + <Entry engineSpeed='1733.80' torque='1301.40' fuelConsumption='45509.86'/> + <Entry engineSpeed='1733.80' torque='1518.30' fuelConsumption='53112.67'/> + <Entry engineSpeed='1733.80' torque='1735.20' fuelConsumption='61204.37'/> + <Entry engineSpeed='1733.80' torque='1952.10' fuelConsumption='69616.48'/> + <Entry engineSpeed='1733.80' torque='2169.00' fuelConsumption='77908.71'/> + <Entry engineSpeed='1858.61' torque='-274.22' fuelConsumption='0.00'/> + <Entry engineSpeed='1858.61' torque='0.00' fuelConsumption='7348.60'/> + <Entry engineSpeed='1858.61' torque='216.90' fuelConsumption='13406.42'/> + <Entry engineSpeed='1858.61' torque='433.80' fuelConsumption='19725.74'/> + <Entry engineSpeed='1858.61' torque='650.70' fuelConsumption='26797.91'/> + <Entry engineSpeed='1858.61' torque='867.60' fuelConsumption='34515.72'/> + <Entry engineSpeed='1858.61' torque='1084.50' fuelConsumption='42106.72'/> + <Entry engineSpeed='1858.61' torque='1301.40' fuelConsumption='50047.02'/> + <Entry engineSpeed='1858.61' torque='1518.30' fuelConsumption='58207.47'/> + <Entry engineSpeed='1858.61' torque='1735.20' fuelConsumption='66630.83'/> + <Entry engineSpeed='1858.61' torque='1952.10' fuelConsumption='75353.62'/> + <Entry engineSpeed='1858.61' torque='2169.00' fuelConsumption='84031.99'/> </FuelConsumptionMap> <FullLoadAndDragCurve> -<Entry engineSpeed='600.00' maxTorque='1188.00' dragTorque='-138.00'/> -<Entry engineSpeed='800.00' maxTorque='1661.00' dragTorque='-143.00'/> -<Entry engineSpeed='1000.00' maxTorque='2134.00' dragTorque='-152.00'/> -<Entry engineSpeed='1200.00' maxTorque='2134.00' dragTorque='-165.00'/> -<Entry engineSpeed='1400.00' maxTorque='2134.00' dragTorque='-187.00'/> -<Entry engineSpeed='1600.00' maxTorque='1928.00' dragTorque='-217.00'/> -<Entry engineSpeed='1800.00' maxTorque='1722.00' dragTorque='-244.00'/> -<Entry engineSpeed='2000.00' maxTorque='1253.00' dragTorque='-278.00'/> -<Entry engineSpeed='2100.00' maxTorque='750.00' dragTorque='-296.00'/> -<Entry engineSpeed='2200.00' maxTorque='0.00' dragTorque='-314.00'/> + <Entry engineSpeed='600.00' maxTorque='1188.00' dragTorque='-138.00'/> + <Entry engineSpeed='800.00' maxTorque='1661.00' dragTorque='-143.00'/> + <Entry engineSpeed='1000.00' maxTorque='2134.00' dragTorque='-152.00'/> + <Entry engineSpeed='1200.00' maxTorque='2134.00' dragTorque='-165.00'/> + <Entry engineSpeed='1400.00' maxTorque='2134.00' dragTorque='-187.00'/> + <Entry engineSpeed='1600.00' maxTorque='1928.00' dragTorque='-217.00'/> + <Entry engineSpeed='1800.00' maxTorque='1722.00' dragTorque='-244.00'/> + <Entry engineSpeed='2000.00' maxTorque='1253.00' dragTorque='-278.00'/> + <Entry engineSpeed='2100.00' maxTorque='750.00' dragTorque='-296.00'/> + <Entry engineSpeed='2200.00' maxTorque='0.00' dragTorque='-314.00'/> </FullLoadAndDragCurve> </Data> <Signature> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.MANUFACTURER.xml index ea2c5ec6f471ca58508eff9473a3ea5dd2ad46a6..e92e78777d1c49caa39e28bcd53a644e452783bb 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoOutput schemaVersion="0.7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.7.xsd"> +<VectoOutput schemaVersion="0.7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.7.xsd"> <Data id="RESULT-6e1bc850c57f40569c4c"> <Vehicle> <Model>N.A.</Model> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml index ff4511addd5aaac9a9f13e7ee842cd96e267b86e..89cf35e03b89e4bc9b4d2e9f933d31c49f02d34e 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class3"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml index 6b5433a542edd5db65a165a4cd5f7ee16c526f76..2f0769aad635f75fc4515fdcf01417b62036e4a5 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoOutput schemaVersion="0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.4.xsd"> +<VectoOutput schemaVersion="0.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.4 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.4.xsd"> <Data id="RESULT-b330b679d81a449f92ed"> <Vehicle> <VIN>standard values</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.xml index 0737f918d4eb8891d02581b209f89fabb10314af..9d9f7873207d2aa643c239ccbb9674f107568d82 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle/Tractor_4x2_vehicle-class-5_Generic vehicle.xml @@ -1,9 +1,9 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Tabelle1_Class-5_Genericvehicle"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml index 88dac2206d093cc074a8c70d343d5c088e2d0ae9..9500387481828cfbe07a1125c2d63bcc2fbd1e20 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoOutput schemaVersion="0.7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.7.xsd"> +<VectoOutput schemaVersion="0.7" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.7 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoOutputManufacturer.0.7.xsd"> <Data id="RESULT-db205f616a0b4ccc9fed"> <Vehicle> <Model>Tabelle1_Class-5_Genericvehicle</Model> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.xml index a392d712df00ea4ab263ef9acaded0f7a6a3a49e..97b96ff1e4d648aabac1230375bf90118d8796ab 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/GenericVehicle_CNG/Tractor_4x2_vehicle-class-5_Generic vehicle.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-Tabelle1_Class-5_Genericvehicle"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml index d5fc1df9a7bef06d1ef2abf1c5625f17dfc2517d..d169e6717c4e8ed842b63ef452318ad7628d0831 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/CompletedBus_34f.RSLT_MANUFACTURER.xml @@ -1,6 +1,12 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> +<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" +xmlns:mrf0.8="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" + xmlns:di="http://www.w3.org/2000/09/xmldsig#" + xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" + xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput v:\VectoCore\VectoCore\Resources\XSD/VectoOutputManufacturer.xsd"> <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-b2d5a208fb6d49b09083"> <Vehicle xsi:type="VehicleCompletedBusType"> <PrimaryVehicle> @@ -71,30 +77,32 @@ <DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</DigestValue> <CdxA>5.20</CdxA> </AirDrag> - <Auxiliaries xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="aux:CompletedVehicleAuxiliaryDataDeclarationType"> - <aux:ElectricSystem> - <aux:AlternatorTechnology>default</aux:AlternatorTechnology> - <aux:LEDLights> - <aux:Dayrunninglights>true</aux:Dayrunninglights> - <aux:Headlights>true</aux:Headlights> - <aux:Positionlights>true</aux:Positionlights> - <aux:Brakelights>true</aux:Brakelights> - <aux:Interiorlights>true</aux:Interiorlights> - </aux:LEDLights> - </aux:ElectricSystem> - <aux:HVAC> - <aux:SystemConfiguration>6</aux:SystemConfiguration> - <aux:CompressorType> - <aux:DriverAC>2-stage</aux:DriverAC> - <aux:PassengerAC>2-stage</aux:PassengerAC> - </aux:CompressorType> - <aux:AuxiliaryHeaterPower>30000</aux:AuxiliaryHeaterPower> - <aux:DoubleGlazing>true</aux:DoubleGlazing> - <aux:HeatPump>false</aux:HeatPump> - <aux:AdjustableAuxiliaryHeater>true</aux:AdjustableAuxiliaryHeater> - <aux:SeparateAirDistributionDucts>true</aux:SeparateAirDistributionDucts> - </aux:HVAC> - </Auxiliaries> + <mrf0.8:Auxiliaries xsi:type="AUX_Conventional_CompletedBusType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" > + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </mrf0.8:Auxiliaries> </Components> <InputDataSignature> <di:Reference> @@ -137,8 +145,8 @@ <AverageGearboxEfficiency unit="%">96.34</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">95.23</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>0.9840</FuelConsumptionFactor> - <Fuel type="Diesel CI"> +<!-- <FuelConsumptionFactor>0.9840</FuelConsumptionFactor> --> + <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">409.4</FuelConsumption> <FuelConsumption unit="g/t-km">80.1</FuelConsumption> <FuelConsumption unit="g/p-km">5.69</FuelConsumption> @@ -184,7 +192,7 @@ <AverageGearboxEfficiency unit="%">96.46</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">94.82</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.046</FuelConsumptionFactor> +<!-- <FuelConsumptionFactor>1.046</FuelConsumptionFactor>--> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">369.4</FuelConsumption> <FuelConsumption unit="g/t-km">214.4</FuelConsumption> @@ -231,7 +239,7 @@ <AverageGearboxEfficiency unit="%">97.45</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">91.58</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.025</FuelConsumptionFactor> +<!-- <FuelConsumptionFactor>1.025</FuelConsumptionFactor>--> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">276.0</FuelConsumption> <FuelConsumption unit="g/t-km">150.2</FuelConsumption> @@ -278,7 +286,7 @@ <AverageGearboxEfficiency unit="%">97.36</AverageGearboxEfficiency> <AverageAxlegearEfficiency unit="%">92.16</AverageAxlegearEfficiency> </VehiclePerformance> - <FuelConsumptionFactor>1.023</FuelConsumptionFactor> +<!-- <FuelConsumptionFactor>1.023</FuelConsumptionFactor>--> <Fuel type="Diesel CI"> <FuelConsumption unit="g/km">292.7</FuelConsumption> <FuelConsumption unit="g/t-km">63.7</FuelConsumption> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml index 57ec419a5fd1130d2de7298e4b9f7f872d502f80..e6e31b0f9c8b8b7250b064e35443ff673ab6173b 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml @@ -1,6 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> +<?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> +<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-35861c040b024dd292c3"> <Vehicle xsi:type="VehiclePrimaryBusType"> <Model>Generic Model</Model> @@ -91,19 +91,18 @@ <aux:Technology axleNumber="1">Variable displacement elec. controlled</aux:Technology> </aux:SteeringPump> <aux:ElectricSystem> - <aux:AlternatorTechnology>default</aux:AlternatorTechnology> - <aux:SmartElectrics>false</aux:SmartElectrics> - <aux:MaxAlternatorPower>15000</aux:MaxAlternatorPower> - <aux:ElectricStorageCapacity>50</aux:ElectricStorageCapacity> + <aux:AlternatorTechnology>conventional</aux:AlternatorTechnology> + <aux:SupplyFromHEVPossible>true</aux:SupplyFromHEVPossible> </aux:ElectricSystem> <aux:PneumaticSystem> <aux:SizeOfAirSupply>Large Supply 2-stage</aux:SizeOfAirSupply> + <aux:CompressorDrive>mechanically</aux:CompressorDrive> <aux:Clutch>none</aux:Clutch> <aux:CompressorRatio>1.000</aux:CompressorRatio> <aux:SmartCompressionSystem>false</aux:SmartCompressionSystem> <aux:SmartRegenerationSystem>false</aux:SmartRegenerationSystem> <aux:AirsuspensionControl>electronically</aux:AirsuspensionControl> - <aux:AdBlueDosing>true</aux:AdBlueDosing> + <aux:PneumaticSCRReagentDosing>true</aux:PneumaticSCRReagentDosing> </aux:PneumaticSystem> <aux:HVAC> <aux:AdjustableCoolantThermostat>true</aux:AdjustableCoolantThermostat> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.xml index 3b8a9919d3f236fd6510b210ddfb380664cc7f07..092a0cc84611f75c11d85ebbed4ed80dce7dbd36 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/primary_heavyBus group 42_non_Smart.xml @@ -1,11 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-PrimaryBus_nonSmart" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890_SmartPS</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +24,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Bus 6x2</Model> @@ -181,7 +190,7 @@ <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -190,10 +199,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" > <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -201,7 +210,7 @@ <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <Gears xsi:type="GearsDeclarationType"> + <Gears> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> @@ -2580,8 +2589,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2590,10 +2599,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" > <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2605,16 +2614,16 @@ <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" > <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2630,8 +2639,8 @@ <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2640,10 +2649,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" > <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -2713,8 +2722,8 @@ <Entry retarderSpeed="5900.00" torqueLoss="13.70" /> <Entry retarderSpeed="6000.00" torqueLoss="14.00" /> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2723,10 +2732,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" > <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3230,8 +3239,8 @@ <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3240,10 +3249,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" > <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3328,9 +3337,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3339,7 +3348,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3356,7 +3364,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml index db5c7d97ad54750e66bd9003fb32a4816f8f5c0f..32537dc27aa0ba0fd418c2f4520dee7ef9294c44 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/HeavyBus/vecto_vehicle-completed_heavyBus_34f.xml @@ -1,29 +1,32 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="CompletedVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> - <Model>Sample Bus Model</Model> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> - <LegislativeClass>M3</LegislativeClass> - <RegisteredClass>II+III</RegisteredClass> - <VehicleCode>CB</VehicleCode> - <CurbMassChassis>19400</CurbMassChassis> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>19400</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> - <RegisteredPassengers> - <LowerDeck>16</LowerDeck> - <UpperDeck>56</UpperDeck> - </RegisteredPassengers> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>16</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>56</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> <LowEntry>true</LowEntry> - <HeightIntegratedBody>4.000</HeightIntegratedBody> - <VehicleLength>13.890</VehicleLength> - <VehicleWidth>2.550</VehicleWidth> - <EntranceHeight>0.300</EntranceHeight> + <HeightIntegratedBody>4000</HeightIntegratedBody> + <VehicleLength>13890</VehicleLength> + <VehicleWidth>550</VehicleWidth> + <EntranceHeight>300</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -32,8 +35,8 @@ <CdxA_0>5.20</CdxA_0> <TransferredCdxA>5.20</TransferredCdxA> <DeclaredCdxA>5.20</DeclaredCdxA> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -42,29 +45,31 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> - <AlternatorTechnology>default</AlternatorTechnology> <LEDLights> + <Interiorlights>true</Interiorlights> <Dayrunninglights>true</Dayrunninglights> - <Headlights>true</Headlights> <Positionlights>true</Positionlights> <Brakelights>true</Brakelights> - <Interiorlights>true</Interiorlights> + <Headlights>true</Headlights> </LEDLights> </ElectricSystem> <HVAC> <SystemConfiguration>6</SystemConfiguration> - <CompressorType> - <DriverAC>2-stage</DriverAC> - <PassengerAC>2-stage</PassengerAC> - </CompressorType> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>30000</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> - <HeatPump>false</HeatPump> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> </HVAC> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/VTP_MediumLorry.vecto b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/VTP_MediumLorry.vecto index 0cab2d9df728b96f64b494f3078d0ba292bd5471..0da8ed888315c2d05ceaade18ec8b4e9b9d10965 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/VTP_MediumLorry.vecto +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/VTP_MediumLorry.vecto @@ -7,8 +7,8 @@ }, "Body": { "SavedInDeclMode": true, - "DeclarationVehicle": "vecto_vehicle-medium_lorry_4x2F.xml", - "ManufacturerRecord": "vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml", + "DeclarationVehicle": "vecto_vehicle-medium_lorry_4x2.xml", + "ManufacturerRecord": "vecto_vehicle-medium_lorry_4x2.RSLT_MANUFACTURER.xml", "Mileage": 30000.0, "NCVTestFuel": 42.5, "FanPowerCoefficients": [ diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2.xml similarity index 97% rename from VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.xml rename to VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2.xml index 2b916178fc07ab65165639f02acb6fd126d51f41..acbe550b87fcf45ced4f64655b27e83e56472ada 100644 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.xml +++ b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2.xml @@ -1,31 +1,41 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleMediumLorryDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="Vehicle_Conventional_MediumLorryDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> <Model>ML2r</Model> <VIN>standard values</VIN> <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N2</LegislativeClass> - <VehicleCategory>Van</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>2500</CurbMassChassis> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>2500</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>7000</TechnicalPermissibleMaximumLadenMass> - <CargoVolume>8.53</CargoVolume> <IdlingSpeed>800</IdlingSpeed> + <CargoVolume>8.530</CargoVolume> <RetarderType>None</RetarderType> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> + <VehicleTypeApprovalNumber>a</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="v2.6:VehicleComponentsNoAxlegearType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="ENG-130kW_IVT_3l" xsi:type="EngineDataDeclarationType"> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <v2.0:Data id="ENG-130kW_IVT_3l" xsi:type="EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>130kW engine</Model> <CertificationNumber>ENG-130kW_IVT_3l</CertificationNumber> @@ -365,8 +375,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry engineSpeed='3878.21' maxTorque='270.61' dragTorque='-63.57'/> <Entry engineSpeed='3987.18' maxTorque='235.95' dragTorque='-65.72'/> </FullLoadAndDragCurve> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <Reference URI="#ENG-130kW_IVT_3l" xmlns="http://www.w3.org/2000/09/xmldsig#"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -375,10 +385,10 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</di:DigestValue> </Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xsi:type="GearboxComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <v2.0:Data id="GB_6-gear_MT" xsi:type="v2.6:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="GB_6-gear_MT" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>GB_6-gear_MT</Model> <CertificationNumber>GB_6-gear_MT</CertificationNumber> @@ -386,9 +396,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <AppVersion>VectoCore</AppVersion> <TransmissionType>SMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>4.300</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gears> <Gear number="1"> <Ratio>5.375</Ratio> <TorqueLossMap> @@ -1520,9 +1528,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry inputSpeed='4000.00' inputTorque='5500.00' torqueLoss='244.00'/> </TorqueLossMap> </Gear> - </v2.6:Gears> + </Gears> </v2.0:Data> - <Signature> + <v2.0:Signature> <Reference URI="#GB_6-gear_MT" xmlns="http://www.w3.org/2000/09/xmldsig#"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1531,10 +1539,10 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</di:DigestValue> </Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <Retarder> + <v2.0:Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -1574,8 +1582,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry retarderSpeed="2900.00" torqueLoss="26.80"/> <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -1584,10 +1592,40 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</di:DigestValue> </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data xsi:type="AxlegearDataDeclarationType" id="AXL-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>4.300</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="0.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="0.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="0.00"/> + <Entry inputSpeed="5000.00" inputTorque="-5000.00" torqueLoss="0.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="0.00"/> + <Entry inputSpeed="5000.00" inputTorque="35000.00" torqueLoss="0.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleDriven</AxleType> @@ -1645,14 +1683,14 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> <Fan> <Technology>Crankshaft mounted - Bimetallic controlled visco clutch</Technology> </Fan> <SteeringPump> - <Technology>Fixed displacement</Technology> + <Technology axleNumber="1">Fixed displacement</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> @@ -1664,7 +1702,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Technology>Default</Technology> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_CUSTOMER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_CUSTOMER.xml deleted file mode 100644 index 5a15e24eaf6ac55188e3fb3724c19e5e388c05ef..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_CUSTOMER.xml +++ /dev/null @@ -1,149 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<VectoCustomerInformation schemaVersion="0.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:CustomerOutput:v0.8 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoOutputCustomer.0.8.xsd"> - <Data id="COC-e712642b655e49f29461"> - <Vehicle> - <Model>ML2r</Model> - <Manufacturer>Generic Vendor</Manufacturer> - <ManufacturerAddress>N.A.</ManufacturerAddress> - <VIN>standard values</VIN> - <LegislativeClass>N2</LegislativeClass> - <GrossVehicleMass unit="t">7.0</GrossVehicleMass> - <CurbMassChassis unit="kg">2500</CurbMassChassis> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - <AxleConfiguration>4x2F</AxleConfiguration> - <VehicleGroup>ML2r</VehicleGroup> - <VocationalVehicle>false</VocationalVehicle> - <SleeperCab>false</SleeperCab> - <ADAS> - <EngineStopStart>false</EngineStopStart> - <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> - <EcoRollWithEngineStop>false</EcoRollWithEngineStop> - <PredictiveCruiseControl>false</PredictiveCruiseControl> - </ADAS> - <EngineRatedPower unit="kW">130</EngineRatedPower> - <EngineDisplacement unit="ltr">3.0</EngineDisplacement> - <FuelTypes> - <FuelType>Diesel CI</FuelType> - </FuelTypes> - <TransmissionMainCertificationMethod>Standard values</TransmissionMainCertificationMethod> - <TransmissionType>SMT</TransmissionType> - <GearsCount>6</GearsCount> - <Retarder>false</Retarder> - <AxleRatio>4.300</AxleRatio> - <AverageRRCMotorVehicleTyres>0.0074</AverageRRCMotorVehicleTyres> - <AverageFuelEfficiencyLabelMotorVehicleTyres>E</AverageFuelEfficiencyLabelMotorVehicleTyres> - <InputDataSignature> - <di:Reference URI="#VEH-class5_Class-5_5t0"> - <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>hBQl3bPXtviHPjVq/jmOM8ai5kkHLooMWoTVJfzkuLQ=</di:DigestValue> - </di:Reference> - </InputDataSignature> - </Vehicle> - <ResultDataSignature> - <di:Reference URI="#RESULT-8a1c4eb391614a73b113"> - <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>Ymq1wujbJTpLLkbvcZZcMb0DkFHpOD6khpNPuRz89RI=</di:DigestValue> - </di:Reference> - </ResultDataSignature> - <Results> - <Status>success</Status> - <Result status="success"> - <Mission>Regional Delivery</Mission> - <Payload unit="kg">1129</Payload> - <FuelMode>single fuel mode</FuelMode> - <AverageSpeed unit="km/h">60.4</AverageSpeed> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">144.3</FuelConsumption> - <FuelConsumption unit="g/t-km">127.8</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.38</FuelConsumption> - <FuelConsumption unit="l/100km">17.3</FuelConsumption> - <FuelConsumption unit="l/t-km">0.153</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00764</FuelConsumption> - </Fuel> - <CO2 unit="g/km">451.5</CO2> - <CO2 unit="g/t-km">400.0</CO2> - <CO2 unit="g/m³-km">20.0</CO2> - </Result> - <Result status="success"> - <Mission>Regional Delivery</Mission> - <Payload unit="kg">224</Payload> - <FuelMode>single fuel mode</FuelMode> - <AverageSpeed unit="km/h">60.4</AverageSpeed> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">138.9</FuelConsumption> - <FuelConsumption unit="g/t-km">621.1</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.15</FuelConsumption> - <FuelConsumption unit="l/100km">16.6</FuelConsumption> - <FuelConsumption unit="l/t-km">0.743</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00735</FuelConsumption> - </Fuel> - <CO2 unit="g/km">434.7</CO2> - <CO2 unit="g/t-km">1944.2</CO2> - <CO2 unit="g/m³-km">19.2</CO2> - </Result> - <Result status="success"> - <Mission>Urban Delivery</Mission> - <Payload unit="kg">1129</Payload> - <FuelMode>single fuel mode</FuelMode> - <AverageSpeed unit="km/h">25.7</AverageSpeed> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">166.9</FuelConsumption> - <FuelConsumption unit="g/t-km">147.8</FuelConsumption> - <FuelConsumption unit="g/m³-km">7.38</FuelConsumption> - <FuelConsumption unit="l/100km">20.0</FuelConsumption> - <FuelConsumption unit="l/t-km">0.177</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00883</FuelConsumption> - </Fuel> - <CO2 unit="g/km">522.4</CO2> - <CO2 unit="g/t-km">462.7</CO2> - <CO2 unit="g/m³-km">23.1</CO2> - </Result> - <Result status="success"> - <Mission>Urban Delivery</Mission> - <Payload unit="kg">224</Payload> - <FuelMode>single fuel mode</FuelMode> - <AverageSpeed unit="km/h">25.7</AverageSpeed> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">154.0</FuelConsumption> - <FuelConsumption unit="g/t-km">688.9</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.82</FuelConsumption> - <FuelConsumption unit="l/100km">18.4</FuelConsumption> - <FuelConsumption unit="l/t-km">0.824</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00815</FuelConsumption> - </Fuel> - <CO2 unit="g/km">482.1</CO2> - <CO2 unit="g/t-km">2156.4</CO2> - <CO2 unit="g/m³-km">21.3</CO2> - </Result> - <Summary> - <SpecificCO2Emissions unit="gCO2/tkm">699.0</SpecificCO2Emissions> - <AveragePayload unit="t">0.676</AveragePayload> - </Summary> - </Results> - <ApplicationInformation> - <SimulationToolVersion>0.6.0.1875-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2020-02-22T15:44:10.8724832Z</Date> - </ApplicationInformation> - </Data> - <Signature> - <di:Reference URI="#COC-e712642b655e49f29461"> - <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>CT2Kx2BI0ubf703c2nNHGHCBS7Dq1EzbzDiNWLRJuEI=</di:DigestValue> - </di:Reference> - </Signature> -</VectoCustomerInformation> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml b/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml deleted file mode 100644 index 3b40af410eb325f0ced41be945b01428ff500a4f..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/Integration/VTPMode/MediumLorry/vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml +++ /dev/null @@ -1,273 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<?xml-stylesheet href="https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/CSS/VectoReports.css"?> -<mrf:VectoOutput xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:v0.8" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:mrf="urn:tugraz:ivt:VectoAPI:DeclarationOutput" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD//DEV/VectoOutputManufacturer.xsd"> - <mrf:Data xsi:type="VectoOutputDataType" id="RESULT-8a1c4eb391614a73b113"> - <Vehicle xsi:type="VehicleTruckType"> - <Model>ML2r</Model> - <Manufacturer>Generic Vendor</Manufacturer> - <ManufacturerAddress>N.A.</ManufacturerAddress> - <VIN>standard values</VIN> - <LegislativeClass>N2</LegislativeClass> - <GrossVehicleMass unit="t">7.0</GrossVehicleMass> - <CurbMassChassis unit="kg">2500</CurbMassChassis> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <HybridElectricHDV>false</HybridElectricHDV> - <DualFuelVehicle>false</DualFuelVehicle> - <AxleConfiguration>4x2F</AxleConfiguration> - <VehicleGroup>ML2r</VehicleGroup> - <VocationalVehicle>false</VocationalVehicle> - <SleeperCab>false</SleeperCab> - <PTO>false</PTO> - <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> - </ADAS> - <Components xsi:type="ComponentsTruckFWDType"> - <Engine> - <Model>130kW engine</Model> - <CertificationNumber>ENG-130kW_IVT_3l</CertificationNumber> - <DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</DigestValue> - <RatedPower unit="kW">130</RatedPower> - <IdlingSpeed unit="rpm">800</IdlingSpeed> - <RatedSpeed unit="rpm">3600</RatedSpeed> - <Displacement unit="ltr">3.0</Displacement> - <WHRType>none</WHRType> - <Mode> - <FuelType>Diesel CI</FuelType> - </Mode> - </Engine> - <Gearbox> - <Model>GB_6-gear_MT</Model> - <CertificationMethod>Standard values</CertificationMethod> - <DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</DigestValue> - <TransmissionType>SMT</TransmissionType> - <GearsCount>6</GearsCount> - <AxlegearRatio>4.300</AxlegearRatio> - <TransmissionRatioFinalGear>0.791</TransmissionRatioFinalGear> - </Gearbox> - <Retarder> - <RetarderType>None</RetarderType> - </Retarder> - <AirDrag> - <Model>N.A.</Model> - <CertificationMethod>Measured</CertificationMethod> - <CertificationNumber>generic cabin</CertificationNumber> - <DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</DigestValue> - <CdxA>5.80</CdxA> - </AirDrag> - <AxleWheels> - <Axle axleNumber="1"> - <TyreDimension>215/75 R17.5</TyreDimension> - <TyreCertificationNumber>TYRE-235/65 R16C</TyreCertificationNumber> - <DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</DigestValue> - <TyreRRCDeclared>0.0074</TyreRRCDeclared> - <TwinTyres>false</TwinTyres> - </Axle> - <Axle axleNumber="2"> - <TyreDimension>215/75 R17.5</TyreDimension> - <TyreCertificationNumber>TYRE-215/75 R17.5</TyreCertificationNumber> - <DigestValue>KftUzK5FhNC46W/dX26TBdIvMQxDF/f6oBOa68fs8A8=</DigestValue> - <TyreRRCDeclared>0.0074</TyreRRCDeclared> - <TwinTyres>true</TwinTyres> - </Axle> - </AxleWheels> - <Auxiliaries> - <FanTechnology>Crankshaft mounted - Bimetallic controlled visco clutch</FanTechnology> - <SteeringPumpTechnology>Fixed displacement</SteeringPumpTechnology> - <ElectricSystemTechnology>Standard technology - LED headlights, all</ElectricSystemTechnology> - <PneumaticSystemTechnology>Vacuum pump</PneumaticSystemTechnology> - <HVACTechnology>Default</HVACTechnology> - </Auxiliaries> - </Components> - <InputDataSignature> - <di:Reference URI="#VEH-class5_Class-5_5t0"> - <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>hBQl3bPXtviHPjVq/jmOM8ai5kkHLooMWoTVJfzkuLQ=</di:DigestValue> - </di:Reference> - </InputDataSignature> - </Vehicle> - <Results> - <Status>success</Status> - <Result status="success"> - <Mission>Regional Delivery</Mission> - <Distance unit="km">100.000</Distance> - <SimulationParameters> - <TotalVehicleMass unit="kg">4429</TotalVehicleMass> - <Payload unit="kg">1129</Payload> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <VehiclePerformance> - <AverageSpeed unit="km/h">60.4</AverageSpeed> - <AverageDrivingSpeed unit="km/h">69.0</AverageDrivingSpeed> - <MinSpeed unit="km/h">0.0</MinSpeed> - <MaxSpeed unit="km/h">85.0</MaxSpeed> - <MaxDeceleration unit="m/s²">1.00</MaxDeceleration> - <MaxAcceleration unit="m/s²">1.00</MaxAcceleration> - <FullLoadDrivingtimePercentage>7.16</FullLoadDrivingtimePercentage> - <GearshiftCount>111</GearshiftCount> - <EngineSpeedDriving> - <Min unit="rpm">800.0</Min> - <Average unit="rpm">1936.1</Average> - <Max unit="rpm">3196.3</Max> - </EngineSpeedDriving> - <AverageGearboxEfficiency unit="%">88.74</AverageGearboxEfficiency> - <AverageAxlegearEfficiency unit="%">100.00</AverageAxlegearEfficiency> - </VehiclePerformance> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">144.3</FuelConsumption> - <FuelConsumption unit="g/t-km">127.8</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.38</FuelConsumption> - <FuelConsumption unit="MJ/km">6.16</FuelConsumption> - <FuelConsumption unit="MJ/t-km">5.46</FuelConsumption> - <FuelConsumption unit="MJ/m³-km">0.273</FuelConsumption> - <FuelConsumption unit="l/100km">17.3</FuelConsumption> - <FuelConsumption unit="l/t-km">0.153</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00764</FuelConsumption> - </Fuel> - <CO2 unit="g/km">451.5</CO2> - <CO2 unit="g/t-km">400.0</CO2> - <CO2 unit="g/m³-km">20.0</CO2> - </Result> - <Result status="success"> - <Mission>Regional Delivery</Mission> - <Distance unit="km">100.000</Distance> - <SimulationParameters> - <TotalVehicleMass unit="kg">3524</TotalVehicleMass> - <Payload unit="kg">224</Payload> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <VehiclePerformance> - <AverageSpeed unit="km/h">60.4</AverageSpeed> - <AverageDrivingSpeed unit="km/h">69.1</AverageDrivingSpeed> - <MinSpeed unit="km/h">0.0</MinSpeed> - <MaxSpeed unit="km/h">85.0</MaxSpeed> - <MaxDeceleration unit="m/s²">1.00</MaxDeceleration> - <MaxAcceleration unit="m/s²">1.00</MaxAcceleration> - <FullLoadDrivingtimePercentage>3.58</FullLoadDrivingtimePercentage> - <GearshiftCount>100</GearshiftCount> - <EngineSpeedDriving> - <Min unit="rpm">800.0</Min> - <Average unit="rpm">1925.5</Average> - <Max unit="rpm">2876.2</Max> - </EngineSpeedDriving> - <AverageGearboxEfficiency unit="%">88.37</AverageGearboxEfficiency> - <AverageAxlegearEfficiency unit="%">100.00</AverageAxlegearEfficiency> - </VehiclePerformance> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">138.9</FuelConsumption> - <FuelConsumption unit="g/t-km">621.1</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.15</FuelConsumption> - <FuelConsumption unit="MJ/km">5.93</FuelConsumption> - <FuelConsumption unit="MJ/t-km">26.5</FuelConsumption> - <FuelConsumption unit="MJ/m³-km">0.262</FuelConsumption> - <FuelConsumption unit="l/100km">16.6</FuelConsumption> - <FuelConsumption unit="l/t-km">0.743</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00735</FuelConsumption> - </Fuel> - <CO2 unit="g/km">434.7</CO2> - <CO2 unit="g/t-km">1944.2</CO2> - <CO2 unit="g/m³-km">19.2</CO2> - </Result> - <Result status="success"> - <Mission>Urban Delivery</Mission> - <Distance unit="km">99.999</Distance> - <SimulationParameters> - <TotalVehicleMass unit="kg">4429</TotalVehicleMass> - <Payload unit="kg">1129</Payload> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <VehiclePerformance> - <AverageSpeed unit="km/h">25.7</AverageSpeed> - <AverageDrivingSpeed unit="km/h">33.7</AverageDrivingSpeed> - <MinSpeed unit="km/h">0.0</MinSpeed> - <MaxSpeed unit="km/h">85.0</MaxSpeed> - <MaxDeceleration unit="m/s²">1.45</MaxDeceleration> - <MaxAcceleration unit="m/s²">1.00</MaxAcceleration> - <FullLoadDrivingtimePercentage>5.23</FullLoadDrivingtimePercentage> - <GearshiftCount>796</GearshiftCount> - <EngineSpeedDriving> - <Min unit="rpm">800.0</Min> - <Average unit="rpm">1709.3</Average> - <Max unit="rpm">3671.2</Max> - </EngineSpeedDriving> - <AverageGearboxEfficiency unit="%">83.39</AverageGearboxEfficiency> - <AverageAxlegearEfficiency unit="%">100.00</AverageAxlegearEfficiency> - </VehiclePerformance> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">166.9</FuelConsumption> - <FuelConsumption unit="g/t-km">147.8</FuelConsumption> - <FuelConsumption unit="g/m³-km">7.38</FuelConsumption> - <FuelConsumption unit="MJ/km">7.13</FuelConsumption> - <FuelConsumption unit="MJ/t-km">6.31</FuelConsumption> - <FuelConsumption unit="MJ/m³-km">0.315</FuelConsumption> - <FuelConsumption unit="l/100km">20.0</FuelConsumption> - <FuelConsumption unit="l/t-km">0.177</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00883</FuelConsumption> - </Fuel> - <CO2 unit="g/km">522.4</CO2> - <CO2 unit="g/t-km">462.7</CO2> - <CO2 unit="g/m³-km">23.1</CO2> - </Result> - <Result status="success"> - <Mission>Urban Delivery</Mission> - <Distance unit="km">99.999</Distance> - <SimulationParameters> - <TotalVehicleMass unit="kg">3524</TotalVehicleMass> - <Payload unit="kg">224</Payload> - <FuelMode>single fuel mode</FuelMode> - </SimulationParameters> - <VehiclePerformance> - <AverageSpeed unit="km/h">25.7</AverageSpeed> - <AverageDrivingSpeed unit="km/h">33.7</AverageDrivingSpeed> - <MinSpeed unit="km/h">0.0</MinSpeed> - <MaxSpeed unit="km/h">85.0</MaxSpeed> - <MaxDeceleration unit="m/s²">1.41</MaxDeceleration> - <MaxAcceleration unit="m/s²">1.00</MaxAcceleration> - <FullLoadDrivingtimePercentage>3.86</FullLoadDrivingtimePercentage> - <GearshiftCount>747</GearshiftCount> - <EngineSpeedDriving> - <Min unit="rpm">800.0</Min> - <Average unit="rpm">1695.9</Average> - <Max unit="rpm">3677.2</Max> - </EngineSpeedDriving> - <AverageGearboxEfficiency unit="%">81.68</AverageGearboxEfficiency> - <AverageAxlegearEfficiency unit="%">100.00</AverageAxlegearEfficiency> - </VehiclePerformance> - <Fuel type="Diesel CI"> - <FuelConsumption unit="g/km">154.0</FuelConsumption> - <FuelConsumption unit="g/t-km">688.9</FuelConsumption> - <FuelConsumption unit="g/m³-km">6.82</FuelConsumption> - <FuelConsumption unit="MJ/km">6.58</FuelConsumption> - <FuelConsumption unit="MJ/t-km">29.4</FuelConsumption> - <FuelConsumption unit="MJ/m³-km">0.291</FuelConsumption> - <FuelConsumption unit="l/100km">18.4</FuelConsumption> - <FuelConsumption unit="l/t-km">0.824</FuelConsumption> - <FuelConsumption unit="l/m³-km">0.00815</FuelConsumption> - </Fuel> - <CO2 unit="g/km">482.1</CO2> - <CO2 unit="g/t-km">2156.4</CO2> - <CO2 unit="g/m³-km">21.3</CO2> - </Result> - </Results> - <ApplicationInformation> - <SimulationToolVersion>0.6.0.1875-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> - <Date>2020-02-22T15:44:10.8645043Z</Date> - </ApplicationInformation> - </mrf:Data> - <mrf:Signature> - <di:Reference URI="#RESULT-8a1c4eb391614a73b113"> - <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>Ymq1wujbJTpLLkbvcZZcMb0DkFHpOD6khpNPuRz89RI=</di:DigestValue> - </di:Reference> - </mrf:Signature> -</mrf:VectoOutput> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml index 283f53b26f531c059263566c1e11cb9c4f325c73..680b0a9729964208a2d248788de94df695442a7c 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml @@ -1,5 +1,14 @@ -<?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 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistep +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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <vif0.1:PrimaryVehicle> <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-4121ae4751874cefa376"> <vif0.1:Vehicle xsi:type="VehiclePIFType"> @@ -41,9 +50,9 @@ <vif0.1:RatedPower>220000</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> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> </vif0.1:WHRType> <vif0.1:Mode> <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> @@ -553,9 +562,9 @@ </di:Reference> </vif0.1:Signature> </vif0.1:PrimaryVehicle> - <vif0.1:ManufacturingStage stageCount="2"> - <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-ab066054c1bc431db1e3"> - <vif0.1:HashPreviousStage> + <vif0.1:ManufacturingStep stepCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStepDataType" id="MST-ab066054c1bc431db1e3"> + <vif0.1:HashPreviousStep> <di:Reference URI="#PIF-4121ae4751874cefa376"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -564,30 +573,32 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>YnCPep7uMh3ghMrx6ZsEMLanOijFCZpku+ZDNd6rkLw=</di:DigestValue> </di:Reference> - </vif0.1:HashPreviousStage> - <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-a00526e499f144139792"> - <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-05-23T22:00:00Z</v2.8:Date> - <v2.8:Model>Sample Bus Model</v2.8:Model> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:CorrectedActualMass>8300</v2.8:CorrectedActualMass> - <v2.8:TechnicalPermissibleMaximumLadenMass>18000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:ClassBus>II+III</v2.8:ClassBus> - <v2.8:NumberPassengersLowerDeck>30</v2.8:NumberPassengersLowerDeck> - <v2.8:NumberPassengersUpperDeck>0</v2.8:NumberPassengersUpperDeck> - <v2.8:BodyworkCode>CA</v2.8:BodyworkCode> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>11830</v2.8:VehicleLength> - <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> - <v2.8:EntranceHeight>120</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> + </vif0.1:HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-a00526e499f144139792" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-05-23T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>8300</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CA</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>11830</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>120</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Manufacturer</Manufacturer> <Model>Generic Model</Model> @@ -608,32 +619,36 @@ <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> </Signature> - </v2.8:AirDrag> - <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:Dayrunninglights>false</v2.8:Dayrunninglights> - <v2.8:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>false</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>7</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:AuxiliaryHeaterPower>0</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>true</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>true</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>false</Dayrunninglights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>7</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> </vif0.1:Vehicle> <vif0.1:ApplicationInformation> <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> @@ -650,5 +665,5 @@ <di:DigestValue>nOfZudPCG54oOYKKanFSCDOEQpivinYCPj2CqOTwqvE=</di:DigestValue> </di:Reference> </vif0.1:Signature> - </vif0.1:ManufacturingStage> -</vif0.1:VectoOutputMultistage> \ No newline at end of file + </vif0.1:ManufacturingStep> +</vif0.1:VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml index bf97f2d63e384bdbb925fa1915db4fd9dc5a9e83..1ffa0726cc1cd17e5eebd2075445836fd263bbb6 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/Tractor_4x2_vehicle-class-5_5_t_0.xml @@ -3,7 +3,7 @@ xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-new_parameters-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-new_parameters-sample.xml index b889e2dfb8c8859ef2aebfcd1940eba801ba6bb3..e2d2a56901f1797330a0c9dca73f2cf5dc9f2003 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-new_parameters-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-new_parameters-sample.xml @@ -4,7 +4,7 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-sample_LNG.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-sample_LNG.xml index 2e755eb0ca9b12d8d8b12678f54e2544205457d1..021d870ad6e8e2ebf6f362dc6f47727887e71c47 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-sample_LNG.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.0/vecto_vehicle-sample_LNG.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/Tractor_4x2_vehicle-class-5_5_t_0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/Tractor_4x2_vehicle-class-5_5_t_0.xml index e00b0f177919d4f5e9cc15fddaf4f771024cffcb..bdc38e09cf334455140ec0d03e2e0516491aa326 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/Tractor_4x2_vehicle-class-5_5_t_0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/Tractor_4x2_vehicle-class-5_5_t_0.xml @@ -5,8 +5,7 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <v2.1:Manufacturer>Generic Vendor</v2.1:Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_1.0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_1.0.xml index 29ad989fc4b9dbc7620234c4f95eaed4beb3d260..d98cf661d79d23b02662b90ab2ea44b511086942 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_1.0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_1.0.xml @@ -7,7 +7,7 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD\VectoInput.2.0.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_2.0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_2.0.xml index 57e464da4240cd0d9dfc7ac0135cc8c370d8135a..5ce75cc5bf30c9ca98e8f167c605f28b4fb8b288 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_2.0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-components_2.0.xml @@ -7,7 +7,7 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-engine_2.0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-engine_2.0.xml index 763f42b6d4ed9fcfe07f1f13ea6f57053520d307..59651be7fa628bb521d5a52976b01568b7a6d015 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-engine_2.0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-engine_2.0.xml @@ -7,7 +7,7 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-exempted-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-exempted-sample.xml index 14fd77fd79058e7b69b3f1c486623c340e9e3b77..044bc2534e0fcc692b227fa93b469010f5a58023 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-exempted-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-exempted-sample.xml @@ -4,7 +4,7 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedVehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-new_parameters-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-new_parameters-sample.xml index 665ce44d75348d7ab34f8d6fabf367fc5e607389..ec54dae802f148eb32044bff96afcab88ddb5693 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-new_parameters-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-new_parameters-sample.xml @@ -1,13 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> - <tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-sample_LNG.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-sample_LNG.xml index 3520871a08ce8a05bbf5d8794b18881674c4fa83..5feddcb6e48889e35e27a8355a6b33a97da87118 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-sample_LNG.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.1/vecto_vehicle-sample_LNG.xml @@ -6,8 +6,7 @@ xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/Conventional_completedBus_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/Conventional_completedBus_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..65ec05332d8b0f1e616a5c4064d0eefe77337153 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/Conventional_completedBus_1.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem><!-- optional --> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/HEV_completedBus_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/HEV_completedBus_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..3889e09f68727e8170fe9549463ffc8c1d8129c9 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/HEV_completedBus_1.xml @@ -0,0 +1,87 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_HEV_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem><!-- optional --> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_xEV_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_xEV_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + <WaterElectricHeater>false</WaterElectricHeater> + <AirElectricHeater>false</AirElectricHeater> + <OtherHeatingTechnology>false</OtherHeatingTechnology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/IEPC_completedBus_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/IEPC_completedBus_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..029300ec9d8e305dae2f4e79aa2ad067fd026eaa --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/IEPC_completedBus_1.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_IEPC_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_xEV_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_xEV_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + <WaterElectricHeater>false</WaterElectricHeater> + <AirElectricHeater>false</AirElectricHeater> + <OtherHeatingTechnology>false</OtherHeatingTechnology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/PEV_completedBus_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/PEV_completedBus_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..73974806281ee527f97fa876f51aa131c95f8810 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/CompletedBus/PEV_completedBus_1.xml @@ -0,0 +1,85 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_PEV_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_xEV_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_xEV_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + <WaterElectricHeater>false</WaterElectricHeater> + <AirElectricHeater>false</AirElectricHeater> + <OtherHeatingTechnology>false</OtherHeatingTechnology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ADC.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ADC.xml new file mode 100644 index 0000000000000000000000000000000000000000..8db155c74245fb4b3fa9d30758d4b03a159f80ca --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ADC.xml @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:ADC xsi:type="v2.3:ADCComponentDeclarationType" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Data xsi:type="v2.3:ADCDataDeclarationType" id="ADC-123" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>ADC 20</Model> + <CertificationNumber>ADC-20-CERT</CertificationNumber> + <Date>2021-11-18T14:09:17.2810263Z</Date> + <AppVersion>VectoCore</AppVersion> + <Ratio>0.035</Ratio> + <CertificationMethod>Option 1</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Data> + <v2.3:Signature> + <di:Reference URI="#ADC-123"> + <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>NiyH2Xp0rQswwXIOf52Jm0wvK4Yc2/PL/T+zQCWQGFo=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:ADC> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/BatterySystem_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/BatterySystem_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..ae83302aa19c991308e7786522f9de58fc3c0984 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/BatterySystem_1.xml @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:BatterySystem xsi:type="v2.3:BatteryComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:11:51.3452323Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00" /> + <Entry SoC="100" OCV="640.00" /> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00" /> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00" /> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00" /> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00" /> + </CurrentLimits> + </Data> + <v2.3:Signature> + <di:Reference URI="#BAT-asdf"> + <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>tam1LGpdznHGFGo+rp0WVr0/6+F2yU2Kv4G4tYvAe+Y=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:BatterySystem> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/CapacitorSystem_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/CapacitorSystem_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e11a0ecfca4f5c275dbf292e05f23b00b7fa41c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/CapacitorSystem_1.xml @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:CapacitorSystem xsi:type="CapacitorSystemComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="CapacitorSystemDataType" id="CAP-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:14:06.0791626Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <Capacitance>1.00</Capacitance> + <InternalResistance>23.45</InternalResistance> + <MinVoltage>3.55</MinVoltage> + <MaxVoltage>30.45</MaxVoltage> + <MaxChargingCurrent>100.00</MaxChargingCurrent> + <MaxDischargingCurrent>99.45</MaxDischargingCurrent> + <TestingTemperature>30</TestingTemperature> + </Data> + <v2.3:Signature> + <di:Reference URI="#CAP-asdf"> + <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>dBadIN60l8Iqcanj/nrx1EbD+KixtDxLAusUcutITk8=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:CapacitorSystem> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem-IHPC_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem-IHPC_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..cec731f227ff4f785172c5bdfda65c3d62d6dfb1 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem-IHPC_1.xml @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:ElectricMachineSystem xsi:type="v2.3:ElectricMachineSystemComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="ElectricMachineSystemIHPCMeasuredDataDeclarationType" id="EM-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:22:33.399635Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>IHPC Type 1</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </Data> + <v2.3:Signature> + <di:Reference URI="#EM-asdf"> + <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>655T60jN3MstLvX3j5bmvY4kLft2uJbQz2kEk/LIfo8=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:ElectricMachineSystem> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..514671c86a272a9e002bd2a18987d4c92b84c29e --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_1.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:ElectricMachineSystem xsi:type="v2.3:ElectricMachineSystemComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:20:11.60244Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </Data> + <v2.3:Signature> + <di:Reference URI="#EM-asdf"> + <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>s2YFYllDgw5jrF+W6Pc9cF4aQfsswnICqlWYgqg9NPI=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:ElectricMachineSystem> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_StdValues.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_StdValues.xml new file mode 100644 index 0000000000000000000000000000000000000000..966b40972c3eaac91f1e332a451169c0c022a113 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/ElectricMachineSystem_StdValues.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:ElectricMachineSystem xsi:type="v2.3:ElectricMachineSystemComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="ElectricMachineSystemStandardValuesDataDeclarationType" id="EM-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:21:25.8564983Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Standard values</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + </Data> + <v2.3:Signature> + <di:Reference URI="#EM-asdf"> + <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>ZDzYMLXTbvq6O8mR3OE8ii2v4SHgJ6nieqw6XXINaF0=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:ElectricMachineSystem> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_APT-N.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_APT-N.xml new file mode 100644 index 0000000000000000000000000000000000000000..3ed2d166073ad612ee35dbe1ccc712724135d17a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_APT-N.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="v2.3:GearboxDataDeclarationType" id="GBX-asdf"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2021-11-18T14:23:31.4958567Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-N</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#GBX-asdf"> + <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>hRzWfx3/El/LwEtP86Utm3dgBAF6CagrpEREsca7+/0=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </tns:Gearbox> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_IHPC.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_IHPC.xml new file mode 100644 index 0000000000000000000000000000000000000000..05cb9e558e36c4ff8177c81d7f733bb3ca0d9cbc --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/Gearbox_IHPC.xml @@ -0,0 +1,206 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="v2.3:GearboxDataDeclarationType" id="GBX-asdf"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2021-11-18T14:30:10.5091769Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>IHPC Type 1</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00" /> + </TorqueLossMap> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="1000.00" /> + <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00" /> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="1000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="1000.00" /> + <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00" /> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00" /> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#GBX-asdf"> + <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>XZCluPiG05mOAj5rTjTllCWbhCTEYVxCbE940ck3XsA=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </tns:Gearbox> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..b0033021109a5a75d9a8c05552e50b7b84e5d90e --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_1.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:IEPC xsi:type="v2.3:IEPCComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:31:52.4460619Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </Data> + <v2.3:Signature> + <di:Reference URI="#IEPC-asdf"> + <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>YC6JEnUe+0DpaRLPBYJfmJqsXHlIkdKUEyKh6Pv4Qi8=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:IEPC> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_StdValues.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_StdValues.xml new file mode 100644 index 0000000000000000000000000000000000000000..d9622c205f3814d4ca9175919410b28dcb97a858 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ComponentData/IEPC_StdValues.xml @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + <tns:IEPC xsi:type="v2.3:IEPCComponentDeclarationType"> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCStandardValuesDataDeclarationType" id="IEPC-asdf" xmlns:v2.9="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.9"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2021-11-18T14:33:55.6801441Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Standard values for all components</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + </Data> + <v2.3:Signature> + <di:Reference URI="#IEPC-asdf"> + <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>WjS1g6YMg1hT7Rp+OpK6deh7pUKTwokv1e21eE3TAk8=</di:DigestValue> + </di:Reference> + </v2.3:Signature> + </tns:IEPC> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_full.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_full.xml new file mode 100644 index 0000000000000000000000000000000000000000..8eb42199cd430aa44c81e0ba23a9b0d6e8ec871a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_full.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-01-09T11:00:00Z</Date> + <Model>Sample Bus Model 2</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>7000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>A</ClassBus> + <NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_only_mandatory_entries.xml new file mode 100644 index 0000000000000000000000000000000000000000..3731a2593bfd5943be3efd5d8fd1b16f8343b709 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_completedBus_input_only_mandatory_entries.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_heavyLorry.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_heavyLorry.xml new file mode 100644 index 0000000000000000000000000000000000000000..39e90cfb8fc7029e82cfed8e7cf1bceebfff5da0 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_heavyLorry.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_HeavyLorryDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>7500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <SleeperCab>true</SleeperCab> + <SumNetPower>350000</SumNetPower> + <Technology>Fuel cell vehicle</Technology> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_mediumLorry.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_mediumLorry.xml new file mode 100644 index 0000000000000000000000000000000000000000..bb45b98a60c7ea3c94f98dd6a1981afbf2519177 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_mediumLorry.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_MediumLorryDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>7500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <SumNetPower>350000</SumNetPower> + <Technology>Fuel cell vehicle</Technology> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_primaryBus.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_primaryBus.xml new file mode 100644 index 0000000000000000000000000000000000000000..f0b2a3c6343050478b5113e5986e2cff9c285592 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/ExemptedVehicles/exempted_primaryBus.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_PrimaryBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> + <Model>Sample Bus Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <SumNetPower>350000</SumNetPower> + <Technology>Fuel cell vehicle</Technology> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/Conventional_heavyLorry_AMT.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/Conventional_heavyLorry_AMT.xml new file mode 100644 index 0000000000000000000000000000000000000000..c8f560b034195ec57b4b6f6c4fecd1ea5cacef32 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/Conventional_heavyLorry_AMT.xml @@ -0,0 +1,330 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_Conventional_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem><!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag><!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_AMT_S2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_AMT_S2.xml new file mode 100644 index 0000000000000000000000000000000000000000..144e02970abb0da4b4ef33e37cb05767b1f319e7 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_AMT_S2.xml @@ -0,0 +1,593 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S2_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_IEPC-S.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_IEPC-S.xml new file mode 100644 index 0000000000000000000000000000000000000000..74a62a2668c1ea1b2a11fea99834fa900ac54eea --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_IEPC-S.xml @@ -0,0 +1,489 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S3.xml new file mode 100644 index 0000000000000000000000000000000000000000..12524b9c8abeaae7833c9dff87366a12864f6846 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S3.xml @@ -0,0 +1,492 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>3</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S3_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S4.xml new file mode 100644 index 0000000000000000000000000000000000000000..0e0407f3d12aa5f8b574fe8bf42f89bfb03007a9 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV-S_heavyLorry_S4.xml @@ -0,0 +1,462 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>4</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S4_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px.xml new file mode 100644 index 0000000000000000000000000000000000000000..d3066b30fb43fb70a2884e5c111303acd14d4df7 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_HeavyLorryDeclarationType" id="a"> <Manufacturer>TU Graz</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <Model>HEV Heavy Lorry Px</Model> <VIN>1234</VIN> <Date>2017-01-01T00:00:00Z</Date> <LegislativeCategory>N3</LegislativeCategory> <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <CorrectedActualMass>6000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>650</IdlingSpeed> <RetarderType>None</RetarderType> <AngledriveType>None</AngledriveType> <PTO xsi:type="PTOType"> <PTOShaftsGearWheels>none</PTOShaftsGearWheels> <PTOOtherElements>none</PTOOtherElements> </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <NgTankSystem>Liquefied</NgTankSystem> <!-- optional --> <SleeperCab>false</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ArchitectureID>P2</ArchitectureID> <OvcHev>false</OvcHev> <ADAS xsi:type="ADAS_HEV_Type"> <EngineStopStart>true</EngineStopStart> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> <!-- optional --> <v2.0:Entry gear="9" maxTorque="2000"/> </TorqueLimits> <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> <!-- optional --> <ElectricMachine> <Position>2</Position> <VoltageLevel> <Voltage>100</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> <VoltageLevel> <Voltage>500</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> </ElectricMachine> </ElectricMotorTorqueLimits> <BoostingLimitations xsi:type="BoostingLimitationsType"> <!-- optional --> <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> </BoostingLimitations> <Components xsi:type="Components_HEV-Px_LorryType"> <Engine> <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> <WHTCUrban>1.0097</WHTCUrban> <WHTCRural>1.0035</WHTCRural> <WHTCMotorway>1.0200</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>NG</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> </FuelConsumptionMap> <FullLoadAndDragCurve> <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </Engine> <ElectricMachine> <PowertrainPosition>2</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>tokena</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="asf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>b</Manufacturer> <Model>b</Model> <CertificationNumber>tokenb</CertificationNumber> <Date>2017-02-02T00:00:00Z</Date> <AppVersion>bbbbb</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>73.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="621.00"/> <Entry SoC="100" OCV="641.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="11.00" R_10="12.00" R_20="13.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="51.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="bsf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Gearbox> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> </Gears> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> </v2.0:Signature> </Gearbox> <TorqueConverter> <!-- optional --> <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>TC CalcApp 123</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </TorqueConverter> <Angledrive> <!-- optional --> <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <Ratio>2.345</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> </v2.0:Signature> </Angledrive> <Retarder> <!-- optional --> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <RetarderLossMap> <Entry retarderSpeed="0.00" torqueLoss="10.00"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> </v2.0:Signature> </Retarder> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_HEV-P_LorryDataType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> </ElectricSystem> <PneumaticSystem> <Technology>Medium Supply 2-stage</Technology> </PneumaticSystem> <HVAC> <Technology>Default</Technology> </HVAC> </Data> </Auxiliaries> <AirDrag> <!-- optional --> <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</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> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_IHPC.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_IHPC.xml new file mode 100644 index 0000000000000000000000000000000000000000..b47db709636c7830ee319e30db752300c10bef3a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/HEV_heavyLorry_AMT_Px_IHPC.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_HeavyLorryDeclarationType" id="a"> <Manufacturer>TU Graz</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <Model>HEV Heavy Lorry Px</Model> <VIN>1234</VIN> <Date>2017-01-01T00:00:00Z</Date> <LegislativeCategory>N3</LegislativeCategory> <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <CorrectedActualMass>6000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>650</IdlingSpeed> <RetarderType>None</RetarderType> <AngledriveType>None</AngledriveType> <PTO xsi:type="PTOType"> <PTOShaftsGearWheels>none</PTOShaftsGearWheels> <PTOOtherElements>none</PTOOtherElements> </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <NgTankSystem>Liquefied</NgTankSystem> <!-- optional --> <SleeperCab>false</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ArchitectureID>P2</ArchitectureID> <OvcHev>false</OvcHev> <ADAS xsi:type="ADAS_HEV_Type"> <EngineStopStart>true</EngineStopStart> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> <!-- optional --> <v2.0:Entry gear="9" maxTorque="2000"/> </TorqueLimits> <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> <!-- optional --> <ElectricMachine> <Position>2</Position> <VoltageLevel> <Voltage>100</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> <VoltageLevel> <Voltage>500</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> </ElectricMachine> </ElectricMotorTorqueLimits> <BoostingLimitations xsi:type="BoostingLimitationsType"> <!-- optional --> <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> </BoostingLimitations> <Components xsi:type="Components_HEV-Px_LorryType"> <Engine> <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> <WHTCUrban>1.0097</WHTCUrban> <WHTCRural>1.0035</WHTCRural> <WHTCMotorway>1.0200</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>NG</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> </FuelConsumptionMap> <FullLoadAndDragCurve> <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </Engine> <ElectricMachine> <PowertrainPosition>2</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="ElectricMachineSystemIHPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>IHPC Type 1</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap gear="1"> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> <PowerMap gear="2"> <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1000.00"/> <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="26000.00"/> <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-26000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap gear="1"> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> <PowerMap gear="2"> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="26000.00"/> <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-26000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <!-- optional --> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>tokena</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="asf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>b</Manufacturer> <Model>b</Model> <CertificationNumber>tokenb</CertificationNumber> <Date>2017-02-02T00:00:00Z</Date> <AppVersion>bbbbb</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>73.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="621.00"/> <Entry SoC="100" OCV="641.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="11.00" R_10="12.00" R_20="13.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="51.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="bsf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Gearbox> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> </Gears> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> </v2.0:Signature> </Gearbox> <TorqueConverter> <!-- optional --> <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>TC CalcApp 123</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </TorqueConverter> <Angledrive> <!-- optional --> <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <Ratio>2.345</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> </v2.0:Signature> </Angledrive> <Retarder> <!-- optional --> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <RetarderLossMap> <Entry retarderSpeed="0.00" torqueLoss="10.00"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> </v2.0:Signature> </Retarder> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_HEV-P_LorryDataType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> </ElectricSystem> <PneumaticSystem> <Technology>Medium Supply 2-stage</Technology> </PneumaticSystem> <HVAC> <Technology>Default</Technology> </HVAC> </Data> </Auxiliaries> <AirDrag> <!-- optional --> <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</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> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/IEPC_heavyLorry.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/IEPC_heavyLorry.xml new file mode 100644 index 0000000000000000000000000000000000000000..79736f2a3497c60d8f6df9f6290554782d5e0dad --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/IEPC_heavyLorry.xml @@ -0,0 +1,352 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_LorryType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Medium Supply 2-stage + elec. driven</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_AMT_E2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_AMT_E2.xml new file mode 100644 index 0000000000000000000000000000000000000000..5b7fe48a67fcda3936fbb52a74005c9badfa77fd --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_AMT_E2.xml @@ -0,0 +1,461 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_APT-N_E2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_APT-N_E2.xml new file mode 100644 index 0000000000000000000000000000000000000000..8add55beea15a6981d7fcaff85b9dd97ba79fd58 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_APT-N_E2.xml @@ -0,0 +1,479 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="v2.4:ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.3:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2017-09-26T15:33:45.0954248Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-N</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E3.xml new file mode 100644 index 0000000000000000000000000000000000000000..9f00270dbbeb54e7dac650f651d46109d474df91 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E3.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> <Manufacturer>TU Graz</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <Model>HEV Heavy Lorry Px</Model> <VIN>1234</VIN> <Date>2017-01-01T00:00:00Z</Date> <LegislativeCategory>N3</LegislativeCategory> <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <CorrectedActualMass>6000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <RetarderType>None</RetarderType> <AngledriveType>None</AngledriveType> <PTO xsi:type="PTOType"> <!-- syntactically allowed, not supported by VECTO - no gearbox! --> <PTOShaftsGearWheels>none</PTOShaftsGearWheels> <PTOOtherElements>none</PTOOtherElements> </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <SleeperCab>false</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ArchitectureID>E3</ArchitectureID> <OvcHev>false</OvcHev> <ADAS xsi:type="ADAS_PEV_Type"> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> <!-- optional --> <v2.0:Entry gear="9" maxTorque="2000"/> </TorqueLimits> <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> <!-- optional --> <ElectricMachine> <Position>2</Position> <VoltageLevel> <Voltage>100</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> <VoltageLevel> <Voltage>500</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> </ElectricMachine> </ElectricMotorTorqueLimits> <Components xsi:type="Components_PEV-E3_LorryType"> <ElectricMachine> <PowertrainPosition>3</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="v2.3:ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Retarder> <!-- optional --> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <RetarderLossMap> <Entry retarderSpeed="0.00" torqueLoss="10.00"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> </v2.0:Signature> </Retarder> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_PEV_LorryDataType"> <SteeringPump> <Technology axleNumber="1">Electric driven pump</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> </ElectricSystem> <PneumaticSystem> <Technology>Medium Supply 2-stage + elec. driven</Technology> </PneumaticSystem> <HVAC> <Technology>Default</Technology> </HVAC> </Data> </Auxiliaries> <AirDrag> <!-- optional --> <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</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> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E4.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e87ad3dffd90fe61d51ffaaf1e2d6c7e923fe19 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/HeavyLorry/PEV_heavyLorry_E4.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> <Manufacturer>TU Graz</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <Model>HEV Heavy Lorry Px</Model> <VIN>1234</VIN> <Date>2017-01-01T00:00:00Z</Date> <LegislativeCategory>N3</LegislativeCategory> <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <CorrectedActualMass>6000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <RetarderType>None</RetarderType> <AngledriveType>None</AngledriveType> <PTO xsi:type="PTOType"> <!-- syntactically allowed, not supported by VECTO - no gearbox! --> <PTOShaftsGearWheels>none</PTOShaftsGearWheels> <PTOOtherElements>none</PTOOtherElements> </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <SleeperCab>false</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ArchitectureID>E4</ArchitectureID> <OvcHev>false</OvcHev> <ADAS xsi:type="ADAS_PEV_Type"> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> <!-- optional --> <v2.0:Entry gear="9" maxTorque="2000"/> </TorqueLimits> <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> <!-- optional --> <ElectricMachine> <Position>2</Position> <VoltageLevel> <Voltage>100</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> <VoltageLevel> <Voltage>500</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> </ElectricMachine> </ElectricMotorTorqueLimits> <Components xsi:type="Components_PEV-E4_LorryType"> <ElectricMachine> <PowertrainPosition>4</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="v2.3:ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Retarder> <!-- optional --> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <RetarderLossMap> <Entry retarderSpeed="0.00" torqueLoss="10.00"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> </v2.0:Signature> </Retarder> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_PEV_LorryDataType"> <SteeringPump> <Technology axleNumber="1">Electric driven pump</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> </ElectricSystem> <PneumaticSystem> <Technology>Medium Supply 2-stage + elec. driven</Technology> </PneumaticSystem> <HVAC> <Technology>Default</Technology> </HVAC> </Data> </Auxiliaries> <AirDrag> <!-- optional --> <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</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> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/Conventional_mediumLorry_AMT.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/Conventional_mediumLorry_AMT.xml new file mode 100644 index 0000000000000000000000000000000000000000..ed50f91e8dcbbd0f6fd8d6dbeb310314c588c5d4 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/Conventional_mediumLorry_AMT.xml @@ -0,0 +1,325 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_Conventional_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume><!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem><!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag><!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_AMT_S2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_AMT_S2.xml new file mode 100644 index 0000000000000000000000000000000000000000..40178220ff9ca1278eec1b24e52e1d2941c52834 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_AMT_S2.xml @@ -0,0 +1,589 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S2_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data xsi:type="BatterySystemDataType" id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_IEPC-S.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_IEPC-S.xml new file mode 100644 index 0000000000000000000000000000000000000000..73f921502080acd80b7babd879f2039b36b47d86 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_IEPC-S.xml @@ -0,0 +1,485 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S3.xml new file mode 100644 index 0000000000000000000000000000000000000000..97f8be8d0f98dc71457d0295f5fdf212cd72dd26 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S3.xml @@ -0,0 +1,488 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="v2.4:ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>3</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S3_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S4.xml new file mode 100644 index 0000000000000000000000000000000000000000..49eac0f15727f5a7a6a129cb1c97c39241629b72 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV-S_mediumLorry_S4.xml @@ -0,0 +1,458 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>4</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S4_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV_mediumLorry_AMT_Px.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV_mediumLorry_AMT_Px.xml new file mode 100644 index 0000000000000000000000000000000000000000..4cfc25a24b1d8a6fa41339956d122e36a401e198 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/HEV_mediumLorry_AMT_Px.xml @@ -0,0 +1,508 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>P2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <BoostingLimitations xsi:type="BoostingLimitationsType"> + <!-- optional --> + <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> + <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> + </BoostingLimitations> + <Components xsi:type="Components_HEV-Px_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <!-- optional --> + <SOCmax>80</SOCmax> + <!-- optional --> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-P_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/IEPC_mediumLorry.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/IEPC_mediumLorry.xml new file mode 100644 index 0000000000000000000000000000000000000000..d7b7b6979b365c6be1abf27bc4fe57b98fe81b7c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/IEPC_mediumLorry.xml @@ -0,0 +1,348 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_LorryType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Vacuum pump + elec. driven</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5b264abfcf9e8fa0f6ed2f657d1a4f127a9b478 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2.xml @@ -0,0 +1,448 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume><!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"><!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios><!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag><!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2_EM_Std.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2_EM_Std.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a943b2c41252b15c6b2ec234f16ed052450eabd --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_AMT_E2_EM_Std.xml @@ -0,0 +1,434 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemStandardValuesDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Standard values</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_APT-N_E2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_APT-N_E2.xml new file mode 100644 index 0000000000000000000000000000000000000000..a371b7c8495102fcffbc09ea6d15ca15c010ec5f --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_APT-N_E2.xml @@ -0,0 +1,475 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.3:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2017-09-26T15:33:45.0954248Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-N</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E3.xml new file mode 100644 index 0000000000000000000000000000000000000000..403f15e1aa5d7254d0b77f99b8423e6e4af90364 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E3.xml @@ -0,0 +1,355 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E3</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E3_LorryType"> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E4.xml new file mode 100644 index 0000000000000000000000000000000000000000..45661f61bd860ceb7c8b50ef2a950029fc2686d0 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/MediumLorry/PEV_mediumLorry_E4.xml @@ -0,0 +1,325 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>3500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>7100</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.300</CargoVolume> + <!-- optional --> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E4</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="v2.4:ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E4_LorryType"> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/Conventional_primaryBus_AMT.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/Conventional_primaryBus_AMT.xml new file mode 100644 index 0000000000000000000000000000000000000000..ec2fb26bbf6aad95d2a6fe3fedfd9249bebb3467 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/Conventional_primaryBus_AMT.xml @@ -0,0 +1,333 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <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>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive><!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SmartAlternator><!-- optional --> + <RatedCurrent>100</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <SmartAlternator><!-- optional --> + <RatedCurrent>50</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <Battery><!-- optional --> + <BatteryTechnology>li-ion battery - high power</BatteryTechnology> + <RatedCapacity>50</RatedCapacity> + <NominalVoltage>48</NominalVoltage> + </Battery> + <Capacitor><!-- optional --> + <CapacitorTechnology>with DCDC converter</CapacitorTechnology> + <RatedCapacitance>120</RatedCapacitance> + <RatedVoltage>30</RatedVoltage> + </Capacitor> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_AMT_S2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_AMT_S2.xml new file mode 100644 index 0000000000000000000000000000000000000000..0c6661425ab6afc8c72fdad88e16e142b6e8ca5c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_AMT_S2.xml @@ -0,0 +1,578 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>false</OvcHev> + <MaxChargingPower>1</MaxChargingPower> + <!-- optional --> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>false</EngineStopStart> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S2_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <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>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_IEPC-S.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_IEPC-S.xml new file mode 100644 index 0000000000000000000000000000000000000000..a310db7f0921c23d06eaa4d77f41ebb4d92f12ab --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_IEPC-S.xml @@ -0,0 +1,466 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_PrimaryBus"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S3.xml new file mode 100644 index 0000000000000000000000000000000000000000..f1aeb455c611824eb7a241cb3105af1cf4e7d398 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S3.xml @@ -0,0 +1,469 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="v2.4:ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>3</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S3_PrimaryBusType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S4.xml new file mode 100644 index 0000000000000000000000000000000000000000..19774aabcf6eec9a3132478a8fe68f5391f9564e --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV-S_primaryBus_S4.xml @@ -0,0 +1,439 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>4</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S4_PrimaryBusType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV_primaryBus_AMT_Px.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV_primaryBus_AMT_Px.xml new file mode 100644 index 0000000000000000000000000000000000000000..bac6d070897794770ec1e2382322d37587a63cb1 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/HEV_primaryBus_AMT_Px.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_PrimaryBusDeclarationType" id="a"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>600</IdlingSpeed> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <ArchitectureID>P2</ArchitectureID> <OvcHev>false</OvcHev> <ADAS xsi:type="ADAS_HEV_Type"> <EngineStopStart>true</EngineStopStart> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> <!-- optional --> <v2.0:Entry gear="9" maxTorque="2000"/> </TorqueLimits> <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> <!-- optional --> <ElectricMachine> <Position>2</Position> <VoltageLevel> <Voltage>100</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> <VoltageLevel> <Voltage>500</Voltage> <MaxTorqueCurve> <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> </MaxTorqueCurve> </VoltageLevel> </ElectricMachine> </ElectricMotorTorqueLimits> <BoostingLimitations xsi:type="BoostingLimitationsType"> <!-- optional --> <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> </BoostingLimitations> <Components xsi:type="Components_HEV-Px_PrimaryBusType"> <Engine> <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> <WHTCUrban>1.0097</WHTCUrban> <WHTCRural>1.0035</WHTCRural> <WHTCMotorway>1.0200</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>NG</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> </FuelConsumptionMap> <FullLoadAndDragCurve> <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </Engine> <ElectricMachine> <PowertrainPosition>2</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="v2.3:ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Gearbox> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> </Gears> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> </v2.0:Signature> </Gearbox> <TorqueConverter> <!-- optional --> <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>TC CalcApp 123</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </TorqueConverter> <Angledrive> <!-- optional --> <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <Ratio>2.345</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> </v2.0:Signature> </Angledrive> <Retarder> <!-- optional --> <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <RetarderLossMap> <Entry retarderSpeed="0.00" torqueLoss="10.00"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> </v2.0:Signature> </Retarder> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_HEV-P_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> <SmartAlternator> <!-- optional --> <RatedCurrent>100</RatedCurrent> <RatedVoltage>48</RatedVoltage> </SmartAlternator> <SmartAlternator> <!-- optional --> <RatedCurrent>50</RatedCurrent> <RatedVoltage>48</RatedVoltage> </SmartAlternator> <Battery> <!-- optional --> <BatteryTechnology>li-ion battery - high power</BatteryTechnology> <RatedCapacity>50</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> <Capacitor> <!-- optional --> <CapacitorTechnology>with DCDC converter</CapacitorTechnology> <RatedCapacitance>120</RatedCapacitance> <RatedVoltage>30</RatedVoltage> </Capacitor> <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> <CompressorDrive>mechanically</CompressorDrive> <Clutch>none</Clutch> <CompressorRatio>1.000</CompressorRatio> <SmartCompressionSystem>true</SmartCompressionSystem> <SmartRegenerationSystem>false</SmartRegenerationSystem> <AirsuspensionControl>electronically</AirsuspensionControl> <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> </PneumaticSystem> <HVAC> <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/IEPC_primaryBus.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/IEPC_primaryBus.xml new file mode 100644 index 0000000000000000000000000000000000000000..16f7124d04d09f5ebcacda4488f3c22166eb59f5 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/IEPC_primaryBus.xml @@ -0,0 +1,323 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_PrimaryBusType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <!-- optional --> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_AMT_E2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_AMT_E2.xml new file mode 100644 index 0000000000000000000000000000000000000000..ced1ee06cb3f2c8c6f3a54b29d70ed0c097796d2 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_AMT_E2.xml @@ -0,0 +1,431 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E2_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E3.xml new file mode 100644 index 0000000000000000000000000000000000000000..da8fbe99fe8476b3c799e3faaf03c11793f543ed --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E3.xml @@ -0,0 +1,326 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>E3</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"><!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"><!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E3_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios><!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder><!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E4.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E4.xml new file mode 100644 index 0000000000000000000000000000000000000000..f3aae791aa4faff1ff792611b2ee4a05c6f4c571 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/Distributed/PrimaryBus/PEV_primaryBus_E4.xml @@ -0,0 +1,300 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <ArchitectureID>E4</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_PEV-E4_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV-S_heavyLorry_AMT_S2_ADC.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV-S_heavyLorry_AMT_S2_ADC.xml new file mode 100644 index 0000000000000000000000000000000000000000..f077353554565f54c7656051d74e6e2466ad98ea --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV-S_heavyLorry_AMT_S2_ADC.xml @@ -0,0 +1,641 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-S2_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <ADC> + <!-- optional --> + <v2.3:Data xsi:type="ADCDataDeclarationType" id="adc" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>ADC Manufacturer</Manufacturer> + <Model>ADC Model</Model> + <CertificationNumber>adcadc</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>adccda</AppVersion> + <Ratio>12.123</Ratio> + <CertificationMethod>Option 1</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="10.00" inputTorque="40.00" torqueLoss="30.00"/> + <Entry inputSpeed="11.00" inputTorque="41.00" torqueLoss="31.00"/> + <Entry inputSpeed="12.00" inputTorque="41.00" torqueLoss="32.00"/> + <Entry inputSpeed="13.00" inputTorque="42.00" torqueLoss="33.00"/> + </TorqueLossMap> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ADC> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <ADC> + <!-- optional --> + <v2.3:Data xsi:type="ADCDataDeclarationType" id="ad" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>ADC Manufacturer</Manufacturer> + <Model>ADC Model</Model> + <CertificationNumber>adcadc</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>adccda</AppVersion> + <Ratio>12.123</Ratio> + <CertificationMethod>Option 1</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="10.00" inputTorque="40.00" torqueLoss="30.00"/> + <Entry inputSpeed="11.00" inputTorque="41.00" torqueLoss="31.00"/> + <Entry inputSpeed="12.00" inputTorque="41.00" torqueLoss="32.00"/> + <Entry inputSpeed="13.00" inputTorque="42.00" torqueLoss="33.00"/> + </TorqueLossMap> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ADC> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV_heavyLorry_AMT_Px_Capacitor.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV_heavyLorry_AMT_Px_Capacitor.xml new file mode 100644 index 0000000000000000000000000000000000000000..317875ab41ae9f1a05faedad8892f2edfa35513a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/HEV_heavyLorry_AMT_Px_Capacitor.xml @@ -0,0 +1,458 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <NgTankSystem>Liquefied</NgTankSystem> + <!-- optional --> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>P2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>2</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <BoostingLimitations xsi:type="BoostingLimitationsType"> + <!-- optional --> + <Entry rotationalSpeed="0.00" boostingTorque="0.00"/> + <Entry rotationalSpeed="1000.00" boostingTorque="0.00"/> + </BoostingLimitations> + <Components xsi:type="Components_HEV-Px_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Capacitor> + <v2.4:Data id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="CapacitorSystemDataType"> + <Manufacturer>Capacitor Manufacturer</Manufacturer> + <Model>Capacitor Model</Model> + <CertificationNumber>ccccccc</CertificationNumber> + <Date>2017-02-03T00:00:00Z</Date> + <AppVersion>ccccc</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <Capacitance>100.00</Capacitance> + <InternalResistance>20.00</InternalResistance> + <MinVoltage>12.00</MinVoltage> + <MaxVoltage>100.00</MaxVoltage> + <MaxChargingCurrent>80.00</MaxChargingCurrent> + <MaxDischargingCurrent>20.00</MaxDischargingCurrent> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm="123"/> + <di:DigestValue/> + </di:Reference> + </Signature> + </Capacitor> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <!-- optional --> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="v2.0:AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <Ratio>2.345</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="-1000.00" torqueLoss="100.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="1000.00" inputTorque="0.00" torqueLoss="10.00"/> + <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> + <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#agl-vi2Oak2N"> + <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>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Angledrive> + <Retarder> + <!-- optional --> + <v2.0:Data id="RET-Shai9imi" xsi:type="v2.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Retarder Manufacturer</Manufacturer> + <Model>Generic Retarder</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <RetarderLossMap> + <Entry retarderSpeed="0.00" torqueLoss="10.00"/> + <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> + </RetarderLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#RET-Shai9imi"> + <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>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-P_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + <AirDrag> + <!-- optional --> + <Data id="CabinX23h" xsi:type="v2.0: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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</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> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..ea3dda3e1caa9c6d96f77d7325f50d00b547d0ed --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_heavyLorry_AMT_n_opt.xml @@ -0,0 +1,252 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_Conventional_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_mediumLorry_AMT_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_mediumLorry_AMT_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..fd240eddf72eb2d548dcc1cd78bb13a0c1b8f4f3 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_mediumLorry_AMT_n_opt.xml @@ -0,0 +1,246 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_Conventional_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_primaryBus_AMT_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_primaryBus_AMT_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..55e4213577488313159eee9f6e16ddaffbc21be5 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/Conventional_primaryBus_AMT_n_opt.xml @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>26000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <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>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter><!-- optional --> + <v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SmartAlternator><!-- optional --> + <RatedCurrent>100</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <SmartAlternator><!-- optional --> + <RatedCurrent>50</RatedCurrent> + <RatedVoltage>48</RatedVoltage> + </SmartAlternator> + <Battery><!-- optional --> + <BatteryTechnology>li-ion battery - high power</BatteryTechnology> + <RatedCapacity>50</RatedCapacity> + <NominalVoltage>48</NominalVoltage> + </Battery> + <Capacitor><!-- optional --> + <CapacitorTechnology>with DCDC converter</CapacitorTechnology> + <RatedCapacitance>120</RatedCapacitance> + <RatedVoltage>30</RatedVoltage> + </Capacitor> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_AMT_S2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_AMT_S2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..615c385e6ca20dd62eb39d25cedf1ab7d66930ef --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_AMT_S2_n_opt.xml @@ -0,0 +1,471 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>660</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_HEV-S2_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f40409cedd18f1888e154a6e9576c4e525a52b3 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_IEPC-S_n_opt.xml @@ -0,0 +1,410 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..772b4948e49c6be163b2917681d87fa09e64c455 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S3_n_opt.xml @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S3_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..e88c3b4882757497b5261c26a5e073a8c604f79c --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_heavyLorry_S4_n_opt.xml @@ -0,0 +1,374 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>640</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S4_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_AMT_S2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_AMT_S2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..84849e92792e8e8c014754d6d1d0745df9b3ff66 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_AMT_S2_n_opt.xml @@ -0,0 +1,465 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_HEV-S2_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..570e13303be57c20cf7ec035d462bbef41b205bd --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_IEPC-S_n_opt.xml @@ -0,0 +1,404 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="v2.4:ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..0a7780ff5dab2ef95ed1dcfada6408970be9f784 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S3_n_opt.xml @@ -0,0 +1,398 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>660</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="v2.4:ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S3_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..ff25df74385ef0ded7b4b992207dd1dd8e980522 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_mediumLorry_S4_n_opt.xml @@ -0,0 +1,368 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>640</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S4_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_AMT_S2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_AMT_S2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..97b4f3895bb56b4dd86cfb2eaf23784c7fa8e38b --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_AMT_S2_n_opt.xml @@ -0,0 +1,476 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>S2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>false</EngineStopStart> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_HEV-S2_PrimaryBusType"> + <Engine xsi:type="v2.0:EngineComponentDeclarationType"> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#ENG-gooZah3D"> + <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>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Gearbox xsi:type="v2.0:GearboxComponentDeclarationType"> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data id="tc-123xyz" xsi:type="v2.0:TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#tc-123xyz"> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> + <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..907654955edcf9aee741e9f8f84c9706e98d56e9 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_IEPC-S_n_opt.xml @@ -0,0 +1,411 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-IEPC-S_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>S-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <ElectricMotorTorqueLimits xsi:type="ElectricMachineTorqueLimitsType"> + <!-- optional --> + <ElectricMachine> + <Position>GEN</Position> + <VoltageLevel> + <Voltage>100</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + <VoltageLevel> + <Voltage>500</Voltage> + <MaxTorqueCurve> + <v2.3:Entry outShaftSpeed="0.00" maxTorque="200.00" minTorque="-200.00"/> + <v2.3:Entry outShaftSpeed="1000.00" maxTorque="300.00" minTorque="-300.00"/> + </MaxTorqueCurve> + </VoltageLevel> + </ElectricMachine> + </ElectricMotorTorqueLimits> + <Components xsi:type="Components_HEV-IEPC-S_PrimaryBus"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <IEPC> + <v2.3:Data xsi:type="IEPCMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>false</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..93e19524be4b0ef2006827af947a80cb89a08ada --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S3_n_opt.xml @@ -0,0 +1,405 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>610</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>S3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="v2.4:ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S3_PrimaryBusType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..81bc840493ce25aa10f2b459ce0760b6ae1bf95e --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV-S_primaryBus_S4_n_opt.xml @@ -0,0 +1,375 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Sx_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>620</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>S4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_HEV-S4_PrimaryBusType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachineGEN> + <PowertrainPosition>GEN</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + </ElectricMachineGEN> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-S_PrimaryBusType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_heavyLorry_AMT_Px_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_heavyLorry_AMT_Px_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..733c8d8ca876a7e7d0106de5155f9522f7a7b57a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_heavyLorry_AMT_Px_n_opt.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_HeavyLorryDeclarationType" id="a"> <Manufacturer>TU Graz</Manufacturer> <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> <Model>HEV Heavy Lorry Px</Model> <VIN>1234</VIN> <Date>2017-01-01T00:00:00Z</Date> <LegislativeCategory>N3</LegislativeCategory> <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <CorrectedActualMass>6000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>650</IdlingSpeed> <RetarderType>Losses included in Gearbox</RetarderType> <RetarderRatio>2.000</RetarderRatio> <AngledriveType>Separate Angledrive</AngledriveType> <PTO xsi:type="PTOType"> <PTOShaftsGearWheels>none</PTOShaftsGearWheels> <PTOOtherElements>none</PTOOtherElements> </PTO> <ZeroEmissionVehicle>true</ZeroEmissionVehicle> <VocationalVehicle>true</VocationalVehicle> <SleeperCab>true</SleeperCab> <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> <ArchitectureID>P2.5</ArchitectureID> <OvcHev>true</OvcHev> <MaxChargingPower>11</MaxChargingPower> <ADAS xsi:type="ADAS_HEV_Type"> <EngineStopStart>true</EngineStopStart> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <Components xsi:type="Components_HEV-Px_LorryType"> <Engine> <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> <WHTCUrban>1.0097</WHTCUrban> <WHTCRural>1.0035</WHTCRural> <WHTCMotorway>1.0200</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>NG</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> </FuelConsumptionMap> <FullLoadAndDragCurve> <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </Engine> <ElectricMachine> <PowertrainPosition>2</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>tokena</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="asf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>b</Manufacturer> <Model>b</Model> <CertificationNumber>tokenb</CertificationNumber> <Date>2017-02-02T00:00:00Z</Date> <AppVersion>bbbbb</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>73.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="621.00"/> <Entry SoC="100" OCV="641.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="11.00" R_10="12.00" R_20="13.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="51.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm="bsf"/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Gearbox> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> </Gears> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> </v2.0:Signature> </Gearbox> <TorqueConverter> <!-- optional --> <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>TC CalcApp 123</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </TorqueConverter> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_HEV-P_LorryDataType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> </ElectricSystem> <PneumaticSystem> <Technology>Medium Supply 2-stage</Technology> </PneumaticSystem> <HVAC> <Technology>Default</Technology> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_mediumLorry_AMT_Px_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_mediumLorry_AMT_Px_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..68ba28d5ebcec8b75db415dcfcd749d509a4a176 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_mediumLorry_AMT_Px_n_opt.xml @@ -0,0 +1,399 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>650</IdlingSpeed> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>P2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_HEV_Type"> + <EngineStopStart>true</EngineStopStart> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_HEV-Px_LorryType"> + <Engine> + <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <IdlingSpeed>560</IdlingSpeed> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2300</MaxEngineTorque> + <WHTCUrban>1.0097</WHTCUrban> + <WHTCRural>1.0035</WHTCRural> + <WHTCMotorway>1.0200</WHTCMotorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + <CFNCV>1.0000</CFNCV> + <FuelType>NG</FuelType> + <FuelConsumptionMap> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> + <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> + <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> + <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> + </FuelConsumptionMap> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> + <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> + </FullLoadAndDragCurve> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </Engine> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <!-- optional --> + <SOCmax>80</SOCmax> + <!-- optional --> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_HEV-P_LorryDataType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_primaryBus_AMT_Px_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_primaryBus_AMT_Px_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..ced7dfb8fbfba31f46148dcf8f966f6158104f24 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/HEV_primaryBus_AMT_Px_n_opt.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <v2.0:Vehicle xsi:type="Vehicle_HEV-Px_PrimaryBusDeclarationType" id="a"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>true</Articulated> <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>600</IdlingSpeed> <RetarderType>Losses included in Gearbox</RetarderType> <RetarderRatio>2.000</RetarderRatio> <AngledriveType>Separate Angledrive</AngledriveType> <ZeroEmissionVehicle>true</ZeroEmissionVehicle> <ArchitectureID>P2</ArchitectureID> <OvcHev>true</OvcHev> <MaxChargingPower>11</MaxChargingPower> <ADAS xsi:type="ADAS_HEV_Type"> <EngineStopStart>true</EngineStopStart> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <Components xsi:type="Components_HEV-Px_PrimaryBusType"> <Engine> <v2.0:Data xsi:type="v1.0:EngineDataDeclarationType" id="ENG-gooZah3D" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <IdlingSpeed>560</IdlingSpeed> <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> <WHTCUrban>1.0097</WHTCUrban> <WHTCRural>1.0035</WHTCRural> <WHTCMotorway>1.0200</WHTCMotorway> <BFColdHot>1.0000</BFColdHot> <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <FuelType>NG</FuelType> <FuelConsumptionMap> <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00"/> <Entry engineSpeed="560.00" torque="1180.00" fuelConsumption="12869.00"/> <Entry engineSpeed="2100.00" torque="-320.00" fuelConsumption="0.00"/> <Entry engineSpeed="2100.00" torque="1100.00" fuelConsumption="50653.00"/> </FuelConsumptionMap> <FullLoadAndDragCurve> <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00"/> <Entry engineSpeed="1800.00" maxTorque="1800.00" dragTorque="-300.00"/> <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </Engine> <ElectricMachine> <PowertrainPosition>2</PowertrainPosition> <Count>1</Count> <ElectricMachineSystem> <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <ElectricMachineType>ASM</ElectricMachineType> <CertificationMethod>Measured</CertificationMethod> <R85RatedPower>1</R85RatedPower> <RotationalInertia>0.10</RotationalInertia> <DcDcConverterIncluded>true</DcDcConverterIncluded> <IHPCType>None</IHPCType> <VoltageLevel> <Voltage>400</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <VoltageLevel> <Voltage>600</Voltage> <ContinuousTorque>200.00</ContinuousTorque> <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> <OverloadTorque>400.00</OverloadTorque> <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> <OverloadDuration>30.00</OverloadDuration> <MaxTorqueCurve> <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> </MaxTorqueCurve> <PowerMap> <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> </PowerMap> </VoltageLevel> <DragCurve> <Entry outShaftSpeed="0.00" dragTorque="10.00"/> <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> </DragCurve> <Conditioning> <Entry coolantTempInlet="30" coolingPower="5000"/> </Conditioning> </v2.3:Data> <v2.3:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.3:Signature> </ElectricMachineSystem> <P2.5GearRatios> <!-- only for P2.5 HEV --> <Ratio gear="1">1.000</Ratio> <Ratio gear="2">2.000</Ratio> </P2.5GearRatios> </ElectricMachine> <ElectricEnergyStorage> <Battery> <StringID>0</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> <SOCmin>20</SOCmin> <SOCmax>80</SOCmax> </Battery> <Battery> <StringID>1</StringID> <REESS> <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> <Manufacturer>a</Manufacturer> <Model>a</Model> <CertificationNumber>token</CertificationNumber> <Date>2017-01-01T00:00:00Z</Date> <AppVersion>aaaaa</AppVersion> <CertificationMethod>Measured</CertificationMethod> <BatteryType>HPBS</BatteryType> <RatedCapacity>72.00</RatedCapacity> <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> <JunctionboxIncluded>true</JunctionboxIncluded> <TestingTemperature>20</TestingTemperature> <OCV> <Entry SoC="0" OCV="620.00"/> <Entry SoC="100" OCV="640.00"/> </OCV> <InternalResistance> <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> </InternalResistance> <CurrentLimits> <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> </CurrentLimits> </v2.4:Data> <Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </Signature> </REESS> </Battery> </ElectricEnergyStorage> <Gearbox> <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> <Gears xsi:type="GearsDeclarationType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> </TorqueLossMap> </Gear> </Gears> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> </v2.0:Signature> </Gearbox> <TorqueConverter> <!-- optional --> <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>TC CalcApp 123</AppVersion> <CertificationMethod>Standard values</CertificationMethod> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </v2.0:Data> <v2.0:Signature> <di:Reference> <di:DigestMethod Algorithm=""/> <di:DigestValue/> </di:Reference> </v2.0:Signature> </TorqueConverter> <Axlegear> <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> <CertificationMethod>Standard values</CertificationMethod> <TorqueLossMap> <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> </v2.0:Data> <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> </v2.0:Signature> </Axlegear> <AxleWheels> <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> <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"> <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> </Axle> </Axles> </v2.0:Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AUX_HEV-P_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> <SmartAlternator> <!-- optional --> <RatedCurrent>100</RatedCurrent> <RatedVoltage>48</RatedVoltage> </SmartAlternator> <SmartAlternator> <!-- optional --> <RatedCurrent>50</RatedCurrent> <RatedVoltage>48</RatedVoltage> </SmartAlternator> <Battery> <!-- optional --> <BatteryTechnology>li-ion battery - high power</BatteryTechnology> <RatedCapacity>50</RatedCapacity> <NominalVoltage>48</NominalVoltage> </Battery> <Capacitor> <!-- optional --> <CapacitorTechnology>with DCDC converter</CapacitorTechnology> <RatedCapacitance>120</RatedCapacitance> <RatedVoltage>30</RatedVoltage> </Capacitor> <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> <CompressorDrive>mechanically</CompressorDrive> <Clutch>none</Clutch> <CompressorRatio>1.000</CompressorRatio> <SmartCompressionSystem>true</SmartCompressionSystem> <SmartRegenerationSystem>false</SmartRegenerationSystem> <AirsuspensionControl>electronically</AirsuspensionControl> <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> </PneumaticSystem> <HVAC> <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd8d18634fd9b7ca451fbfac33843b56f4f77641 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_heavyLorry_n_opt.xml @@ -0,0 +1,275 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_LorryType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Medium Supply 2-stage + elec. driven</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..8e668fe88df09311314a0cd3542d12e3945c7351 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_mediumLorry_n_opt.xml @@ -0,0 +1,270 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.000</CargoVolume> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_LorryType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Vacuum pump + elec. driven</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..d74b5bbcd386cfbdb1dba5f6bd35bd03427c3239 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/IEPC_primaryBus_n_opt.xml @@ -0,0 +1,268 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_IEPC_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>E-IEPC</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_IEPC_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_IEPC_PrimaryBusType"> + <IEPC> + <v2.3:Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="IEPCMeasuredDataDeclarationType" id="IEPC-asdf"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured for complete component</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DifferentialIncluded>false</DifferentialIncluded> + <DesignTypeWheelMotor>true</DesignTypeWheelMotor> + <Gears xsi:type="v2.3:IEPCGearsDeclarationType"> + <Gear number="1"> + <Ratio>3.000</Ratio> + </Gear> + <Gear number="2"> + <Ratio>1.000</Ratio> + <MaxOutShaftTorque>2000</MaxOutShaftTorque> + </Gear> + </Gears> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap gear="1"> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + <PowerMap gear="2"> + <Entry outShaftSpeed="0.00" torque="500.00" electricPower="1500.00"/> + <Entry outShaftSpeed="0.00" torque="-500.00" electricPower="-1500.00"/> + <Entry outShaftSpeed="5000.00" torque="5000.00" electricPower="25000.00"/> + <Entry outShaftSpeed="5000.00" torque="-5000.00" electricPower="-25000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve gear="1"> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <DragCurve gear="2"> + <Entry outShaftSpeed="0.00" dragTorque="15.00"/> + <Entry outShaftSpeed="4500.00" dragTorque="35.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </IEPC> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_IEPC_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_AMT_E2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_AMT_E2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..9faf3142103ec3a886468987f295643c9e57864a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_AMT_E2_n_opt.xml @@ -0,0 +1,361 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <!-- optional --> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_APT-N_E2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_APT-N_E2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..e55067566a7eb5923821fcdae20df3edd822e484 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_APT-N_E2_n_opt.xml @@ -0,0 +1,377 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VocationalVehicle>false</VocationalVehicle> + <SleeperCab>false</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="v2.4:ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.3:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2017-09-26T15:33:45.0954248Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-N</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..aeffe86c34eb5373132ac87a4305405a3df582ba --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E3_n_opt.xml @@ -0,0 +1,293 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E3_LorryType"> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..762cf2ab99342fa87b5824dcc0f1f0ff346d74c4 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_heavyLorry_E4_n_opt.xml @@ -0,0 +1,263 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_HeavyLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Rigid Lorry</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <PTO xsi:type="PTOType"> + <PTOShaftsGearWheels>none</PTOShaftsGearWheels> + <PTOOtherElements>none</PTOOtherElements> + </PTO> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VocationalVehicle>true</VocationalVehicle> + <SleeperCab>true</SleeperCab> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E4_LorryType"> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_AMT_E2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_AMT_E2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..79173c8f65be96d7962850377b5d02d18d580f1a --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_AMT_E2_n_opt.xml @@ -0,0 +1,354 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_APT-N_E2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_APT-N_E2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..9bd1d71faa2817a7fe65617ab64701965d8915d2 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_APT-N_E2_n_opt.xml @@ -0,0 +1,372 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Van</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <CargoVolume>20.000</CargoVolume> + <RetarderType>None</RetarderType> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>false</OvcHev> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_PEV-E2_LorryType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.3:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>Generic Vendor</Manufacturer> + <Model>GB_12-gear</Model> + <CertificationNumber>GBX-GB_12-gear</CertificationNumber> + <Date>2017-09-26T15:33:45.0954248Z</Date> + <AppVersion>VectoCore</AppVersion> + <TransmissionType>APT-N</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <v2.3:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> + <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> + <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> + <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> + </TorqueLossMap> + </Gear> + </v2.3:Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..1c930537faa1ef062bbcf77c9a8360702ffaf7a5 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E3_n_opt.xml @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E3_LorryType"> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c09fe9fefca1edc2ab252fe4915503741d77a97 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_mediumLorry_E4_n_opt.xml @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_MediumLorryDeclarationType" id="a"> + <Manufacturer>TU Graz</Manufacturer> + <ManufacturerAddress>Inffeldgasse 19</ManufacturerAddress> + <Model>HEV Heavy Lorry Px</Model> + <VIN>1234</VIN> + <Date>2017-01-01T00:00:00Z</Date> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <CorrectedActualMass>6000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>12000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <VehicleTypeApprovalNumber>ASDF</VehicleTypeApprovalNumber> + <ArchitectureID>E4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="v2.4:ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E4_LorryType"> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_LorryDataType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <ElectricSystem> + <Technology>Standard technology - LED headlights, all</Technology> + </ElectricSystem> + <PneumaticSystem> + <Technology>Medium Supply 2-stage + elec. driven</Technology> + </PneumaticSystem> + <HVAC> + <Technology>Default</Technology> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_AMT_E2_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_AMT_E2_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..c30eba3db3eb2a79bcfa98098cc51025079e1d9f --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_AMT_E2_n_opt.xml @@ -0,0 +1,353 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>E2</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_PEV-E2_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>2</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v2.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Gears xsi:type="GearsDeclarationType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06"/> + <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06"/> + <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06"/> + <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69"/> + <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69"/> + <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69"/> + </TorqueLossMap> + </Gear> + </Gears> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#gbx-vi2Oak2N"> + <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>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <!-- optional --> + <v2.0:Data xsi:type="v1.0:TorqueConverterDataDeclarationType" id="TQ-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Some Manufacturer</Manufacturer> + <Model>Some Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>TC CalcApp 123</AppVersion> + <CertificationMethod>Standard values</CertificationMethod> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.0:Signature> + </TorqueConverter> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E3_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E3_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..754b0ce6b77184dd65d44384815d59d7feb587ad --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E3_n_opt.xml @@ -0,0 +1,286 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>E3</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E3_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>3</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="v2.0:AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference URI="#AXL-EC3ohnoh"> + <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>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Full electric steering gear</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E4_n_opt.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E4_n_opt.xml new file mode 100644 index 0000000000000000000000000000000000000000..b1621914b54e49b64db44b5aa057f7bfd28b9bc6 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/WithoutOptionalEntries/PEV_primaryBus_E4_n_opt.xml @@ -0,0 +1,256 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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:v2.3" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <v2.0:Vehicle xsi:type="Vehicle_PEV_PrimaryBusDeclarationType" id="a"> + <Manufacturer>Generic Truck Manufacturer</Manufacturer> + <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <RetarderType>Losses included in Gearbox</RetarderType> + <RetarderRatio>2.000</RetarderRatio> + <AngledriveType>Separate Angledrive</AngledriveType> + <ZeroEmissionVehicle>true</ZeroEmissionVehicle> + <ArchitectureID>E4</ArchitectureID> + <OvcHev>true</OvcHev> + <MaxChargingPower>11</MaxChargingPower> + <ADAS xsi:type="ADAS_PEV_Type"> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <!-- optional --> + <v2.0:Entry gear="9" maxTorque="2000"/> + </TorqueLimits> + <Components xsi:type="Components_PEV-E4_PrimaryBusType"> + <ElectricMachine> + <PowertrainPosition>4</PowertrainPosition> + <Count>1</Count> + <ElectricMachineSystem> + <v2.3:Data xsi:type="ElectricMachineSystemMeasuredDataDeclarationType" id="EM-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <ElectricMachineType>ASM</ElectricMachineType> + <CertificationMethod>Measured</CertificationMethod> + <R85RatedPower>1</R85RatedPower> + <RotationalInertia>0.10</RotationalInertia> + <DcDcConverterIncluded>true</DcDcConverterIncluded> + <IHPCType>None</IHPCType> + <VoltageLevel> + <Voltage>400</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <VoltageLevel> + <Voltage>600</Voltage> + <ContinuousTorque>200.00</ContinuousTorque> + <TestSpeedContinuousTorque>2000.00</TestSpeedContinuousTorque> + <OverloadTorque>400.00</OverloadTorque> + <TestSpeedOverloadTorque>2000.00</TestSpeedOverloadTorque> + <OverloadDuration>30.00</OverloadDuration> + <MaxTorqueCurve> + <Entry outShaftSpeed="0.00" maxTorque="450.00" minTorque="-450.00"/> + <Entry outShaftSpeed="4000.00" maxTorque="100.00" minTorque="-100.00"/> + </MaxTorqueCurve> + <PowerMap> + <Entry outShaftSpeed="0.00" torque="400.00" electricPower="1000.00"/> + <Entry outShaftSpeed="0.00" torque="-400.00" electricPower="-1000.00"/> + <Entry outShaftSpeed="4000.00" torque="4000.00" electricPower="20000.00"/> + <Entry outShaftSpeed="4000.00" torque="-4000.00" electricPower="-20000.00"/> + </PowerMap> + </VoltageLevel> + <DragCurve> + <Entry outShaftSpeed="0.00" dragTorque="10.00"/> + <Entry outShaftSpeed="4000.00" dragTorque="30.00"/> + </DragCurve> + <Conditioning> + <Entry coolantTempInlet="30" coolingPower="5000"/> + </Conditioning> + </v2.3:Data> + <v2.3:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </v2.3:Signature> + </ElectricMachineSystem> + <P2.5GearRatios> + <!-- only for P2.5 HEV --> + <Ratio gear="1">1.000</Ratio> + <Ratio gear="2">2.000</Ratio> + </P2.5GearRatios> + </ElectricMachine> + <ElectricEnergyStorage> + <Battery> + <StringID>0</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + <SOCmin>20</SOCmin> + <SOCmax>80</SOCmax> + </Battery> + <Battery> + <StringID>1</StringID> + <REESS> + <v2.4:Data id="BAT-asdf" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xsi:type="BatterySystemDataType"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CertificationMethod>Measured</CertificationMethod> + <BatteryType>HPBS</BatteryType> + <RatedCapacity>72.00</RatedCapacity> + <ConnectorsSubsystemsIncluded>true</ConnectorsSubsystemsIncluded> + <JunctionboxIncluded>true</JunctionboxIncluded> + <TestingTemperature>20</TestingTemperature> + <OCV> + <Entry SoC="0" OCV="620.00"/> + <Entry SoC="100" OCV="640.00"/> + </OCV> + <InternalResistance> + <Entry SoC="0" R_2="10.00" R_10="11.00" R_20="12.00"/> + <Entry SoC="100" R_2="12.00" R_10="14.00" R_20="16.00"/> + </InternalResistance> + <CurrentLimits> + <Entry SoC="0" maxChargingCurrent="50.00" maxDischargingCurrent="0.00"/> + <Entry SoC="100" maxChargingCurrent="0.00" maxDischargingCurrent="50.00"/> + </CurrentLimits> + </v2.4:Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </REESS> + </Battery> + </ElectricEnergyStorage> + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Axles> + <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> + <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"> + <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> + </Axle> + </Axles> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_PEV_PrimaryBusType"> + <SteeringPump> + <Technology axleNumber="1">Electric driven pump</Technology> + </SteeringPump> + <PneumaticSystem> + <CompressorDrive>electrically</CompressorDrive> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/exempted_primary_heavyBus.xml similarity index 75% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/exempted_primary_heavyBus.xml index aef216779b96bd7d1342f7324dd2323928faf9fe..f008453a2833af925f272d9770d186c87cbb846f 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/exempted_primary_heavyBus.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/exempted_primary_heavyBus.xml @@ -1,19 +1,20 @@ <?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" -xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" +xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" -xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="v2.6:ExemptedPrimaryHeavyBusType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_PrimaryBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> <Model>Sample Bus Model</Model> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> - <LegislativeCategory>N2</LegislativeCategory> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>6x2</AxleConfiguration> <Articulated>false</Articulated> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-completed_heavyBus-sample.xml similarity index 52% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-completed_heavyBus-sample.xml index 5ee9d8b9ab04327c0571b01212db1033ef492394..e63e1aced275fa3a37232f386ed5e493d54bb421 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-completed_heavyBus-sample.xml @@ -1,29 +1,30 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="CompletedVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"><!--xsi:type="CompletedVehicleDeclarationType">--> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop 1</ManufacturerAddress> - <Model>Sample Bus Model</Model> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> - <LegislativeClass>N2</LegislativeClass> - <ClassBus>II+III</ClassBus> - <VehicleCode>CD</VehicleCode> - <CurbMassChassis>8300</CurbMassChassis> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>15400</TechnicalPermissibleMaximumLadenMass> - <RegisteredPassengers> - <LowerDeck>50</LowerDeck> - <UpperDeck>0</UpperDeck> - </RegisteredPassengers> + <ClassBus>II+III</ClassBus> + <NumberPassengerSeatsLowerDeck>50</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CD</BodyworkCode> <LowEntry>true</LowEntry> - <HeightIntegratedBody>2.700</HeightIntegratedBody> - <VehicleLength>11.830</VehicleLength> - <VehicleWidth>2.550</VehicleWidth> - <EntranceHeight>0.120</EntranceHeight> + <HeightIntegratedBody>2700</HeightIntegratedBody> + <VehicleLength>11830</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <VehicleDeclarationType>final</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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> @@ -33,7 +34,7 @@ <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -42,29 +43,31 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:AirDrag> + </v2.0:Signature> + </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> - <AlternatorTechnology>default</AlternatorTechnology> <LEDLights> + <Interiorlights>false</Interiorlights> <Dayrunninglights>false</Dayrunninglights> - <Headlights>false</Headlights> <Positionlights>false</Positionlights> <Brakelights>false</Brakelights> - <Interiorlights>false</Interiorlights> + <Headlights>false</Headlights> </LEDLights> </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <CompressorType> - <DriverAC>2-stage</DriverAC> - <PassengerAC>4-stage</PassengerAC> - </CompressorType> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> - <HeatPump>false</HeatPump> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> </HVAC> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_completewithoutTMPLM.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_completewithoutTMPLM.xml new file mode 100644 index 0000000000000000000000000000000000000000..86e59b3a7a9e88f527d20e6efc1c94f8b0085a8b --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_completewithoutTMPLM.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-09-19T22:00:00Z</Date> + <Model>Sample Bus Model 2</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>7000</CorrectedActualMass> + <ClassBus>A</ClassBus> + <NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_full-sample.xml similarity index 81% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_full-sample.xml index c8f44fc1b3bb0d1c4f800d92383c39cb6692142e..5d5bf009ef84d4ffc2169fa169cb26335b53fbe7 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_full-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_full-sample.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop</ManufacturerAddress> <VIN>VEH-1234567891</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_interim-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_interim-sample.xml new file mode 100644 index 0000000000000000000000000000000000000000..e25b8cac938b1f36291ed819712377301018d447 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_interim-sample.xml @@ -0,0 +1,26 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:v2.10.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Infinite Loop</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-01-09T11:00:00Z</Date> + <Model>Sample Bus Model 2</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>7000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>A</ClassBus> + <!-- <NumberPassengerSeatsLowerDeck>10</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>42</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>20</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>13</NumberPassengersStandingUpperDeck> --> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml new file mode 100644 index 0000000000000000000000000000000000000000..a73d2d6efeda96d46e067fe9d41b8020a77d900d --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer 1</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>7000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> <BodyworkCode>CC</BodyworkCode> <LowEntry>false</LowEntry> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml similarity index 81% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml index 7c9454e563e8bbe3283a2361f19032c6ef2ebf79..3c09c5deb2dae952af2771b076192909e3d4fe67 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer 2</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> <VIN>VEH-1234567891</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_mandatory_entries.xml new file mode 100644 index 0000000000000000000000000000000000000000..385695e0a7ed39d67b6d31ee7a5b4f036807e7bc --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-exempted_input_only_mandatory_entries.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-medium_lorry-sample.xml similarity index 90% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-medium_lorry-sample.xml index d66de6b8d8b6431f70e3481c4381b4259f778df9..5f9cd4691ac528fbab9f3d6c0713a74b87ecc915 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorry-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-medium_lorry-sample.xml @@ -1,29 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleMediumLorryDeclarationType"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="Vehicle_Conventional_MediumLorryDeclarationType"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> <Model>class 5_Class-5_5t0</Model> <VIN>standard values</VIN> <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>4229</CurbMassChassis> + <LegislativeCategory>N2</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <CorrectedActualMass>4229</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>7000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>100</IdlingSpeed> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> + <VehicleTypeApprovalNumber>xyz</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="VehicleComponentsNoAxlegearType"> + </ADAS> + <Components xsi:type="Components_Conventional_LorryType"> <Engine> <v2.0:Data id="ENG-350kW_IVT_12l" xsi:type="v1.0:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> @@ -189,8 +189,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Reference> </v2.0:Signature> </Engine> - <v2.6:Gearbox> - <v2.0:Data id="GBX-GB_12-gear" xsi:type="v2.6:GearboxDataDeclarationType"> + <Gearbox> + <v2.0:Data id="GBX-GB_12-gear" xsi:type="v1.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>GB_12-gear</Model> <CertificationNumber>GBX-GB_12-gear</CertificationNumber> @@ -198,9 +198,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <AppVersion>VectoCore</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>2.600</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Gears> <Gear number="1"> <Ratio>14.930</Ratio> <TorqueLossMap> @@ -381,7 +379,7 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00"/> </TorqueLossMap> </Gear> - </v2.6:Gears> + </Gears> </v2.0:Data> <v2.0:Signature> <Reference URI="#GBX-GB_12-gear" xmlns="http://www.w3.org/2000/09/xmldsig#"> @@ -393,9 +391,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestValue/> </Reference> </v2.0:Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> + </Gearbox> + <Retarder> + <v2.0:Data id="RET-RET-generic" xsi:type="v1.0:RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>RET-generic</Model> <CertificationNumber>standard values</CertificationNumber> @@ -435,8 +433,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Entry retarderSpeed="2900.00" torqueLoss="26.80"/> <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -445,10 +443,37 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data xsi:type="v1.0:AxlegearDataDeclarationType" id="AXL-123" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + <CertificationMethod>Standard values</CertificationMethod> + <TorqueLossMap> + <Entry inputSpeed="0.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="0.00" inputTorque="15000.00" torqueLoss="265.00"/> + <Entry inputSpeed="2100.00" inputTorque="-5000.00" torqueLoss="115.00"/> + <Entry inputSpeed="2100.00" inputTorque="0.00" torqueLoss="40.00"/> + <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> + </TorqueLossMap> + </v2.0:Data> + <v2.0:Signature> + <di:Reference> + <di:DigestMethod Algorithm=""></di:DigestMethod> + <di:DigestValue></di:DigestValue> + </di:Reference> + </v2.0:Signature> + </Axlegear> + + <AxleWheels> + <v2.0:Data xsi:type="v2.0:AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -505,15 +530,15 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ </Tyre> </Axle> </Axles> - </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> <Fan> <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> </Fan> <SteeringPump> - <Technology>Fixed displacement with elec. control</Technology> + <Technology axleNumber="1">Fixed displacement with elec. control</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology</Technology> @@ -525,9 +550,9 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <Technology>Default</Technology> </HVAC> </Data> - </v2.6:Auxiliaries> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> + </Auxiliaries> + <AirDrag> + <v2.0:Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Vendor</Manufacturer> <Model>N.A.</Model> <CertificationNumber>generic cabin</CertificationNumber> @@ -536,8 +561,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <CdxA_0>5.57</CdxA_0> <TransferredCdxA>5.57</TransferredCdxA> <DeclaredCdxA>5.57</DeclaredCdxA> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> <Transforms> <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> @@ -546,8 +571,8 @@ urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <DigestValue/> </Reference> - </Signature> - </v2.6:AirDrag> + </v2.0:Signature> + </AirDrag> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBus-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBus-sample.xml similarity index 98% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBus-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBus-sample.xml index 49ee9ef7852834f924e8f6e1324e980a8541968d..ce2029db18fd2a714bc20753e8066936a6ca9f20 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBus-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBus-sample.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Entry gear="6" maxTorque="1800"/> - <Entry gear="1" maxTorque="2500"/> - <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +174,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +183,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -193,7 +194,7 @@ <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <Gears xsi:type="GearsDeclarationType"> + <Gears> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> @@ -2572,8 +2573,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2583,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2597,16 +2598,16 @@ <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2622,8 +2623,8 @@ <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2633,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2668,8 +2669,8 @@ <Entry retarderSpeed="2200.00" torqueLoss="19.68"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2679,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3184,8 +3185,8 @@ <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3195,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3256,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3266,7 +3267,6 @@ </SteeringPump> <ElectricSystem> <AlternatorTechnology>conventional</AlternatorTechnology> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3283,7 +3283,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES-sample.xml similarity index 98% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES-sample.xml index 5fd281db3d357a09ecd5da29cb90008ce745cf51..74636ec5ddbc8f35c1068e61d803383505594fd0 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES-sample.xml @@ -1,11 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -15,19 +16,19 @@ <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Entry gear="6" maxTorque="1800"/> - <Entry gear="1" maxTorque="2500"/> - <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <TorqueLimits xsi:type="v2.0:TorqueLimitsType"> + <v2.0:Entry gear="6" maxTorque="1800"/> + <v2.0:Entry gear="1" maxTorque="2500"/> + <v2.0:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -173,7 +174,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -182,10 +183,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="v1.0:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -193,7 +194,7 @@ <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <MainCertificationMethod>Standard values</MainCertificationMethod> - <Gears xsi:type="GearsDeclarationType"> + <Gears> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> @@ -2572,8 +2573,8 @@ </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2582,10 +2583,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2597,16 +2598,16 @@ <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2622,8 +2623,8 @@ <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2632,10 +2633,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2668,8 +2669,8 @@ <Entry retarderSpeed="2200.00" torqueLoss="19.68"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2678,10 +2679,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3184,8 +3185,8 @@ <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3194,10 +3195,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3255,9 +3256,9 @@ </Axle> </Axles> </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3280,7 +3281,6 @@ <RatedCapacitance>30</RatedCapacitance> <RatedVoltage>3</RatedVoltage> </Capacitor> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3297,7 +3297,7 @@ <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml similarity index 98% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml index 2be6328a751fdf5bce6fe2abf017c0e7cf0d3bf3..bce70ae884b21f1b2f295b04d43470083498ea27 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="PrimaryVehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_PrimaryBusDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> <Articulated>false</Articulated> @@ -17,20 +17,20 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <RetarderRatio>1.000</RetarderRatio> <AngledriveType>Separate Angledrive</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> </ADAS> - <v2.6:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800"/> <Entry gear="1" maxTorque="2500"/> <Entry gear="12" maxTorque="1900"/> - </v2.6:TorqueLimits> - <Components xsi:type="PrimaryVehicleComponentsDeclarationType"> - <v2.6:Engine xsi:type="v2.0:EngineComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_PrimaryBusType"> + <Engine> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> @@ -176,7 +176,7 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00"/> </FullLoadAndDragCurve> </v2.0:Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -185,10 +185,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Engine> - <v2.6:Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + </v2.0:Signature> + </Engine> + <Gearbox> + <v2.0:Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -196,7 +196,7 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <AppVersion>3.0.1</AppVersion> <TransmissionType>APT-S</TransmissionType> <MainCertificationMethod>Option 1</MainCertificationMethod> - <Gears xsi:type="GearsDeclarationType"> + <Gears> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> @@ -2575,8 +2575,8 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt </TorqueLossMap> </Gear> </Gears> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2585,10 +2585,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Gearbox> - <v2.6:TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + </v2.0:Signature> + </Gearbox> + <TorqueConverter> + <v2.0:Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2600,16 +2600,16 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:TorqueConverter> - <v2.6:Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + </v2.0:Signature> + </TorqueConverter> + <Angledrive> + <v2.0:Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2625,8 +2625,8 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <Entry inputSpeed="0.00" inputTorque="10000.00" torqueLoss="100.00"/> <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2635,10 +2635,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Angledrive> - <v2.6:Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + </v2.0:Signature> + </Angledrive> + <Retarder> + <v2.0:Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2671,8 +2671,8 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <Entry retarderSpeed="2200.00" torqueLoss="19.68"/> <Entry retarderSpeed="2300.00" torqueLoss="20.58"/> </RetarderLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -2681,10 +2681,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Retarder> - <v2.6:Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + </v2.0:Signature> + </Retarder> + <Axlegear> + <v2.0:Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3187,8 +3187,8 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <Entry inputSpeed="2100.00" inputTorque="34000.00" torqueLoss="550.00"/> <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00"/> </TorqueLossMap> - </Data> - <Signature> + </v2.0:Data> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -3197,10 +3197,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> - </v2.6:Axlegear> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + </v2.0:Signature> + </Axlegear> + <AxleWheels> + <v2.0:Data xsi:type="AxleWheelsDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3257,10 +3257,10 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt </Tyre> </Axle> </Axles> - </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xsi:type="PrimaryVehicleAuxiliariesComponentDeclarationType"> - <Data xsi:type="PrimaryVehicleAuxiliaryDataDeclarationType"> + </v2.0:Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_PrimaryBusType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> @@ -3283,7 +3283,6 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <RatedCapacitance>30</RatedCapacitance> <RatedVoltage>3</RatedVoltage> </Capacitor> - <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> @@ -3300,7 +3299,7 @@ xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> - </v2.6:Auxiliaries> + </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final-noADAS.xml similarity index 56% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final-noADAS.xml index 24f2810fdf692cbe4e1f1f7af756eddf86f2e8fd..ec506488f57fd923dc853f845906105f02752bbd 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final-noADAS.xml @@ -1,17 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> <VIN>VEH-1234567890</VIN> - <Date>2021-06-30T22:00:00Z</Date> + <Date>2021-09-19T22:00:00Z</Date> <Model>Sample Bus Model</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> - <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>true</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> @@ -23,15 +22,9 @@ <VehicleWidth>2500</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <DoorDriveTechnology>electric</DoorDriveTechnology> - <VehicleDeclarationType>interim</VehicleDeclarationType> - <ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>123456789</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> @@ -55,7 +48,7 @@ </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -66,22 +59,19 @@ </LEDLights> </ElectricSystem> <HVAC> - <SystemConfiguration>0</SystemConfiguration> - <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> - <HeatPumpTypePassengerCompartment>non R-744 3-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>heating</HeatPumpModePassengerCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>non R-744 4-stage</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> <DoubleGlazing>false</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> - <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> - <WaterElectricHeater>true</WaterElectricHeater> - <AirElectricHeater>false</AirElectricHeater> - <OtherHeatingTechnology>false</OtherHeatingTechnology> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> </HVAC> </Data> </Auxiliaries> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final.xml new file mode 100644 index 0000000000000000000000000000000000000000..b4fd8da31e848d10169ec77dfb298152f4125058 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample-final.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.10.2" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>123456789</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>6</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>non R-744 4-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample.xml new file mode 100644 index 0000000000000000000000000000000000000000..c94c07d8adacebcc4771ce30c9ce54f6c4075c99 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD\VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-06-30T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data id="CabinX23h" xsi:type="v2.0:AirDragDataDeclarationType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>non R-744 4-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample_group41.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample_group41.xml similarity index 72% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample_group41.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample_group41.xml index 7f2549432b7cd109b1d30db6ebb5cbf56e106a3e..249636ca171439c2db1f9e25328154fa6bbdb3da 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_full-sample_group41.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_full-sample_group41.xml @@ -1,12 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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:di="http://www.w3.org/2000/09/xmldsig#" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> <VIN>VEH-1234567890</VIN> @@ -15,9 +14,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>8300</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> - <AirdragModifiedMultistage>false</AirdragModifiedMultistage> - <NgTankSystem>Compressed</NgTankSystem> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>2</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>11</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>12</NumberPassengerSeatsUpperDeck> @@ -30,13 +29,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto <EntranceHeight>120</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>interim</VehicleDeclarationType> - <ADAS> - <v2.3:EngineStopStart>false</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> </ADAS> - <Components xsi:type="CompletedVehicleComponentsDeclarationType"> + <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> @@ -60,7 +59,7 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto </v2.0:Signature> </AirDrag> <Auxiliaries> - <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> + <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> @@ -72,10 +71,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto </ElectricSystem> <HVAC> <SystemConfiguration>7</SystemConfiguration> - <HeatPumpTypeDriverCompartment>non R-744 2-stage</HeatPumpTypeDriverCompartment> - <HeatPumpModeDriverCompartment>cooling</HeatPumpModeDriverCompartment> - <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> - <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> <DoubleGlazing>true</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries01-sample.xml new file mode 100644 index 0000000000000000000000000000000000000000..2b8dad4ddb4b86dd3e4fad8e9d95414e6b972bd6 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries01-sample.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > + <Manufacturer>Some Manufacturer 1</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-01-09T11:00:00Z</Date> + <Model>Sample Bus Model 2</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>5000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <ClassBus>A</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <BodyworkCode>CG</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>10000</VehicleLength> + <VehicleWidth>2600</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries02-sample.xml new file mode 100644 index 0000000000000000000000000000000000000000..df7f099924f2a906fedeeb4a9ae0c581cd314968 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_certain_entries02-sample.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 2</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <Model>Sample Bus Model</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> <ClassBus>II+III</ClassBus> <NgTankSystem>Compressed</NgTankSystem> <NumberPassengerSeatsLowerDeck>5</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>15</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> <NumberPassengersStandingUpperDeck>6</NumberPassengersStandingUpperDeck> <BodyworkCode>CB</BodyworkCode> <LowEntry>false</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>9500</VehicleLength> <VehicleWidth>2500</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="Components_Conventional_CompletedBusType"> <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <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>6.31</v2.0:CdxA_0> <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> </v2.0: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="AUX_Conventional_CompletedBusType"> <HVAC> <SystemConfiguration>0</SystemConfiguration> <HeatPumpTypeDriverCompartment> <Cooling>none</Cooling> <Heating>none</Heating> </HeatPumpTypeDriverCompartment> <HeatPumpTypePassengerCompartment> <Cooling>non R-744 2-stage</Cooling> <Heating>none</Heating> </HeatPumpTypePassengerCompartment> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_component_nullable_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_component_nullable_entries.xml new file mode 100644 index 0000000000000000000000000000000000000000..19733726558e66485a4480ef0f815f6fe5476a56 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_component_nullable_entries.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 4</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 4</ManufacturerAddress> <VIN>VEH-1234567894</VIN> <Date>2022-01-09T11:00:00Z</Date> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>true</EcoRollWithEngineStop> <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> </ADAS> <Components xsi:type="Components_Conventional_CompletedBusType"> <Auxiliaries> <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> </LEDLights> </ElectricSystem> <HVAC> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_entries.xml new file mode 100644 index 0000000000000000000000000000000000000000..93899b203b36cae6e4e53f533f440727a26d5cd5 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_entries.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <VehicleDeclarationType>final</VehicleDeclarationType> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml similarity index 69% rename from VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml index f1651fd3a16266d3eb48a4845629326df7a93a8b..737deac2ac26cebda86318eb69f42b163e701681 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml @@ -1,19 +1,19 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <VehicleDeclarationType>final</VehicleDeclarationType> - <Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag> - <v2.0:Data xsi:type="v2.8:AirDragModifiedUseStandardValueType" id="std"/> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data xsi:type="AirDragModifiedUseStandardValueType" id="std"/> <v2.0:Signature> <di:Reference URI="#std"> <di:Transforms> @@ -24,9 +24,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\\VectoCore\VectoCo <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> </v2.0:Signature> - </v2.8:AirDrag> + </AirDrag> <Auxiliaries> - <Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"></Data> + <Data xsi:type="AUX_Conventional_CompletedBusType"></Data> </Auxiliaries> </Components> </v2.0:Vehicle> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_vif_input.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_vif_input.xml new file mode 100644 index 0000000000000000000000000000000000000000..53d349600d5092e1fcd74b8d9738b3bb17a15a84 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-stage_vif_input.xml @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle"> <Manufacturer>Intermediate Manufacturer 3</Manufacturer> <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-2234567866</VIN> <Date>2021-02-13T07:20:08.0187663Z</Date> <LegislativeCategory>M3</LegislativeCategory> <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> <ClassBus>B</ClassBus> <NgTankSystem>Liquefied</NgTankSystem> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>true</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>true</EcoRollWithEngineStop> <PredictiveCruiseControl>1,2</PredictiveCruiseControl> <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="Components_Conventional_CompletedBusType"> <Auxiliaries> <Data xsi:type="AUX_Conventional_CompletedBusType"> <ElectricSystem> <LEDLights> <Positionlights>false</Positionlights> <Brakelights>false</Brakelights> <Headlights>true</Headlights> </LEDLights> </ElectricSystem> <HVAC> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/Tractor_4x2_vehicle-class-5_5_t_0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/Tractor_4x2_vehicle-class-5_5_t_0.xml index d688d47acf2aade1fbe7e9987d58fa206343bef8..f506066a9138d7e010eac99cda6c9be8dc4ff4e4 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/Tractor_4x2_vehicle-class-5_5_t_0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/Tractor_4x2_vehicle-class-5_5_t_0.xml @@ -6,8 +6,7 @@ xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_engine-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_engine-sample.xml index 514bc4a24ff111d30f27899289713a25b29f7d09..34224c3650d6ca54871fce7dafd3f931aabdfedf 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_engine-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_engine-sample.xml @@ -6,7 +6,7 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoComponent.2.0.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd" > <tns:Engine xsi:type="v2.0:EngineComponentDeclarationType"> <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.1:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_vehicle-sample_LNG.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_vehicle-sample_LNG.xml index 44094e031c3d92b0f533096dae628dd6ada7757b..342fa98219be33f596eeffee4cdf9450e5dc64b0 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_vehicle-sample_LNG.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.2/vecto_vehicle-sample_LNG.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoInput.2.0.xsd"> +<tns:VectoInputDeclaration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> @@ -3246,7 +3246,7 @@ <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-01-11T14:00:00Z</Date> <AppVersion>Tyre Generation App 1.0</AppVersion> - <Dimension>235/60 R17 C</Dimension> <!-- New Dimesion added in v2.2 --> + <Dimension>235/60 R17C</Dimension> <!-- New Dimesion added in v2.2 --> <RRCDeclared>0.0063</RRCDeclared> <FzISO>31300</FzISO> </v2.0:Data> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample.xml index a577d20478e20d4743eac7dff7659e1470433711..2e03b8c4a2e5c85e10aa1cd858199b6112bff278 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample.xml @@ -2,12 +2,12 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent E:\QUAM\Workspace\VECTO_FurtherDev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Engine xsi:type="v2.0:EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -17,7 +17,11 @@ <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> - <WHRType>none</WHRType> + <WHRType> + <MechanicalOutputICE>false</MechanicalOutputICE> + <MechanicalOutputDrivetrain>false</MechanicalOutputDrivetrain> + <ElectricalOutput>false</ElectricalOutput> + </WHRType> <Mode> <IdlingSpeed>560</IdlingSpeed> <FullLoadAndDragCurve> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSampleDualModeDualFuel.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSampleDualModeDualFuel.xml index 23c953dc82653b563c4c2864845df821450a251c..3671aa6cfd3930e53a5a24bba9f7505dcb0a1410 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSampleDualModeDualFuel.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSampleDualModeDualFuel.xml @@ -2,12 +2,12 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoComponent.2.0.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Engine xsi:type="v2.0:EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample_WHR.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample_WHR.xml index 124becae98823784aea62e9f109ee540b4609d0b..e0a79b6e6b71a16c891309925ee677b34319dc6c 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample_WHR.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/engineSample_WHR.xml @@ -2,12 +2,12 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent E:\QUAM\Workspace\VECTO_FurtherDev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Engine xsi:type="v2.0:EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3_DF"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -17,7 +17,11 @@ <RatedSpeed>2200</RatedSpeed> <RatedPower>380000</RatedPower> <MaxEngineTorque>2300</MaxEngineTorque> - <WHRType>mechanical and electrical</WHRType> + <WHRType> + <MechanicalOutputICE>false</MechanicalOutputICE> + <MechanicalOutputDrivetrain>false</MechanicalOutputDrivetrain> + <ElectricalOutput>true</ElectricalOutput> + </WHRType> <Mode> <IdlingSpeed>560</IdlingSpeed> <FullLoadAndDragCurve> @@ -40,14 +44,16 @@ <CFRegPer>1.0000</CFRegPer> <CFNCV>1.0000</CFNCV> <WHRCorrectionFactors> - <Urban>1.0097</Urban> - <Rural>1.0000</Rural> - <Motorway>1.0000</Motorway> - <BFColdHot>1.0000</BFColdHot> - <CFRegPer>1.0000</CFRegPer> + <Electrical> + <Urban>1.0097</Urban> + <Rural>1.0000</Rural> + <Motorway>1.0000</Motorway> + <BFColdHot>1.0000</BFColdHot> + <CFRegPer>1.0000</CFRegPer> + </Electrical> </WHRCorrectionFactors> <FuelConsumptionMap> - <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00" electricPower="200.00" mechanicalPower="" /> + <Entry engineSpeed="560.00" torque="-149.00" fuelConsumption="0.00" electricPower="200.00" /> <Entry engineSpeed="560.00" torque="0.00" fuelConsumption="125.60" electricPower="200.00" /> <Entry engineSpeed="560.00" torque="200.00" fuelConsumption="319.70" electricPower="200.00" /> <Entry engineSpeed="560.00" torque="400.00" fuelConsumption="529.50" electricPower="200.00" /> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_tyre-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_tyre-sample.xml index 5245c7f5da3276958f2951df875c297195be8fa2..97123e239b5f52fc40b3db4cf1344a9ae0653c45 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_tyre-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_tyre-sample.xml @@ -1 +1 @@ -<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent E:\QUAM\Workspace\VECTO_DEV_Hybrid\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Tyre xsi:type="v2.0:TyreComponentDeclarationType"> <v2.0:Data id="TYR-gooZah3D" xsi:type="v2.3:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> <Manufacturer>Generic Tyre Manufacturer</Manufacturer> <Model>Generic Tyre Model</Model> <CertificationNumber>e12*0815/8051*2017/05T0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>DemoTyreApp 1.0</AppVersion> <Dimension>235/60 R17C</Dimension><!--- New tyre dimension added in version 2.2 --> <TyreClass>C1</TyreClass> <FuelEfficiencyClass>A</FuelEfficiencyClass> <RRCDeclared>0.0055</RRCDeclared> <FzISO>33500</FzISO> </v2.0:Data> <Signature> <di:Reference URI="#TYR-gooZah3D"> <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>JWEwzKSP0lXvwRgQZTiWJm9dpdtQ72FOX0CC5Vy6f2Y=</di:DigestValue> </di:Reference> </Signature> </tns:Tyre> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationComponent.xsd"> <tns:Tyre xsi:type="v2.0:TyreComponentDeclarationType"> <v2.0:Data id="TYR-gooZah3D" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Tyre Manufacturer</Manufacturer> <Model>Generic Tyre Model</Model> <CertificationNumber>e12*0815/8051*2017/05T0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>DemoTyreApp 1.0</AppVersion> <Dimension>235/60 R17C</Dimension><!--- New tyre dimension added in version 2.2 --> <TyreClass>C1</TyreClass> <FuelEfficiencyClass>A</FuelEfficiencyClass> <RRCDeclared>0.0055</RRCDeclared> <FzISO>33500</FzISO> </v2.0:Data> <Signature> <di:Reference URI="#TYR-gooZah3D"> <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>JWEwzKSP0lXvwRgQZTiWJm9dpdtQ72FOX0CC5Vy6f2Y=</di:DigestValue> </di:Reference> </Signature> </tns:Tyre> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml index 61ffe14f8c1d362315d33ed0bbad8ab468ee0dcc..eece28613dbeaa210d1387700b9d5e2907cf2180 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vecto_vehicle-fullElectricSP.xml @@ -5,45 +5,46 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" + xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_HeavyLorryDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> <Model>Generic Model</Model> <VIN>VEH-1234567890</VIN> <Date>2017-02-15T11:00:00Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Tractor</VehicleCategory> + <LegislativeCategory>N3</LegislativeCategory> + <ChassisConfiguration>Tractor</ChassisConfiguration> <AxleConfiguration>4x2</AxleConfiguration> - <CurbMassChassis>7100</CurbMassChassis> - <GrossVehicleMass>40000</GrossVehicleMass> + <CorrectedActualMass>7100</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>600</IdlingSpeed> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> - <v2.1:PTO xsi:type="PTOType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <PTO xsi:type="PTOType" > <PTOShaftsGearWheels>only the drive shaft of the PTO</PTOShaftsGearWheels> <PTOOtherElements>multi-disc clutch</PTOOtherElements> - </v2.1:PTO> + </PTO> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <VocationalVehicle>false</VocationalVehicle> <SleeperCab>true</SleeperCab> - <v2.1:ADAS xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> + <ADAS xsi:type="ADAS_Conventional_Type"> <EngineStopStart>false</EngineStopStart> <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> <EcoRollWithEngineStop>false</EcoRollWithEngineStop> <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.1:ADAS> - <v2.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + </ADAS> + <v2.4:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Entry gear="6" maxTorque="1800" /> <Entry gear="1" maxTorque="2500" /> <Entry gear="12" maxTorque="1900" /> - </v2.1:TorqueLimits> - <Components xsi:type="v2.0:VehicleComponentsType"> - <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> - <Data id="ENG-gooZah3D" xsi:type="EngineDataDeclarationType"> + </v2.4:TorqueLimits> + <Components xsi:type="Components_Conventional_LorryType"> + <Engine> + <Data id="ENG-gooZah3D" xsi:type="EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -188,7 +189,7 @@ <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00" /> </FullLoadAndDragCurve> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#ENG-gooZah3D"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -197,10 +198,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>sNtMe9udO39TyKXzgwYEpVKImWizFalaBVqq3jLktuo=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </Engine> - <Gearbox xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="GearboxComponentDeclarationType"> - <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType"> + <Gearbox> + <Data id="gbx-vi2Oak2N" xsi:type="GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2588,7 +2589,7 @@ </Gear> </Gears> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#gbx-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -2597,10 +2598,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>ieNmjofFObDBGnB7+GX9of3HYe3ydK/ra+YvmULVJIk=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </Gearbox> - <TorqueConverter xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="TorqueConverterComponentDeclarationType"> - <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType"> + <TorqueConverter> + <Data id="tc-123xyz" xsi:type="TorqueConverterDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Some Manufacturer</Manufacturer> <Model>Some Model</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2613,15 +2614,15 @@ <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"></Entry> </Characteristics> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#tc-123xyz"> <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"></di:DigestMethod> <di:DigestValue>q2sumDwsqQKLw4xwkEllgsygF5bHBwZPSS66UNaXXis=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </TorqueConverter> - <Angledrive xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AngledriveComponentDeclarationType"> - <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType"> + <Angledrive> + <Data id="agl-vi2Oak2N" xsi:type="AngledriveDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2638,7 +2639,7 @@ <Entry inputSpeed="1000.00" inputTorque="1000.00" torqueLoss="100.00" /> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#agl-vi2Oak2N"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -2647,10 +2648,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>1tuF9SoA8luoUBQGym4bYi1TurDSmcYqBDJ6AP20OSs=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </Angledrive> - <Retarder xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="RetarderComponentDeclarationType"> - <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType"> + <Retarder> + <Data id="RET-Shai9imi" xsi:type="RetarderDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Retarder Manufacturer</Manufacturer> <Model>Generic Retarder</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -2684,7 +2685,7 @@ <Entry retarderSpeed="2300.00" torqueLoss="20.58" /> </RetarderLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#RET-Shai9imi"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -2693,10 +2694,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>fcEtYfDAbfuRq0xpuzapmEj+Py1PIPUZwVmx+amNvcc=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </Retarder> - <Axlegear xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxlegearComponentDeclarationType"> - <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType"> + <Axlegear> + <Data id="AXL-EC3ohnoh" xsi:type="AxlegearDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> @@ -3200,7 +3201,7 @@ <Entry inputSpeed="2100.00" inputTorque="35000.00" torqueLoss="565.00" /> </TorqueLossMap> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#AXL-EC3ohnoh"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -3209,10 +3210,10 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>o4nYTajmWKaduxys5ShmnfJbYd23rpxZ01JbuG6dmzU=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </Axlegear> - <AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> + <AxleWheels> + <Data xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsDataDeclarationType"> <Axles> <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> <AxleType>VehicleNonDriven</AxleType> @@ -3271,14 +3272,14 @@ </Axles> </Data> </AxleWheels> - <Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <v2.0:Data xsi:type="v2.3:AuxiliariesDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_LorryDataType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> - <Technology>Full electric steering gear</Technology> - <Technology>Electric driven pump</Technology> + <Technology axleNumber="1">Full electric steering gear</Technology> + <Technology axleNumber="2">Electric driven pump</Technology> </SteeringPump> <ElectricSystem> <Technology>Standard technology - LED headlights, all</Technology> @@ -3289,10 +3290,10 @@ <HVAC> <Technology>Default</Technology> </HVAC> - </v2.0:Data> + </Data> </Auxiliaries> - <AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <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> @@ -3302,7 +3303,7 @@ <TransferredCdxA>6.32</TransferredCdxA> <DeclaredCdxA>6.34</DeclaredCdxA> </Data> - <Signature> + <v2.0:Signature> <di:Reference URI="#CabinX23h"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -3311,7 +3312,7 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> </di:Reference> - </Signature> + </v2.0:Signature> </AirDrag> </Components> </v2.0:Vehicle> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml index 7e09626a2ff6f2942ae599aba53ddf7a9c94100a..fd3b4c1196956fefb415ce88c905c17c2a74d31e 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel.xml @@ -6,9 +6,9 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob V:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> @@ -45,7 +45,7 @@ </v2.1:TorqueLimits> <Components xsi:type="v2.0:VehicleComponentsType"> <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel_WHR.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel_WHR.xml index 7883d9a5f72223e0380bb5524eb645dbf310cb59..0685cc32c77b8b91a545871d184da8cd46532581 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel_WHR.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleDualModeDualFuel_WHR.xml @@ -5,9 +5,9 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> @@ -35,7 +35,7 @@ </TorqueLimits> <Components xsi:type="VehicleComponentsType"> <Engine> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel.xml index 0073f9b9efb7e30edd9023b44cc5936ec51a5fba..7ecbc3d47e8d706e16ecd4a1b3908da3af0dccba 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel.xml @@ -5,9 +5,9 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> @@ -35,7 +35,7 @@ </TorqueLimits> <Components xsi:type="VehicleComponentsType"> <Engine> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel_WHR.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel_WHR.xml index e647e10f1e5d974a8d6533bafc3c5ad0e49d70eb..6154ca5146d70720a8b55b8bf7b74624ade3698d 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel_WHR.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeDualFuel_WHR.xml @@ -5,9 +5,9 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" + xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> @@ -35,7 +35,7 @@ </TorqueLimits> <Components xsi:type="VehicleComponentsType"> <Engine> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml index 19f990f401fdab766211e724ce1ebaf31b6d1328..f20c7112d75d1b873531a114851167094450160a 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.3/vehicle_sampleSingleModeSingleFuel_WHR.xml @@ -6,9 +6,9 @@ xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" 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.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_ADAS\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd" > <v2.0:Vehicle id="VEH-1234567890" xsi:type="VehicleDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> @@ -45,7 +45,7 @@ </v2.1:TorqueLimits> <Components xsi:type="v2.0:VehicleComponentsType"> <Engine xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="EngineComponentDeclarationType"> - <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3"> + <v2.0:Data id="ENG-gooZah3D" xsi:type="v2.3:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/vecto_tyre-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/vecto_tyre-sample.xml deleted file mode 100644 index f0072c18f7eb19b279751091d7c7b081e94708a2..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.4/vecto_tyre-sample.xml +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> - -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" - xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" - xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoDeclarationComponent.xsd"> - <tns:Tyre xsi:type="v2.0:TyreComponentDeclarationType"> - <v2.0:Data id="TYR-gooZah3D" xsi:type="TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.4"> - <Manufacturer>Generic Tyre Manufacturer</Manufacturer> - <Model>Generic Tyre Model</Model> - <CertificationNumber>e12*0815/8051*2017/05T0000*00</CertificationNumber> - <Date>2017-02-15T11:00:00Z</Date> - <AppVersion>DemoTyreApp 1.0</AppVersion> - <Dimension>235/60 R17C</Dimension><!--- New tyre dimension added in version 2.2 --> - <TyreClass>N/A</TyreClass><!-- New input parameter added in version 2.4 --> - <FuelEfficiencyClass>N/A</FuelEfficiencyClass><!-- New input parameter added in version 2.4 --> - <RRCDeclared>0.0055</RRCDeclared> - <FzISO>33500</FzISO> - </v2.0:Data> - <Signature> - <di:Reference URI="#TYR-gooZah3D"> - <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>JWEwzKSP0lXvwRgQZTiWJm9dpdtQ72FOX0CC5Vy6f2Y=</di:DigestValue> - </di:Reference> - </Signature> - </tns:Tyre> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.5/vecto_gearbox-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.5/vecto_gearbox-sample.xml deleted file mode 100644 index 62b0c7266ee695924621ea16bcbdcbdf91b57a5e..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.5/vecto_gearbox-sample.xml +++ /dev/null @@ -1,2411 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.5" - xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:v2.5="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.5" - xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" - xmlns:di="http://www.w3.org/2000/09/xmldsig#" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/DEV/VectoDeclarationComponent.xsd"> - <tns:Gearbox xsi:type="GearboxComponentDeclarationType"> - <v2.0:Data id="GBX-gooZah3D" xsi:type="v2.5:GearboxDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.5"> - <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> - <Model>Generic 40t Long Haul Truck Gearbox</Model> - <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> - <Date>2017-01-11T11:00:00Z</Date> - <AppVersion>3.0.1</AppVersion> - <TransmissionType>AMT</TransmissionType> - <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>false</DifferentialIncluded> - <v2.5:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Gear number="1" > - <Ratio>14.930</Ratio> - <MaxTorque>1900</MaxTorque> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="2"> - <Ratio>11.640</Ratio> - <MaxTorque>1900</MaxTorque> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="3"> - <Ratio>9.020</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="4"> - <Ratio>7.040</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="5"> - <Ratio>5.640</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="6"> - <Ratio>4.400</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="7"> - <Ratio>3.390</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="8"> - <Ratio>2.650</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="9"> - <Ratio>2.050</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="10"> - <Ratio>1.600</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="11"> - <Ratio>1.280</Ratio> - <MaxSpeed>2000</MaxSpeed> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="12.06" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="8.06" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="6.06" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="10.06" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="14.06" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="18.06" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="22.06" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="26.06" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="30.06" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="34.06" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="38.06" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="42.06" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="46.06" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="50.06" /> - <Entry inputSpeed="0.00" inputTorque="3000.00" torqueLoss="54.06" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="12.56" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="8.56" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="6.56" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="10.56" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="14.56" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="18.56" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="22.56" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="26.56" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="30.56" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="34.56" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="38.56" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="42.56" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="46.56" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="50.56" /> - <Entry inputSpeed="100.00" inputTorque="3000.00" torqueLoss="54.56" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="13.58" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="9.58" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="7.58" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="11.58" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="15.58" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="19.58" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="23.58" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="27.58" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="31.58" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="35.58" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="39.58" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="43.58" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="47.58" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="51.58" /> - <Entry inputSpeed="300.00" inputTorque="3000.00" torqueLoss="55.58" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="14.59" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="10.59" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="8.59" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="12.59" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="16.59" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="20.59" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="24.59" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="28.59" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="32.59" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="36.59" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="40.59" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="44.59" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="48.59" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="52.59" /> - <Entry inputSpeed="500.00" inputTorque="3000.00" torqueLoss="56.59" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="15.60" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="11.60" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="9.60" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="13.60" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="17.60" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="21.60" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="25.60" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="29.60" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="33.60" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="37.60" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="41.60" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="45.60" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="49.60" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="53.60" /> - <Entry inputSpeed="700.00" inputTorque="3000.00" torqueLoss="57.60" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="16.61" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="12.61" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="10.61" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="14.61" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="18.61" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="22.61" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="26.61" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="30.61" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="34.61" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="38.61" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="42.61" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="46.61" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="50.61" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="54.61" /> - <Entry inputSpeed="900.00" inputTorque="3000.00" torqueLoss="58.61" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="17.63" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="13.63" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="11.63" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="15.63" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="19.63" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="23.63" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="27.63" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="31.63" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="35.63" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="39.63" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="43.63" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="47.63" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="51.63" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="55.63" /> - <Entry inputSpeed="1100.00" inputTorque="3000.00" torqueLoss="59.63" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="18.64" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="14.64" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="12.64" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="16.64" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="20.64" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="24.64" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="28.64" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="32.64" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="36.64" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="40.64" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="44.64" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="48.64" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="52.64" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="56.64" /> - <Entry inputSpeed="1300.00" inputTorque="3000.00" torqueLoss="60.64" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="19.65" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="15.65" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="13.65" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="17.65" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="21.65" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="25.65" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="29.65" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="33.65" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="37.65" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="41.65" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="45.65" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="49.65" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="53.65" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="57.65" /> - <Entry inputSpeed="1500.00" inputTorque="3000.00" torqueLoss="61.65" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="20.66" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="16.66" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="14.66" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="18.66" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="22.66" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="26.66" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="30.66" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="34.66" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="38.66" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="42.66" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="46.66" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="50.66" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="54.66" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="58.66" /> - <Entry inputSpeed="1700.00" inputTorque="3000.00" torqueLoss="62.66" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="21.67" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="17.67" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="15.67" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="19.67" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="23.67" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="27.67" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="31.67" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="35.67" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="39.67" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="43.67" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="47.67" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="51.67" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="55.67" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="59.67" /> - <Entry inputSpeed="1900.00" inputTorque="3000.00" torqueLoss="63.67" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="22.69" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="18.69" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="16.69" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="20.69" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="24.69" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="28.69" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="32.69" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="36.69" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="40.69" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="44.69" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="48.69" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="52.69" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="56.69" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="60.69" /> - <Entry inputSpeed="2100.00" inputTorque="3000.00" torqueLoss="64.69" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="25.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="25.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="26.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="27.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="28.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="29.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="30.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="31.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="32.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="33.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="34.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="35.69" /> - </TorqueLossMap> - </Gear> - <Gear number="12"> - <Ratio>1.000</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-350.00" torqueLoss="6.81" /> - <Entry inputSpeed="0.00" inputTorque="-150.00" torqueLoss="5.81" /> - <Entry inputSpeed="0.00" inputTorque="50.00" torqueLoss="5.31" /> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="6.31" /> - <Entry inputSpeed="0.00" inputTorque="450.00" torqueLoss="7.31" /> - <Entry inputSpeed="0.00" inputTorque="650.00" torqueLoss="8.31" /> - <Entry inputSpeed="0.00" inputTorque="850.00" torqueLoss="9.31" /> - <Entry inputSpeed="0.00" inputTorque="1050.00" torqueLoss="10.31" /> - <Entry inputSpeed="0.00" inputTorque="1250.00" torqueLoss="11.31" /> - <Entry inputSpeed="0.00" inputTorque="1450.00" torqueLoss="12.31" /> - <Entry inputSpeed="0.00" inputTorque="1650.00" torqueLoss="13.31" /> - <Entry inputSpeed="0.00" inputTorque="1850.00" torqueLoss="14.31" /> - <Entry inputSpeed="0.00" inputTorque="2050.00" torqueLoss="15.31" /> - <Entry inputSpeed="0.00" inputTorque="2250.00" torqueLoss="16.31" /> - <Entry inputSpeed="0.00" inputTorque="2800.00" torqueLoss="17.31" /> - <Entry inputSpeed="100.00" inputTorque="-350.00" torqueLoss="7.32" /> - <Entry inputSpeed="100.00" inputTorque="-150.00" torqueLoss="6.32" /> - <Entry inputSpeed="100.00" inputTorque="50.00" torqueLoss="5.82" /> - <Entry inputSpeed="100.00" inputTorque="250.00" torqueLoss="6.82" /> - <Entry inputSpeed="100.00" inputTorque="450.00" torqueLoss="7.82" /> - <Entry inputSpeed="100.00" inputTorque="650.00" torqueLoss="8.82" /> - <Entry inputSpeed="100.00" inputTorque="850.00" torqueLoss="9.82" /> - <Entry inputSpeed="100.00" inputTorque="1050.00" torqueLoss="10.82" /> - <Entry inputSpeed="100.00" inputTorque="1250.00" torqueLoss="11.82" /> - <Entry inputSpeed="100.00" inputTorque="1450.00" torqueLoss="12.82" /> - <Entry inputSpeed="100.00" inputTorque="1650.00" torqueLoss="13.82" /> - <Entry inputSpeed="100.00" inputTorque="1850.00" torqueLoss="14.82" /> - <Entry inputSpeed="100.00" inputTorque="2050.00" torqueLoss="15.82" /> - <Entry inputSpeed="100.00" inputTorque="2250.00" torqueLoss="16.82" /> - <Entry inputSpeed="100.00" inputTorque="2800.00" torqueLoss="17.82" /> - <Entry inputSpeed="300.00" inputTorque="-350.00" torqueLoss="8.33" /> - <Entry inputSpeed="300.00" inputTorque="-150.00" torqueLoss="7.33" /> - <Entry inputSpeed="300.00" inputTorque="50.00" torqueLoss="6.83" /> - <Entry inputSpeed="300.00" inputTorque="250.00" torqueLoss="7.83" /> - <Entry inputSpeed="300.00" inputTorque="450.00" torqueLoss="8.83" /> - <Entry inputSpeed="300.00" inputTorque="650.00" torqueLoss="9.83" /> - <Entry inputSpeed="300.00" inputTorque="850.00" torqueLoss="10.83" /> - <Entry inputSpeed="300.00" inputTorque="1050.00" torqueLoss="11.83" /> - <Entry inputSpeed="300.00" inputTorque="1250.00" torqueLoss="12.83" /> - <Entry inputSpeed="300.00" inputTorque="1450.00" torqueLoss="13.83" /> - <Entry inputSpeed="300.00" inputTorque="1650.00" torqueLoss="14.83" /> - <Entry inputSpeed="300.00" inputTorque="1850.00" torqueLoss="15.83" /> - <Entry inputSpeed="300.00" inputTorque="2050.00" torqueLoss="16.83" /> - <Entry inputSpeed="300.00" inputTorque="2250.00" torqueLoss="17.83" /> - <Entry inputSpeed="300.00" inputTorque="2800.00" torqueLoss="18.83" /> - <Entry inputSpeed="500.00" inputTorque="-350.00" torqueLoss="9.34" /> - <Entry inputSpeed="500.00" inputTorque="-150.00" torqueLoss="8.34" /> - <Entry inputSpeed="500.00" inputTorque="50.00" torqueLoss="7.84" /> - <Entry inputSpeed="500.00" inputTorque="250.00" torqueLoss="8.84" /> - <Entry inputSpeed="500.00" inputTorque="450.00" torqueLoss="9.84" /> - <Entry inputSpeed="500.00" inputTorque="650.00" torqueLoss="10.84" /> - <Entry inputSpeed="500.00" inputTorque="850.00" torqueLoss="11.84" /> - <Entry inputSpeed="500.00" inputTorque="1050.00" torqueLoss="12.84" /> - <Entry inputSpeed="500.00" inputTorque="1250.00" torqueLoss="13.84" /> - <Entry inputSpeed="500.00" inputTorque="1450.00" torqueLoss="14.84" /> - <Entry inputSpeed="500.00" inputTorque="1650.00" torqueLoss="15.84" /> - <Entry inputSpeed="500.00" inputTorque="1850.00" torqueLoss="16.84" /> - <Entry inputSpeed="500.00" inputTorque="2050.00" torqueLoss="17.84" /> - <Entry inputSpeed="500.00" inputTorque="2250.00" torqueLoss="18.84" /> - <Entry inputSpeed="500.00" inputTorque="2800.00" torqueLoss="19.84" /> - <Entry inputSpeed="700.00" inputTorque="-350.00" torqueLoss="10.35" /> - <Entry inputSpeed="700.00" inputTorque="-150.00" torqueLoss="9.35" /> - <Entry inputSpeed="700.00" inputTorque="50.00" torqueLoss="8.85" /> - <Entry inputSpeed="700.00" inputTorque="250.00" torqueLoss="9.85" /> - <Entry inputSpeed="700.00" inputTorque="450.00" torqueLoss="10.85" /> - <Entry inputSpeed="700.00" inputTorque="650.00" torqueLoss="11.85" /> - <Entry inputSpeed="700.00" inputTorque="850.00" torqueLoss="12.85" /> - <Entry inputSpeed="700.00" inputTorque="1050.00" torqueLoss="13.85" /> - <Entry inputSpeed="700.00" inputTorque="1250.00" torqueLoss="14.85" /> - <Entry inputSpeed="700.00" inputTorque="1450.00" torqueLoss="15.85" /> - <Entry inputSpeed="700.00" inputTorque="1650.00" torqueLoss="16.85" /> - <Entry inputSpeed="700.00" inputTorque="1850.00" torqueLoss="17.85" /> - <Entry inputSpeed="700.00" inputTorque="2050.00" torqueLoss="18.85" /> - <Entry inputSpeed="700.00" inputTorque="2250.00" torqueLoss="19.85" /> - <Entry inputSpeed="700.00" inputTorque="2800.00" torqueLoss="20.85" /> - <Entry inputSpeed="900.00" inputTorque="-350.00" torqueLoss="11.36" /> - <Entry inputSpeed="900.00" inputTorque="-150.00" torqueLoss="10.36" /> - <Entry inputSpeed="900.00" inputTorque="50.00" torqueLoss="9.86" /> - <Entry inputSpeed="900.00" inputTorque="250.00" torqueLoss="10.86" /> - <Entry inputSpeed="900.00" inputTorque="450.00" torqueLoss="11.86" /> - <Entry inputSpeed="900.00" inputTorque="650.00" torqueLoss="12.86" /> - <Entry inputSpeed="900.00" inputTorque="850.00" torqueLoss="13.86" /> - <Entry inputSpeed="900.00" inputTorque="1050.00" torqueLoss="14.86" /> - <Entry inputSpeed="900.00" inputTorque="1250.00" torqueLoss="15.86" /> - <Entry inputSpeed="900.00" inputTorque="1450.00" torqueLoss="16.86" /> - <Entry inputSpeed="900.00" inputTorque="1650.00" torqueLoss="17.86" /> - <Entry inputSpeed="900.00" inputTorque="1850.00" torqueLoss="18.86" /> - <Entry inputSpeed="900.00" inputTorque="2050.00" torqueLoss="19.86" /> - <Entry inputSpeed="900.00" inputTorque="2250.00" torqueLoss="20.86" /> - <Entry inputSpeed="900.00" inputTorque="2800.00" torqueLoss="21.86" /> - <Entry inputSpeed="1100.00" inputTorque="-350.00" torqueLoss="12.37" /> - <Entry inputSpeed="1100.00" inputTorque="-150.00" torqueLoss="11.37" /> - <Entry inputSpeed="1100.00" inputTorque="50.00" torqueLoss="10.88" /> - <Entry inputSpeed="1100.00" inputTorque="250.00" torqueLoss="11.88" /> - <Entry inputSpeed="1100.00" inputTorque="450.00" torqueLoss="12.88" /> - <Entry inputSpeed="1100.00" inputTorque="650.00" torqueLoss="13.88" /> - <Entry inputSpeed="1100.00" inputTorque="850.00" torqueLoss="14.88" /> - <Entry inputSpeed="1100.00" inputTorque="1050.00" torqueLoss="15.88" /> - <Entry inputSpeed="1100.00" inputTorque="1250.00" torqueLoss="16.88" /> - <Entry inputSpeed="1100.00" inputTorque="1450.00" torqueLoss="17.88" /> - <Entry inputSpeed="1100.00" inputTorque="1650.00" torqueLoss="18.88" /> - <Entry inputSpeed="1100.00" inputTorque="1850.00" torqueLoss="19.88" /> - <Entry inputSpeed="1100.00" inputTorque="2050.00" torqueLoss="20.88" /> - <Entry inputSpeed="1100.00" inputTorque="2250.00" torqueLoss="21.88" /> - <Entry inputSpeed="1100.00" inputTorque="2800.00" torqueLoss="22.88" /> - <Entry inputSpeed="1300.00" inputTorque="-350.00" torqueLoss="13.39" /> - <Entry inputSpeed="1300.00" inputTorque="-150.00" torqueLoss="12.39" /> - <Entry inputSpeed="1300.00" inputTorque="50.00" torqueLoss="11.89" /> - <Entry inputSpeed="1300.00" inputTorque="250.00" torqueLoss="12.89" /> - <Entry inputSpeed="1300.00" inputTorque="450.00" torqueLoss="13.89" /> - <Entry inputSpeed="1300.00" inputTorque="650.00" torqueLoss="14.89" /> - <Entry inputSpeed="1300.00" inputTorque="850.00" torqueLoss="15.89" /> - <Entry inputSpeed="1300.00" inputTorque="1050.00" torqueLoss="16.89" /> - <Entry inputSpeed="1300.00" inputTorque="1250.00" torqueLoss="17.89" /> - <Entry inputSpeed="1300.00" inputTorque="1450.00" torqueLoss="18.89" /> - <Entry inputSpeed="1300.00" inputTorque="1650.00" torqueLoss="19.89" /> - <Entry inputSpeed="1300.00" inputTorque="1850.00" torqueLoss="20.89" /> - <Entry inputSpeed="1300.00" inputTorque="2050.00" torqueLoss="21.89" /> - <Entry inputSpeed="1300.00" inputTorque="2250.00" torqueLoss="22.89" /> - <Entry inputSpeed="1300.00" inputTorque="2800.00" torqueLoss="23.89" /> - <Entry inputSpeed="1500.00" inputTorque="-350.00" torqueLoss="14.40" /> - <Entry inputSpeed="1500.00" inputTorque="-150.00" torqueLoss="13.40" /> - <Entry inputSpeed="1500.00" inputTorque="50.00" torqueLoss="12.90" /> - <Entry inputSpeed="1500.00" inputTorque="250.00" torqueLoss="13.90" /> - <Entry inputSpeed="1500.00" inputTorque="450.00" torqueLoss="14.90" /> - <Entry inputSpeed="1500.00" inputTorque="650.00" torqueLoss="15.90" /> - <Entry inputSpeed="1500.00" inputTorque="850.00" torqueLoss="16.90" /> - <Entry inputSpeed="1500.00" inputTorque="1050.00" torqueLoss="17.90" /> - <Entry inputSpeed="1500.00" inputTorque="1250.00" torqueLoss="18.90" /> - <Entry inputSpeed="1500.00" inputTorque="1450.00" torqueLoss="19.90" /> - <Entry inputSpeed="1500.00" inputTorque="1650.00" torqueLoss="20.90" /> - <Entry inputSpeed="1500.00" inputTorque="1850.00" torqueLoss="21.90" /> - <Entry inputSpeed="1500.00" inputTorque="2050.00" torqueLoss="22.90" /> - <Entry inputSpeed="1500.00" inputTorque="2250.00" torqueLoss="23.90" /> - <Entry inputSpeed="1500.00" inputTorque="2800.00" torqueLoss="24.90" /> - <Entry inputSpeed="1700.00" inputTorque="-350.00" torqueLoss="15.41" /> - <Entry inputSpeed="1700.00" inputTorque="-150.00" torqueLoss="14.41" /> - <Entry inputSpeed="1700.00" inputTorque="50.00" torqueLoss="13.91" /> - <Entry inputSpeed="1700.00" inputTorque="250.00" torqueLoss="14.91" /> - <Entry inputSpeed="1700.00" inputTorque="450.00" torqueLoss="15.91" /> - <Entry inputSpeed="1700.00" inputTorque="650.00" torqueLoss="16.91" /> - <Entry inputSpeed="1700.00" inputTorque="850.00" torqueLoss="17.91" /> - <Entry inputSpeed="1700.00" inputTorque="1050.00" torqueLoss="18.91" /> - <Entry inputSpeed="1700.00" inputTorque="1250.00" torqueLoss="19.91" /> - <Entry inputSpeed="1700.00" inputTorque="1450.00" torqueLoss="20.91" /> - <Entry inputSpeed="1700.00" inputTorque="1650.00" torqueLoss="21.91" /> - <Entry inputSpeed="1700.00" inputTorque="1850.00" torqueLoss="22.91" /> - <Entry inputSpeed="1700.00" inputTorque="2050.00" torqueLoss="23.91" /> - <Entry inputSpeed="1700.00" inputTorque="2250.00" torqueLoss="24.91" /> - <Entry inputSpeed="1700.00" inputTorque="2800.00" torqueLoss="25.91" /> - <Entry inputSpeed="1900.00" inputTorque="-350.00" torqueLoss="16.42" /> - <Entry inputSpeed="1900.00" inputTorque="-150.00" torqueLoss="15.42" /> - <Entry inputSpeed="1900.00" inputTorque="50.00" torqueLoss="14.92" /> - <Entry inputSpeed="1900.00" inputTorque="250.00" torqueLoss="15.92" /> - <Entry inputSpeed="1900.00" inputTorque="450.00" torqueLoss="16.92" /> - <Entry inputSpeed="1900.00" inputTorque="650.00" torqueLoss="17.92" /> - <Entry inputSpeed="1900.00" inputTorque="850.00" torqueLoss="18.92" /> - <Entry inputSpeed="1900.00" inputTorque="1050.00" torqueLoss="19.92" /> - <Entry inputSpeed="1900.00" inputTorque="1250.00" torqueLoss="20.92" /> - <Entry inputSpeed="1900.00" inputTorque="1450.00" torqueLoss="21.92" /> - <Entry inputSpeed="1900.00" inputTorque="1650.00" torqueLoss="22.92" /> - <Entry inputSpeed="1900.00" inputTorque="1850.00" torqueLoss="23.92" /> - <Entry inputSpeed="1900.00" inputTorque="2050.00" torqueLoss="24.92" /> - <Entry inputSpeed="1900.00" inputTorque="2250.00" torqueLoss="25.92" /> - <Entry inputSpeed="1900.00" inputTorque="2800.00" torqueLoss="26.92" /> - <Entry inputSpeed="2100.00" inputTorque="-350.00" torqueLoss="17.43" /> - <Entry inputSpeed="2100.00" inputTorque="-150.00" torqueLoss="16.43" /> - <Entry inputSpeed="2100.00" inputTorque="50.00" torqueLoss="15.94" /> - <Entry inputSpeed="2100.00" inputTorque="250.00" torqueLoss="16.94" /> - <Entry inputSpeed="2100.00" inputTorque="450.00" torqueLoss="17.94" /> - <Entry inputSpeed="2100.00" inputTorque="650.00" torqueLoss="18.94" /> - <Entry inputSpeed="2100.00" inputTorque="850.00" torqueLoss="19.94" /> - <Entry inputSpeed="2100.00" inputTorque="1050.00" torqueLoss="20.94" /> - <Entry inputSpeed="2100.00" inputTorque="1250.00" torqueLoss="21.94" /> - <Entry inputSpeed="2100.00" inputTorque="1450.00" torqueLoss="22.94" /> - <Entry inputSpeed="2100.00" inputTorque="1650.00" torqueLoss="23.94" /> - <Entry inputSpeed="2100.00" inputTorque="1850.00" torqueLoss="24.94" /> - <Entry inputSpeed="2100.00" inputTorque="2050.00" torqueLoss="25.94" /> - <Entry inputSpeed="2100.00" inputTorque="2250.00" torqueLoss="26.94" /> - <Entry inputSpeed="2100.00" inputTorque="2800.00" torqueLoss="27.94" /> - <Entry inputSpeed="0.00" inputTorque="-1000.00" torqueLoss="10.06" /> - <Entry inputSpeed="100.00" inputTorque="-1000.00" torqueLoss="10.56" /> - <Entry inputSpeed="300.00" inputTorque="-1000.00" torqueLoss="11.58" /> - <Entry inputSpeed="500.00" inputTorque="-1000.00" torqueLoss="12.59" /> - <Entry inputSpeed="700.00" inputTorque="-1000.00" torqueLoss="13.60" /> - <Entry inputSpeed="900.00" inputTorque="-1000.00" torqueLoss="14.61" /> - <Entry inputSpeed="1100.00" inputTorque="-1000.00" torqueLoss="15.63" /> - <Entry inputSpeed="1300.00" inputTorque="-1000.00" torqueLoss="16.64" /> - <Entry inputSpeed="1500.00" inputTorque="-1000.00" torqueLoss="17.65" /> - <Entry inputSpeed="1700.00" inputTorque="-1000.00" torqueLoss="18.66" /> - <Entry inputSpeed="1900.00" inputTorque="-1000.00" torqueLoss="19.67" /> - <Entry inputSpeed="2100.00" inputTorque="-1000.00" torqueLoss="20.69" /> - </TorqueLossMap> - </Gear> - </v2.5:Gears> - </v2.0:Data> - <Signature> - <di:Reference URI="#ENG-gooZah3D"> - <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>JWEwzKSP0lXvwRgQZTiWJm9dpdtQ72FOX0CC5Vy6f2Y=</di:DigestValue> - </di:Reference> - </Signature> - </tns:Gearbox> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorryFWD-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorryFWD-sample.xml deleted file mode 100644 index 500c9b3a21ddf7b2d143fbbfd26c988b8c9242f8..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-medium_lorryFWD-sample.xml +++ /dev/null @@ -1,553 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.2="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v1.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd -urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.1.xsd urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6 E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCore\Resources\XSD/VectoDeclarationDefinitions.2.6_Buses.xsd"> - <v2.0:Vehicle id="VEH-class5_Class-5_5t0" xsi:type="VehicleMediumLorryDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <ManufacturerAddress>N.A.</ManufacturerAddress> - <Model>class 5_Class-5_5t0</Model> - <VIN>standard values</VIN> - <Date>2017-09-26T15:33:45.0798047Z</Date> - <LegislativeClass>N3</LegislativeClass> - <VehicleCategory>Van</VehicleCategory> - <AxleConfiguration>4x2F</AxleConfiguration> - <CurbMassChassis>8229</CurbMassChassis> - <TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass> - <IdlingSpeed>100</IdlingSpeed> - <RetarderType>Transmission Output Retarder</RetarderType> - <RetarderRatio>1.000</RetarderRatio> - <AngledriveType>None</AngledriveType> - <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <v2.6:ADAS xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="v2.1:AdvancedDriverAssistantSystemsType"> - <EngineStopStart>false</EngineStopStart> - <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> - <EcoRollWithEngineStop>false</EcoRollWithEngineStop> - <PredictiveCruiseControl>none</PredictiveCruiseControl> - </v2.6:ADAS> - <Components xsi:type="VehicleComponentsNoAxlegearType"> - <Engine> - <v2.0:Data id="ENG-350kW_IVT_12l" xsi:type="v1.0:EngineDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>350kW_IVT_12l</Model> - <CertificationNumber>ENG-350kW_IVT_12l</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <Displacement>12700</Displacement> - <IdlingSpeed>600</IdlingSpeed> - <RatedSpeed>1736</RatedSpeed> - <RatedPower>325032</RatedPower> - <MaxEngineTorque>2134</MaxEngineTorque> - <WHTCUrban>1.0400</WHTCUrban> - <WHTCRural>1.0100</WHTCRural> - <WHTCMotorway>1.0000</WHTCMotorway> - <BFColdHot>1.0000</BFColdHot> - <CFRegPer>1.0000</CFRegPer> - <CFNCV>1.0000</CFNCV> - <FuelType>Diesel CI</FuelType> - <FuelConsumptionMap> - <Entry engineSpeed="600.00" torque="-150.00" fuelConsumption="0.00"/> - <Entry engineSpeed="600.00" torque="0.00" fuelConsumption="1459.00"/> - <Entry engineSpeed="600.00" torque="216.90" fuelConsumption="3538.75"/> - <Entry engineSpeed="600.00" torque="433.80" fuelConsumption="5936.91"/> - <Entry engineSpeed="600.00" torque="650.70" fuelConsumption="8584.95"/> - <Entry engineSpeed="600.00" torque="867.60" fuelConsumption="10708.27"/> - <Entry engineSpeed="600.00" torque="1084.50" fuelConsumption="13054.00"/> - <Entry engineSpeed="600.00" torque="1301.40" fuelConsumption="15575.45"/> - <Entry engineSpeed="600.00" torque="1518.30" fuelConsumption="18097.57"/> - <Entry engineSpeed="600.00" torque="1735.20" fuelConsumption="20619.68"/> - <Entry engineSpeed="600.00" torque="1952.10" fuelConsumption="23141.80"/> - <Entry engineSpeed="600.00" torque="2169.00" fuelConsumption="25663.92"/> - <Entry engineSpeed="748.90" torque="-153.25" fuelConsumption="0.00"/> - <Entry engineSpeed="748.90" torque="0.00" fuelConsumption="1771.69"/> - <Entry engineSpeed="748.90" torque="216.90" fuelConsumption="4287.77"/> - <Entry engineSpeed="748.90" torque="433.80" fuelConsumption="7329.06"/> - <Entry engineSpeed="748.90" torque="650.70" fuelConsumption="10252.92"/> - <Entry engineSpeed="748.90" torque="867.60" fuelConsumption="13214.55"/> - <Entry engineSpeed="748.90" torque="1084.50" fuelConsumption="16271.09"/> - <Entry engineSpeed="748.90" torque="1301.40" fuelConsumption="19504.44"/> - <Entry engineSpeed="748.90" torque="1518.30" fuelConsumption="22715.90"/> - <Entry engineSpeed="748.90" torque="1735.20" fuelConsumption="26067.02"/> - <Entry engineSpeed="748.90" torque="1952.10" fuelConsumption="29381.05"/> - <Entry engineSpeed="748.90" torque="2169.00" fuelConsumption="32699.96"/> - <Entry engineSpeed="897.80" torque="-159.33" fuelConsumption="0.00"/> - <Entry engineSpeed="897.80" torque="0.00" fuelConsumption="2361.15"/> - <Entry engineSpeed="897.80" torque="216.90" fuelConsumption="5371.49"/> - <Entry engineSpeed="897.80" torque="433.80" fuelConsumption="8747.43"/> - <Entry engineSpeed="897.80" torque="650.70" fuelConsumption="12019.87"/> - <Entry engineSpeed="897.80" torque="867.60" fuelConsumption="15642.49"/> - <Entry engineSpeed="897.80" torque="1084.50" fuelConsumption="19348.62"/> - <Entry engineSpeed="897.80" torque="1301.40" fuelConsumption="23071.10"/> - <Entry engineSpeed="897.80" torque="1518.30" fuelConsumption="26864.31"/> - <Entry engineSpeed="897.80" torque="1735.20" fuelConsumption="30815.18"/> - <Entry engineSpeed="897.80" torque="1952.10" fuelConsumption="34854.40"/> - <Entry engineSpeed="897.80" torque="2169.00" fuelConsumption="39155.09"/> - <Entry engineSpeed="1046.70" torque="-167.79" fuelConsumption="0.00"/> - <Entry engineSpeed="1046.70" torque="0.00" fuelConsumption="2968.21"/> - <Entry engineSpeed="1046.70" torque="216.90" fuelConsumption="6463.69"/> - <Entry engineSpeed="1046.70" torque="433.80" fuelConsumption="10102.67"/> - <Entry engineSpeed="1046.70" torque="650.70" fuelConsumption="13853.76"/> - <Entry engineSpeed="1046.70" torque="867.60" fuelConsumption="18068.71"/> - <Entry engineSpeed="1046.70" torque="1084.50" fuelConsumption="22383.70"/> - <Entry engineSpeed="1046.70" torque="1301.40" fuelConsumption="26543.40"/> - <Entry engineSpeed="1046.70" torque="1518.30" fuelConsumption="30847.65"/> - <Entry engineSpeed="1046.70" torque="1735.20" fuelConsumption="35304.67"/> - <Entry engineSpeed="1046.70" torque="1952.10" fuelConsumption="40046.29"/> - <Entry engineSpeed="1046.70" torque="2169.00" fuelConsumption="45162.72"/> - <Entry engineSpeed="1195.57" torque="-178.58" fuelConsumption="0.00"/> - <Entry engineSpeed="1195.57" torque="0.00" fuelConsumption="3297.21"/> - <Entry engineSpeed="1195.57" torque="216.90" fuelConsumption="7191.55"/> - <Entry engineSpeed="1195.57" torque="433.80" fuelConsumption="11289.50"/> - <Entry engineSpeed="1195.57" torque="650.70" fuelConsumption="15720.59"/> - <Entry engineSpeed="1195.57" torque="867.60" fuelConsumption="20580.22"/> - <Entry engineSpeed="1195.57" torque="1084.50" fuelConsumption="25484.81"/> - <Entry engineSpeed="1195.57" torque="1301.40" fuelConsumption="30222.77"/> - <Entry engineSpeed="1195.57" torque="1518.30" fuelConsumption="35006.22"/> - <Entry engineSpeed="1195.57" torque="1735.20" fuelConsumption="40026.60"/> - <Entry engineSpeed="1195.57" torque="1952.10" fuelConsumption="45496.89"/> - <Entry engineSpeed="1195.57" torque="2169.00" fuelConsumption="50854.10"/> - <Entry engineSpeed="1359.19" torque="-197.42" fuelConsumption="0.00"/> - <Entry engineSpeed="1359.19" torque="0.00" fuelConsumption="4102.15"/> - <Entry engineSpeed="1359.19" torque="216.90" fuelConsumption="8260.52"/> - <Entry engineSpeed="1359.19" torque="433.80" fuelConsumption="13082.44"/> - <Entry engineSpeed="1359.19" torque="650.70" fuelConsumption="18126.41"/> - <Entry engineSpeed="1359.19" torque="867.60" fuelConsumption="23245.61"/> - <Entry engineSpeed="1359.19" torque="1084.50" fuelConsumption="28611.71"/> - <Entry engineSpeed="1359.19" torque="1301.40" fuelConsumption="34186.01"/> - <Entry engineSpeed="1359.19" torque="1518.30" fuelConsumption="39773.96"/> - <Entry engineSpeed="1359.19" torque="1735.20" fuelConsumption="45940.37"/> - <Entry engineSpeed="1359.19" torque="1952.10" fuelConsumption="52485.97"/> - <Entry engineSpeed="1359.19" torque="2169.00" fuelConsumption="58360.23"/> - <Entry engineSpeed="1484.00" torque="-216.03" fuelConsumption="0.00"/> - <Entry engineSpeed="1484.00" torque="0.00" fuelConsumption="4684.84"/> - <Entry engineSpeed="1484.00" torque="216.90" fuelConsumption="9190.80"/> - <Entry engineSpeed="1484.00" torque="433.80" fuelConsumption="14455.69"/> - <Entry engineSpeed="1484.00" torque="650.70" fuelConsumption="19929.18"/> - <Entry engineSpeed="1484.00" torque="867.60" fuelConsumption="25556.30"/> - <Entry engineSpeed="1484.00" torque="1084.50" fuelConsumption="31326.33"/> - <Entry engineSpeed="1484.00" torque="1301.40" fuelConsumption="37363.82"/> - <Entry engineSpeed="1484.00" torque="1518.30" fuelConsumption="43571.91"/> - <Entry engineSpeed="1484.00" torque="1735.20" fuelConsumption="50460.82"/> - <Entry engineSpeed="1484.00" torque="1952.10" fuelConsumption="57604.52"/> - <Entry engineSpeed="1484.00" torque="2169.00" fuelConsumption="64181.14"/> - <Entry engineSpeed="1608.90" torque="-236.34" fuelConsumption="0.00"/> - <Entry engineSpeed="1608.90" torque="0.00" fuelConsumption="5261.40"/> - <Entry engineSpeed="1608.90" torque="216.90" fuelConsumption="10199.91"/> - <Entry engineSpeed="1608.90" torque="433.80" fuelConsumption="15846.19"/> - <Entry engineSpeed="1608.90" torque="650.70" fuelConsumption="21747.18"/> - <Entry engineSpeed="1608.90" torque="867.60" fuelConsumption="28037.21"/> - <Entry engineSpeed="1608.90" torque="1084.50" fuelConsumption="34232.36"/> - <Entry engineSpeed="1608.90" torque="1301.40" fuelConsumption="40669.25"/> - <Entry engineSpeed="1608.90" torque="1518.30" fuelConsumption="47498.48"/> - <Entry engineSpeed="1608.90" torque="1735.20" fuelConsumption="55015.01"/> - <Entry engineSpeed="1608.90" torque="1952.10" fuelConsumption="62654.92"/> - <Entry engineSpeed="1608.90" torque="2169.00" fuelConsumption="70071.75"/> - <Entry engineSpeed="1733.80" torque="-253.92" fuelConsumption="0.00"/> - <Entry engineSpeed="1733.80" torque="0.00" fuelConsumption="6010.80"/> - <Entry engineSpeed="1733.80" torque="216.90" fuelConsumption="11536.09"/> - <Entry engineSpeed="1733.80" torque="433.80" fuelConsumption="17479.05"/> - <Entry engineSpeed="1733.80" torque="650.70" fuelConsumption="23999.56"/> - <Entry engineSpeed="1733.80" torque="867.60" fuelConsumption="30943.62"/> - <Entry engineSpeed="1733.80" torque="1084.50" fuelConsumption="37482.51"/> - <Entry engineSpeed="1733.80" torque="1301.40" fuelConsumption="44617.51"/> - <Entry engineSpeed="1733.80" torque="1518.30" fuelConsumption="52071.25"/> - <Entry engineSpeed="1733.80" torque="1735.20" fuelConsumption="60004.29"/> - <Entry engineSpeed="1733.80" torque="1952.10" fuelConsumption="68251.45"/> - <Entry engineSpeed="1733.80" torque="2169.00" fuelConsumption="76381.09"/> - <Entry engineSpeed="1858.61" torque="-274.22" fuelConsumption="0.00"/> - <Entry engineSpeed="1858.61" torque="0.00" fuelConsumption="7204.51"/> - <Entry engineSpeed="1858.61" torque="216.90" fuelConsumption="13143.55"/> - <Entry engineSpeed="1858.61" torque="433.80" fuelConsumption="19338.96"/> - <Entry engineSpeed="1858.61" torque="650.70" fuelConsumption="26272.46"/> - <Entry engineSpeed="1858.61" torque="867.60" fuelConsumption="33838.94"/> - <Entry engineSpeed="1858.61" torque="1084.50" fuelConsumption="41281.10"/> - <Entry engineSpeed="1858.61" torque="1301.40" fuelConsumption="49065.71"/> - <Entry engineSpeed="1858.61" torque="1518.30" fuelConsumption="57066.15"/> - <Entry engineSpeed="1858.61" torque="1735.20" fuelConsumption="65324.35"/> - <Entry engineSpeed="1858.61" torque="1952.10" fuelConsumption="73876.10"/> - <Entry engineSpeed="1858.61" torque="2169.00" fuelConsumption="82384.30"/> - </FuelConsumptionMap> - <FullLoadAndDragCurve> - <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> - <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> - <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> - <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> - <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> - <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> - <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> - <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> - <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> - <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> - </FullLoadAndDragCurve> - </v2.0:Data> - <v2.0:Signature> - <Reference URI="#ENG-350kW_IVT_12l" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </v2.0:Signature> - </Engine> - <v2.6:Gearbox> - <v2.0:Data id="GBX-GB_12-gear" xsi:type="v2.6:GearboxDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>GB_12-gear</Model> - <CertificationNumber>GBX-GB_12-gear</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <TransmissionType>AMT</TransmissionType> - <MainCertificationMethod>Standard values</MainCertificationMethod> - <DifferentialIncluded>true</DifferentialIncluded> - <AxlegearRatio>2.600</AxlegearRatio> - <v2.6:Gears xsi:type="v2.0:GearsDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Gear number="1"> - <Ratio>14.930</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="2"> - <Ratio>11.640</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="3"> - <Ratio>9.020</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="4"> - <Ratio>7.040</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="5"> - <Ratio>5.640</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="6"> - <Ratio>4.400</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="7"> - <Ratio>3.390</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="8"> - <Ratio>2.650</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="9"> - <Ratio>2.050</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="10"> - <Ratio>1.600</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="11"> - <Ratio>1.280</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="0.00" inputTorque="-125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="125.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="2000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="780.00" torqueLoss="31.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="2000.00"/> - </TorqueLossMap> - </Gear> - <Gear number="12"> - <Ratio>1.000</Ratio> - <TorqueLossMap> - <Entry inputSpeed="0.00" inputTorque="-50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="0.00" inputTorque="-250.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="0.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="250.00" torqueLoss="5.00"/> - <Entry inputSpeed="0.00" inputTorque="50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-50000.00" torqueLoss="1000.00"/> - <Entry inputSpeed="5000.00" inputTorque="-845.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="0.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="845.00" torqueLoss="17.00"/> - <Entry inputSpeed="5000.00" inputTorque="50000.00" torqueLoss="1000.00"/> - </TorqueLossMap> - </Gear> - </v2.6:Gears> - </v2.0:Data> - <v2.0:Signature> - <Reference URI="#GBX-GB_12-gear" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </v2.0:Signature> - </v2.6:Gearbox> - <v2.6:Retarder xsi:type="v2.0:RetarderComponentDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <Data id="RET-RET-generic" xsi:type="RetarderDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>RET-generic</Model> - <CertificationNumber>standard values</CertificationNumber> - <Date>2017-09-26T15:33:45.0954248Z</Date> - <AppVersion>VectoCore</AppVersion> - <CertificationMethod>Standard values</CertificationMethod> - <RetarderLossMap> - <Entry retarderSpeed="0.00" torqueLoss="10.00"/> - <Entry retarderSpeed="100.00" torqueLoss="10.00"/> - <Entry retarderSpeed="200.00" torqueLoss="10.10"/> - <Entry retarderSpeed="300.00" torqueLoss="10.20"/> - <Entry retarderSpeed="400.00" torqueLoss="10.30"/> - <Entry retarderSpeed="500.00" torqueLoss="10.50"/> - <Entry retarderSpeed="600.00" torqueLoss="10.70"/> - <Entry retarderSpeed="700.00" torqueLoss="11.00"/> - <Entry retarderSpeed="800.00" torqueLoss="11.30"/> - <Entry retarderSpeed="900.00" torqueLoss="11.60"/> - <Entry retarderSpeed="1000.00" torqueLoss="12.00"/> - <Entry retarderSpeed="1100.00" torqueLoss="12.40"/> - <Entry retarderSpeed="1200.00" torqueLoss="12.90"/> - <Entry retarderSpeed="1300.00" torqueLoss="13.40"/> - <Entry retarderSpeed="1400.00" torqueLoss="13.90"/> - <Entry retarderSpeed="1500.00" torqueLoss="14.50"/> - <Entry retarderSpeed="1600.00" torqueLoss="15.10"/> - <Entry retarderSpeed="1700.00" torqueLoss="15.80"/> - <Entry retarderSpeed="1800.00" torqueLoss="16.50"/> - <Entry retarderSpeed="1900.00" torqueLoss="17.20"/> - <Entry retarderSpeed="2000.00" torqueLoss="18.00"/> - <Entry retarderSpeed="2100.00" torqueLoss="18.80"/> - <Entry retarderSpeed="2200.00" torqueLoss="19.70"/> - <Entry retarderSpeed="2300.00" torqueLoss="20.60"/> - <Entry retarderSpeed="2400.00" torqueLoss="21.50"/> - <Entry retarderSpeed="2500.00" torqueLoss="22.50"/> - <Entry retarderSpeed="2600.00" torqueLoss="23.50"/> - <Entry retarderSpeed="2700.00" torqueLoss="24.60"/> - <Entry retarderSpeed="2800.00" torqueLoss="25.70"/> - <Entry retarderSpeed="2900.00" torqueLoss="26.80"/> - <Entry retarderSpeed="3000.00" torqueLoss="28.00"/> - </RetarderLossMap> - </Data> - <Signature> - <Reference URI="#RET-RET-generic" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </v2.6:Retarder> - <v2.6:AxleWheels xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> - <Data xsi:type="AxleWheelsDataDeclarationType"> - <Axles> - <Axle axleNumber="1" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleNonDriven</AxleType> - <TwinTyres>false</TwinTyres> - <Steered>true</Steered> - <Tyre> - <Data id="TYRE-315_70R225" xsi:type="TyreDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>315/70 R22.5</Dimension> - <RRCDeclared>0.0052</RRCDeclared> - <FzISO>33350</FzISO> - </Data> - <Signature> - <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </Tyre> - </Axle> - <Axle axleNumber="2" xsi:type="AxleDataDeclarationType"> - <AxleType>VehicleDriven</AxleType> - <TwinTyres>true</TwinTyres> - <Steered>false</Steered> - <Tyre> - <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.2:TyreDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.2"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>315/70 R22.5</Model> - <CertificationNumber>TYRE-315/70 R22.5</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <Dimension>235/60 R17C</Dimension> - <RRCDeclared>0.0061</RRCDeclared> - <FzISO>33350</FzISO> - </v2.0:Data> - <Signature> - <Reference URI="#TYRE-315_70R225" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </Tyre> - </Axle> - </Axles> - </Data> - </v2.6:AxleWheels> - <v2.6:Auxiliaries xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AuxiliariesComponentDeclarationType"> - <Data xsi:type="AuxiliariesDataDeclarationType"> - <Fan> - <Technology>Belt driven or driven via transm. - Electronically controlled visco clutch</Technology> - </Fan> - <SteeringPump> - <Technology>Fixed displacement with elec. control</Technology> - </SteeringPump> - <ElectricSystem> - <Technology>Standard technology</Technology> - </ElectricSystem> - <PneumaticSystem> - <Technology>Medium Supply 1-stage + ESS + AMS</Technology> - </PneumaticSystem> - <HVAC> - <Technology>Default</Technology> - </HVAC> - </Data> - </v2.6:Auxiliaries> - <v2.6:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AirDragComponentDeclarationType"> - <Data id="Airdrag-genericcabin" xsi:type="AirDragDataDeclarationType"> - <Manufacturer>Generic Vendor</Manufacturer> - <Model>N.A.</Model> - <CertificationNumber>generic cabin</CertificationNumber> - <Date>2017-09-26T15:33:45.1110278Z</Date> - <AppVersion>VectoCore</AppVersion> - <CdxA_0>5.57</CdxA_0> - <TransferredCdxA>5.57</TransferredCdxA> - <DeclaredCdxA>5.57</DeclaredCdxA> - </Data> - <Signature> - <Reference URI="#Airdrag-genericcabin" xmlns="http://www.w3.org/2000/09/xmldsig#"> - <Transforms> - <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithoutComments"/> - <Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> - </Transforms> - <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> - <DigestValue/> - </Reference> - </Signature> - </v2.6:AirDrag> - </Components> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml deleted file mode 100644 index 33194bccad2511a878f79d682f1605f4bd1f7dff..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml +++ /dev/null @@ -1 +0,0 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> <Manufacturer>Some Manufacturer 1</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>7000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> <BodyworkCode>CC</BodyworkCode> <LowEntry>false</LowEntry> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_mandatory_entries.xml deleted file mode 100644 index c50959a82842f6e9e89e2aaf10e7288f5ac989db..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-exempted_input_only_mandatory_entries.xml +++ /dev/null @@ -1 +0,0 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries01-sample.xml deleted file mode 100644 index 39c10eb8662376c5f7480fbb5e9d09c46e70eee2..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries01-sample.xml +++ /dev/null @@ -1 +0,0 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 1</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> <Model>Sample Bus Model 2</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>5000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> <AirdragModifiedMultistage>false</AirdragModifiedMultistage> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>A</ClassBus> <BodyworkCode>CG</BodyworkCode> <LowEntry>true</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>10000</VehicleLength> <VehicleWidth>2600</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <Auxiliaries> <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> <Dayrunninglights>true</Dayrunninglights> <Headlights>false</Headlights> </LEDLights> </ElectricSystem> <HVAC> <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> <DoubleGlazing>false</DoubleGlazing> <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> <WaterElectricHeater>true</WaterElectricHeater> <OtherHeatingTechnology>false</OtherHeatingTechnology> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries02-sample.xml deleted file mode 100644 index 7b07d4349e98ddacc63b07ce8429bd47a88cc3e0..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_certain_entries02-sample.xml +++ /dev/null @@ -1 +0,0 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 2</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <Model>Sample Bus Model</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>II+III</ClassBus> <NumberPassengerSeatsLowerDeck>5</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>15</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> <NumberPassengersStandingUpperDeck>6</NumberPassengersStandingUpperDeck> <BodyworkCode>CB</BodyworkCode> <LowEntry>false</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>9500</VehicleLength> <VehicleWidth>2500</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <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>6.31</v2.0:CdxA_0> <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> </v2.0: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"> <HVAC> <SystemConfiguration>0</SystemConfiguration> <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> <HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment> <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_component_nullable_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_component_nullable_entries.xml deleted file mode 100644 index 748413a19a57bb637e4d58bb0efce563385932bf..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_component_nullable_entries.xml +++ /dev/null @@ -1 +0,0 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 4</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 4</ManufacturerAddress> <VIN>VEH-1234567894</VIN> <Date>2022-01-09T11:00:00Z</Date> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <Auxiliaries> <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> <ElectricSystem> <LEDLights> </LEDLights> </ElectricSystem> <HVAC> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_entries.xml deleted file mode 100644 index 1cff68c80913319b26652b815e25c1eee43d42eb..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_input_only_mandatory_entries.xml +++ /dev/null @@ -1 +0,0 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <VehicleDeclarationType>final</VehicleDeclarationType> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_vif_input.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_vif_input.xml deleted file mode 100644 index d1e5b1621b2b0ae9ffff017987dd8513b6d57bfd..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion2.8/vecto_vehicle-stage_vif_input.xml +++ /dev/null @@ -1 +0,0 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle xsi:type="InterimStageInputType" id="MSTG-3-Vehicle"> <Manufacturer>Intermediate Manufacturer 3</Manufacturer> <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-2234567866</VIN> <Date>2021-02-13T07:20:08.0187663Z</Date> <LegislativeCategory>M3</LegislativeCategory> <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> <NgTankSystem>Liquefied</NgTankSystem> <ClassBus>B</ClassBus> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <Auxiliaries> <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> <ElectricSystem> <LEDLights> <Positionlights>false</Positionlights> <Brakelights>false</Brakelights> <Headlights>true</Headlights> </LEDLights> </ElectricSystem> <HVAC> <WaterElectricHeater>false</WaterElectricHeater> <AirElectricHeater>false</AirElectricHeater> <OtherHeatingTechnology>true</OtherHeatingTechnology> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/123sadf.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/123sadf.xml deleted file mode 100644 index b5ec06780cea3c086d372969fa2bc397889c25c5..0000000000000000000000000000000000000000 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/123sadf.xml +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:schemaVersion="2.8" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> - <v2.0:Vehicle id="TODO:ADDIDENTIFIER" xsi:type="InterimstageInputType"> - <Date>27.04.2021</Date> - <DeclarationType>interim</DeclarationType> - </v2.0:Vehicle> -</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AidragComponent.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AidragComponent.xml index 9bc44b124397a660b40ff7ce3bd6f3fad43a4819..273455ce72b39d75af9bde98ae07b8399a4eac4f 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AidragComponent.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AidragComponent.xml @@ -1,22 +1,22 @@ <?xml version="1.0" encoding="UTF-8"?> <!--Sample XML file generated by XMLSpy v2016 rel. 2 sp1 (x64) (http://www.altova.com)--> -<v2.0:VectoInputDeclaration 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:DeclarationComponent:v2.0" xmlns:vdecdef2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" schemaVersion="1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0 VectoComponent.2.0.xsd"> - <v2.0:AirDrag> - <vdecdef2.0:Data xsi:type="vdecdef2.0:AirDragDataDeclarationType" id="a"> - <vdecdef2.0:Manufacturer>a</vdecdef2.0:Manufacturer> - <vdecdef2.0:Model>a</vdecdef2.0:Model> - <vdecdef2.0:CertificationNumber>token</vdecdef2.0:CertificationNumber> - <vdecdef2.0:Date>2017-01-01T00:00:00Z</vdecdef2.0:Date> - <vdecdef2.0:AppVersion>aaaaa</vdecdef2.0:AppVersion> - <vdecdef2.0:CdxA_0>6.66</vdecdef2.0:CdxA_0> - <vdecdef2.0:TransferredCdxA>6.66</vdecdef2.0:TransferredCdxA> - <vdecdef2.0:DeclaredCdxA>6.66</vdecdef2.0:DeclaredCdxA> - </vdecdef2.0:Data> - <vdecdef2.0:Signature> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> + <tns:AirDrag> + <Data xsi:type="AirDragDataDeclarationType" id="a"> + <Manufacturer>a</Manufacturer> + <Model>a</Model> + <CertificationNumber>token</CertificationNumber> + <Date>2017-01-01T00:00:00Z</Date> + <AppVersion>aaaaa</AppVersion> + <CdxA_0>6.66</CdxA_0> + <TransferredCdxA>6.66</TransferredCdxA> + <DeclaredCdxA>6.66</DeclaredCdxA> + </Data> + <Signature> <di:Reference> <di:DigestMethod Algorithm="http://www.altova.com/"/> <di:DigestValue>UjBsR09EbGhjZ0dTQUxNQUFBUUNBRU1tQ1p0dU1GUXhEUzhi</di:DigestValue> </di:Reference> - </vdecdef2.0:Signature> - </v2.0:AirDrag> -</v2.0:VectoInputDeclaration> + </Signature> + </tns:AirDrag> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFile.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFile.xml index 3baab2fa609ec00fcb3b5095be0d7a63a5211f9d..282007c49b9fe54baa5fad3a0c0940f0ac60d929 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFile.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFile.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:AirDrag> <Data id="TestAirDrag1234" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Test AirDrag Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml index 45cc6f8f24c4475d5cf9c26215e4ac6e5a8a3c5d..f23081c95c253aa94db05313e647a0d1193dbc87 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/AirdragLoadTestFilev2.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v2.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:AirDrag> <Data id="TestAirDrag1234" xsi:type="AirDragDataDeclarationType"> <Manufacturer>Test AirDrag Manufacturer</Manufacturer> diff --git a/Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml similarity index 60% rename from Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml rename to VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml index 95003c38d6c95d407123c97b46e746114c1b8cfc..ac99245ae39617d7a7b4a484fb46ca6005a85cdd 100644 --- a/Vecto3GUI2020Test/TestData/test.VIF_Report_2.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_completed.VIF_Report_2.xml @@ -1,5 +1,5 @@ -<?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehicleExemptedPrimaryBusType"> @@ -57,9 +57,9 @@ </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-73e34e20c6ec4e98bac3"> - <HashPreviousStage> + <vif0.1:ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-b0420da682c648adac83" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <HashPreviousStep> <di:Reference URI="#VEH-4cb168560c0d4b3d886d"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> @@ -68,29 +68,39 @@ <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> <di:DigestValue>KeeEnRNO5Gjm7XB+YYx542ujYbE0k7a9SkWe/BWo7bI=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:ExemptedInterimStageInputType" id="VEH-b34a0bc66bcf46f18a04"> - <v2.8:Manufacturer>sdf</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>asdf</v2.8:ManufacturerAddress> - <v2.8:VIN>afd</v2.8:VIN> - <v2.8:Date>2021-06-22T22:00:00Z</v2.8:Date> - <v2.8:CorrectedActualMass>12343</v2.8:CorrectedActualMass> - <v2.8:TechnicalPermissibleMaximumLadenMass>12354</v2.8:TechnicalPermissibleMaximumLadenMass> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle id="VEH-4e462a2a8acc408eb908" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Manufacturer</Manufacturer> + <ManufacturerAddress>Address </ManufacturerAddress> + <VIN>123456789</VIN> + <Date>2021-08-23T22:00:00Z</Date> + <Model>Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>12000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>13000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>I+II</ClassBus> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2000</HeightIntegratedBody> + </vif0.1:Vehicle> <ApplicationInformation> - <SimulationToolVersion>0.7.3.2247-DEV</SimulationToolVersion> - <Date>2021-06-23T08:35:16.8844114Z</Date> + <SimulationToolVersion>0.7.5.2380-DEV</SimulationToolVersion> + <Date>2021-08-24T09:29:02.5917498Z</Date> </ApplicationInformation> </Data> - <Signature> - <di:Reference URI="#MST-73e34e20c6ec4e98bac3"> + <vif0.1:Signature> + <di:Reference URI="#MST-b0420da682c648adac83"> <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>1HzqGQs5vo59mNfInlO1sSMXdlFf1ExyIcV3Eh47+d4=</di:DigestValue> + <di:DigestValue>khdPY14l0WRVUuF9LOyO8XNRJQSYmL1PtvmCNSQcVSc=</di:DigestValue> </di:Reference> - </Signature> - </ManufacturingStage> -</VectoOutputMultistage> \ No newline at end of file + </vif0.1:Signature> + </vif0.1:ManufacturingStep> +</vif0.1:VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml index ef4e364d6bba89cfea33a6752982ae9d1cd2d1a6..a1dfe0305c17985906b8e3e908c524cd595ac0ce 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/exempted_primary_heavyBus.VIF.xml @@ -1,5 +1,12 @@ <?xml version="1.0" encoding="utf-8"?> -<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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> <Data id="VEH-4cb168560c0d4b3d886d" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehicleExemptedPrimaryBusType"> @@ -57,4 +64,4 @@ </di:Reference> </Signature> </PrimaryVehicle> -</VectoOutputMultistage> \ No newline at end of file +</VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages.xml index 0f1a6b00a4c12c975d46159a5c7af810d97a7105..c05751b10f15f84dea6532b141d717b2ff5ff9cf 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,25 +651,27 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>11</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>3</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>31</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>1</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</v2.8:EntranceHeight> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <ClassBus>B</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>11</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>3</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>31</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>1</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -684,10 +687,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -696,46 +699,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -751,10 +758,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-3"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-3"> + <HashPreviousStep> <di:Reference URI="#RESULT-8f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -763,43 +770,40 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-3-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 3</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 3</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567866</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:TechnicalPermissibleMaximumLadenMass>20000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <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:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>false</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>true</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 3</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> + <VIN>VEH-2234567866</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>B</ClassBus> + <NgTankSystem>Liquefied</NgTankSystem> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -815,5 +819,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj38kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml index b497bba9991b6a358afa84783748494a3b39c24f..8c6780476508c0f76b89a2e62393c83ef4de4dd5 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -640,9 +641,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -651,29 +652,29 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>4</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</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:Auxiliaries> - <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"/> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>4</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"/> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -689,10 +690,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -701,46 +702,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -756,10 +761,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-3"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-3"> + <HashPreviousStep> <di:Reference URI="#RESULT-8f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -768,43 +773,41 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-3-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 3</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 3</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567866</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:TechnicalPermissibleMaximumLadenMass>20000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <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:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>false</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>true</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 3</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> + <VIN>VEH-2234567866</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>B</ClassBus> + <NgTankSystem>Liquefied</NgTankSystem> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -820,5 +823,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj38kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_airdrag.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_airdrag.xml index 0ad9eb1fd6408dfc14358161bfd69f0884139892..558a14bba8d743e37f34a892a94fdda477847069 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_airdrag.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_airdrag.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,26 +651,28 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>0</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</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> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" > + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <ClassBus>I+II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX24h"> <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> <v2.0:Model>Generic Model</v2.0:Model> @@ -690,25 +693,29 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/28N8=</di:DigestValue> </di:Reference> </v2.0:Signature> - </v2.8:AirDrag> - <v2.8:Auxiliaries> - <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>heating</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> - </v2.8:Components> - </Vehicle> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -724,10 +731,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -736,49 +743,51 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:AirdragModifiedMultistage>false</v2.8:AirdragModifiedMultistage> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 2-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>heating</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -794,10 +803,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-3"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-3"> + <HashPreviousStep> <di:Reference URI="#RESULT-8f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -806,44 +815,41 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-3-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 3</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 3</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567866</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:TechnicalPermissibleMaximumLadenMass>20000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:AirdragModifiedMultistage>false</v2.8:AirdragModifiedMultistage> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <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:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>false</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>true</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 3</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> + <VIN>VEH-2234567866</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <ClassBus>B</ClassBus> + <NgTankSystem>Liquefied</NgTankSystem> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -859,5 +865,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj38kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_heatPump.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_heatPump.xml index 03897a0f18688c32f35ab458d36e5f2c72e48036..d2173a5bc555e4de2827baa3faf7846cb2124cdc 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_heatPump.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_heatPump.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,25 +651,27 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>3</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</v2.8:EntranceHeight> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <ClassBus>I+II</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>3</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -684,10 +687,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -696,46 +699,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>none</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>N.A.</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>not applicable</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -751,10 +758,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-3"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-3"> + <HashPreviousStep> <di:Reference URI="#RESULT-8f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -763,43 +770,39 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-3-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 3</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 3</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567866</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:TechnicalPermissibleMaximumLadenMass>20000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <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:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>false</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>true</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 3</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> + <VIN>VEH-2234567866</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <NgTankSystem>Liquefied</NgTankSystem> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -815,5 +818,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj38kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_hev.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_hev.xml index 2fee2955707e5ff98e191f12a782bed7ed190de4..3cd8d425981460fc1397bc5ecb452f45ba95ce34 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_hev.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_hev.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,25 +651,27 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>4</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</v2.8:EntranceHeight> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <ClassBus>B</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>4</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234</VehicleTypeApprovalNumber> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -684,10 +687,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -696,46 +699,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -751,10 +758,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="4"> - <Data xsi:type="BusManufacturingStageDataType" id="MST-3"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="4"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-3"> + <HashPreviousStep> <di:Reference URI="#RESULT-8f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -763,38 +770,38 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-3-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 3</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 3</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567866</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:TechnicalPermissibleMaximumLadenMass>20000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <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:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-3-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 3</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 3</ManufacturerAddress> + <VIN>VEH-2234567866</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <TechnicalPermissibleMaximumLadenMass>20000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>B</ClassBus> + <NgTankSystem>Liquefied</NgTankSystem> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -810,5 +817,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj38kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_vif.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_vif.xml index aa48d6f8c47bd231f6c18be5065f030b55e6ace5..cc86208f242838f8e4feb89f6cb8528cd9f2a2f1 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_vif.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_multiple_stages_vif.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,25 +651,25 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>4</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</v2.8:EntranceHeight> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>4</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -684,10 +685,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -696,46 +697,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -751,5 +756,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_one_stage.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_one_stage.xml index fb2e80fe11d5fc899f937767d1e5af4f0225a403..bc03e50212bc45a042ed350c8635eca6d5660368 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_one_stage.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_one_stage.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,19 +651,19 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <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:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"/> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -678,5 +679,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_two_stages.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_two_stages.xml index 598780c234753ef3b92e48189a3a9d4ac1a45078..a0f342417a135fab931debfea70a34f36f004f4b 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_two_stages.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_consolidated_two_stages.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,25 +651,25 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> - <v2.8:NumberPassengerSeatsLowerDeck>12</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>5</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>4</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2500</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2500</v2.8:EntranceHeight> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>12</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>4</NumberPassengersStandingUpperDeck> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2500</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -684,10 +685,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -696,35 +697,35 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:CorrectedActualMass>15000</v2.8:CorrectedActualMass> - <v2.8:BodyworkCode>CB</v2.8:BodyworkCode> - <v2.8:DoorDriveTechnology>mixed</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <CorrectedActualMass>15000</CorrectedActualMass> + <BodyworkCode>CB</BodyworkCode> + <DoorDriveTechnology>mixed</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + </LEDLights> + </ElectricSystem> + <HVAC> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -740,5 +741,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_conventional_final_vif.VIF_Report_1.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_conventional_final_vif.VIF_Report_1.xml new file mode 100644 index 0000000000000000000000000000000000000000..841720ef6ac519c3a045f5b27c454b876cf682a4 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_conventional_final_vif.VIF_Report_1.xml @@ -0,0 +1,696 @@ +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <PrimaryVehicle> + <Data id="VEH-622a60d3b3cf4340a362" xsi:type="PrimaryVehicleDataType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model</Model> + <VIN>VEH-1234567890</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>4x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <vif0.1:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <v2.0:Entry gear="6" maxTorque="1800" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + <v2.0:Entry gear="1" maxTorque="2500" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + <v2.0:Entry gear="12" maxTorque="1900" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" /> + </vif0.1:TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>2200</RatedSpeed> + <RatedPower>380000</RatedPower> + <MaxEngineTorque>2400</MaxEngineTorque> + <WHRType> + <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> + <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> + <v2.3:ElectricalOutput>false</v2.3:ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>560</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="560.00" maxTorque="1180.00" dragTorque="-149.00" /> + <Entry engineSpeed="600.00" maxTorque="1282.00" dragTorque="-148.00" /> + <Entry engineSpeed="800.00" maxTorque="1791.00" dragTorque="-149.00" /> + <Entry engineSpeed="1000.00" maxTorque="2300.00" dragTorque="-160.00" /> + <Entry engineSpeed="1200.00" maxTorque="2300.00" dragTorque="-179.00" /> + <Entry engineSpeed="1400.00" maxTorque="2300.00" dragTorque="-203.00" /> + <Entry engineSpeed="1600.00" maxTorque="2079.00" dragTorque="-235.00" /> + <Entry engineSpeed="1800.00" maxTorque="1857.00" dragTorque="-264.00" /> + <Entry engineSpeed="2000.00" maxTorque="1352.00" dragTorque="-301.00" /> + <Entry engineSpeed="2100.00" maxTorque="1100.00" dragTorque="-320.00" /> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>NG CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationMethod>Standard values</CertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <Axles> + <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>true</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleDriven</v2.0:AxleType> + <v2.0:TwinTyres>true</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>electrically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>false</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-1234567890"> + <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>8uY4dWDsEyozlZhzV8X7Fq1tavvoBIXiCn8oAUcsjVw=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-c2756d6f924c489c81e9"> + <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>kCeubdlXuVQOI1TTqjrTTxSNL8vfA19QjSy60xXYCa4=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">19.71467</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1104.84</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">23.22512</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1301.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">15.45965</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">866.38</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">18.39275</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1030.76</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13098.63</TotalVehicleMass> + <Payload unit="kg">1123.63</Payload> + <PassengerCount>16.52</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.17582</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">738.40</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17593.16</TotalVehicleMass> + <Payload unit="kg">5618.16</Payload> + <PassengerCount>82.62</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">16.00192</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">896.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13050.44</TotalVehicleMass> + <Payload unit="kg">1075.44</Payload> + <PassengerCount>15.15</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.11672</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">623.00</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15494.61</TotalVehicleMass> + <Payload unit="kg">3519.61</Payload> + <PassengerCount>49.57</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">12.34809</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">692.01</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">20.71050</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1160.65</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">24.68655</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1383.48</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">16.25928</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">911.20</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">19.58479</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1097.56</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">13543.34</TotalVehicleMass> + <Payload unit="kg">1193.34</Payload> + <PassengerCount>17.55</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.83088</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">775.11</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P31DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18316.69</TotalVehicleMass> + <Payload unit="kg">5966.69</Payload> + <PassengerCount>87.75</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">17.02489</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">954.10</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14225.44</TotalVehicleMass> + <Payload unit="kg">1075.44</Payload> + <PassengerCount>15.15</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.30640</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">633.63</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16669.61</TotalVehicleMass> + <Payload unit="kg">3519.61</Payload> + <PassengerCount>49.57</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">12.56427</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">704.12</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14244.99</TotalVehicleMass> + <Payload unit="kg">1094.99</Payload> + <PassengerCount>15.42</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">8.73159</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">489.33</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15887.48</TotalVehicleMass> + <Payload unit="kg">2737.48</Payload> + <PassengerCount>38.56</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.18847</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">514.94</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14662.82</TotalVehicleMass> + <Payload unit="kg">1262.82</Payload> + <PassengerCount>17.79</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">11.67569</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">654.33</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">17609.41</TotalVehicleMass> + <Payload unit="kg">4209.41</Payload> + <PassengerCount>59.29</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">13.23582</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">741.76</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">14747.01</TotalVehicleMass> + <Payload unit="kg">1347.01</Payload> + <PassengerCount>18.97</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.18672</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">514.84</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P32DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16767.53</TotalVehicleMass> + <Payload unit="kg">3367.53</Payload> + <PassengerCount>47.43</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="NG CI"> + <EnergyConsumption unit="MJ/km">9.74629</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">546.20</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.7.5.2380-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2021-08-24T08:43:39.7171617Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#VEH-622a60d3b3cf4340a362"> + <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>PMrdzQUpL67ALWFQpWjxSieZ4KQ2iqS2y4BmHV3nJ0g=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MST-0adf9390bde54a23a113" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <HashPreviousStep> + <di:Reference URI="#VEH-622a60d3b3cf4340a362"> + <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>PMrdzQUpL67ALWFQpWjxSieZ4KQ2iqS2y4BmHV3nJ0g=</di:DigestValue> + </di:Reference> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="VEH-09ab483f390a40d58f5a" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2021-08-23T22:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>1</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>11</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>2</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>123456789</VehicleTypeApprovalNumber> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</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> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>4</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>non R-744 4-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> + <ApplicationInformation> + <SimulationToolVersion>0.7.5.2380-DEV</SimulationToolVersion> + <Date>2021-08-24T08:43:41.1851923Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#MST-0adf9390bde54a23a113"> + <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>ExKEVzerQlHGdqCo8XsbBC5PWQ0dKFC0nsiPkW31ZBs=</di:DigestValue> + </di:Reference> + </Signature> + </ManufacturingStep> +</VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_only.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_only.xml index e7c8c66e624966c33f067f9cefec6ee4143526fc..7aa3d38fbe6ce4acce962eb218d79a371baa8214 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_only.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_only.xml @@ -1 +1,657 @@ -<?xml version="1.0" encoding="UTF-8"?> <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" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> <Model>Generic Model</Model> <VIN>VEH-1234567890_nonSmart-ESS</VIN> <Date>2017-02-15T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <ChassisConfiguration>Bus</ChassisConfiguration> <AxleConfiguration>8x2</AxleConfiguration> <Articulated>true</Articulated> <TechnicalPermissibleMaximumLadenMass>4000</TechnicalPermissibleMaximumLadenMass> <IdlingSpeed>600</IdlingSpeed> <RetarderType>Transmission Output Retarder</RetarderType> <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <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"/> <tcl:Entry gear="12" maxTorque="1900"/> </TorqueLimits> <Components xsi:type="VehicleComponentsPIFType"> <Engine> <Data xsi:type="EngineDataPIFType"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Bus 6x2</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> <Date>2017-02-15T11:00:00Z</Date> <AppVersion>VectoEngine x.y</AppVersion> <Displacement>12730</Displacement> <RatedSpeed>1800</RatedSpeed> <RatedPower>325032</RatedPower> <MaxEngineTorque>2134</MaxEngineTorque> <WHRType> <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> <v2.3:ElectricalOutput>true</v2.3:ElectricalOutput> </WHRType> <Mode> <IdlingSpeed>600</IdlingSpeed> <FullLoadAndDragCurve> <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> </FullLoadAndDragCurve> <Fuels> <FuelType>Diesel CI</FuelType> </Fuels> </Mode> </Data> </Engine> <Transmission> <Data xsi:type="TransmissionDataPIFType"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Gearbox</Model> <MainCertificationMethod>Standard values</MainCertificationMethod> <CertificationNumber>Trans-5464sdf6sdf555</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <TransmissionType>AMT</TransmissionType> <Gears xsi:type="TransmissionGearsPIFType"> <Gear number="1"> <Ratio>14.930</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="2"> <Ratio>11.640</Ratio> <MaxTorque>1900</MaxTorque> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="3"> <Ratio>9.020</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="4"> <Ratio>7.040</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="5"> <Ratio>5.640</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="6"> <Ratio>4.400</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="7"> <Ratio>3.390</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="8"> <Ratio>2.650</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="9"> <Ratio>2.050</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="10"> <Ratio>1.600</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="11"> <Ratio>1.280</Ratio> <MaxSpeed>2000</MaxSpeed> </Gear> <Gear number="12"> <Ratio>1.000</Ratio> </Gear> </Gears> </Data> </Transmission> <TorqueConverter> <Data xsi:type="TorqueConverterDataPIFType"> <Manufacturer>Generic Torque Converter</Manufacturer> <Model>Generic Torque Converter Model</Model> <CertificationMethod>Standard values</CertificationMethod> <CertificationNumber>Torq-4546565455</CertificationNumber> <Date>2018-01-12T12:00:00Z</Date> <AppVersion>3.0.3</AppVersion> <Characteristics> <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> </Characteristics> </Data> </TorqueConverter> <Angledrive> <Data xsi:type="AngledriveDataPIFType"> <Manufacturer>Generic Angledrive</Manufacturer> <Model>Generic Angledrive Model</Model> <CertificationMethod>Standard values</CertificationMethod> <CertificationNumber>ANG-Z64665456654</CertificationNumber> <Date>2019-01-12T12:00:00Z</Date> <AppVersion>3.2.3</AppVersion> <Ratio>20</Ratio> </Data> </Angledrive> <Axlegear> <Data xsi:type="AxlegearDataPIFType"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck AxleGear</Model> <CertificationMethod>Standard values</CertificationMethod> <CertificationNumber>AX-6654888s5f4</CertificationNumber> <Date>2017-01-11T11:00:00Z</Date> <AppVersion>3.0.1</AppVersion> <LineType>Single portal axle</LineType> <Ratio>2.590</Ratio> </Data> </Axlegear> <AxleWheels> <Data xsi:type="AxleWheelsDataPIFType"> <Axles> <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> <v2.0:TwinTyres>false</v2.0:TwinTyres> <v2.0:Steered>true</v2.0:Steered> <v2.0:Tyre> <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> <v2.0:Model>Generic Wheel</v2.0:Model> <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> <v2.0:FzISO>31300</v2.0:FzISO> </v2.0:Data> <v2.0: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> </v2.0:Signature> </v2.0:Tyre> </Axle> <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> <v2.0:AxleType>VehicleDriven</v2.0:AxleType> <v2.0:TwinTyres>true</v2.0:TwinTyres> <v2.0:Steered>false</v2.0:Steered> <v2.0:Tyre> <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> <v2.0:Model>Generic Wheel</v2.0:Model> <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared> <v2.0:FzISO>31300</v2.0:FzISO> </v2.0:Data> <v2.0: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> </v2.0:Signature> </v2.0:Tyre> </Axle> <Axle axleNumber="3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> <v2.0:TwinTyres>false</v2.0:TwinTyres> <v2.0:Steered>false</v2.0:Steered> <v2.0:Tyre> <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> <v2.0:Model>Generic Wheel</v2.0:Model> <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> <v2.0:FzISO>31300</v2.0:FzISO> </v2.0:Data> <v2.0: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> </v2.0:Signature> </v2.0:Tyre> </Axle> </Axles> </Data> </AxleWheels> <Auxiliaries> <Data xsi:type="AuxiliaryDataPIFType"> <Fan> <Technology>Hydraulic driven - Constant displacement pump</Technology> </Fan> <SteeringPump> <Technology axleNumber="1">Variable displacement elec. controlled</Technology> </SteeringPump> <ElectricSystem> <AlternatorTechnology>smart</AlternatorTechnology> <SmartAlternator> <RatedCurrent>10</RatedCurrent> <RatedVoltage>12</RatedVoltage> </SmartAlternator> <Battery> <BatteryTechnology>lead-acid battery – conventional</BatteryTechnology> <RatedCapacity>50</RatedCapacity> <NominalVoltage>12</NominalVoltage> </Battery> <Capacitor> <CapacitorTechnology></CapacitorTechnology> <RatedCapacitance>30</RatedCapacitance> <RatedVoltage>3</RatedVoltage> </Capacitor> <SupplyFromHEVPossible>false</SupplyFromHEVPossible> </ElectricSystem> <PneumaticSystem> <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> <CompressorDrive>electrically</CompressorDrive> <Clutch>none</Clutch> <CompressorRatio>1.000</CompressorRatio> <SmartCompressionSystem>true</SmartCompressionSystem> <SmartRegenerationSystem>false</SmartRegenerationSystem> <AirsuspensionControl>electronically</AirsuspensionControl> <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> </PneumaticSystem> <HVAC> <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> </HVAC> </Data> </Auxiliaries> </Components> </Vehicle> <InputDataSignature> <di:Reference URI="#VEH-PrimaryBus_SmartPS"> <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>uqcFIXtDYxvl513ruiYYJCrV1fIiyw37t8vJhg4xxoo=</di:DigestValue> </di:Reference> </InputDataSignature> <ManufacturerRecordSignature> <di:Reference URI="#RESULT-5f30c7fe665a47938f6b"> <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>KUpFCKh1bu/YPwYj36kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </ManufacturerRecordSignature> <Results> <Status>success</Status> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Heavy Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> <Payload unit="kg">1352.52</Payload> <PassengerCount>19.89</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption> </Fuel> <CO2 unit="g/km">1555.73</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Heavy Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> <Payload unit="kg">6762.60</Payload> <PassengerCount>99.45</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption> </Fuel> <CO2 unit="g/km">1862.57</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> <Payload unit="kg">1352.52</Payload> <PassengerCount>19.89</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption> </Fuel> <CO2 unit="g/km">1227.15</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> <Payload unit="kg">6762.60</Payload> <PassengerCount>99.45</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption> </Fuel> <CO2 unit="g/km">1483.80</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Suburban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> <Payload unit="kg">1352.52</Payload> <PassengerCount>19.89</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption> </Fuel> <CO2 unit="g/km">1051.58</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Suburban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> <Payload unit="kg">6762.60</Payload> <PassengerCount>99.45</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption> </Fuel> <CO2 unit="g/km">1290.13</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">15469.51</TotalVehicleMass> <Payload unit="kg">1294.51</Payload> <PassengerCount>18.23</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">11.82313</EnergyConsumption> </Fuel> <CO2 unit="g/km">866.66</CO2> </Result> <Result status="success"> <VehicleGroup>P33SD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">18411.57</TotalVehicleMass> <Payload unit="kg">4236.57</Payload> <PassengerCount>59.67</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">13.24283</EnergyConsumption> </Fuel> <CO2 unit="g/km">970.73</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Heavy Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> <Payload unit="kg">1578.29</Payload> <PassengerCount>23.21</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption> </Fuel> <CO2 unit="g/km">1665.49</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Heavy Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> <Payload unit="kg">7891.43</Payload> <PassengerCount>116.05</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption> </Fuel> <CO2 unit="g/km">2049.48</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> <Payload unit="kg">1578.29</Payload> <PassengerCount>23.21</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption> </Fuel> <CO2 unit="g/km">1312.66</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Urban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> <Payload unit="kg">7891.43</Payload> <PassengerCount>116.05</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption> </Fuel> <CO2 unit="g/km">1630.09</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Suburban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> <Payload unit="kg">1578.29</Payload> <PassengerCount>23.21</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption> </Fuel> <CO2 unit="g/km">1120.08</CO2> </Result> <Result status="success"> <VehicleGroup>P33DD</VehicleGroup> <Mission>Suburban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> <Payload unit="kg">7891.43</Payload> <PassengerCount>116.05</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption> </Fuel> <CO2 unit="g/km">1411.95</CO2> </Result> <Result status="success"> <VehicleGroup>P34SD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">16467.68</TotalVehicleMass> <Payload unit="kg">1254.68</Payload> <PassengerCount>17.67</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">11.93701</EnergyConsumption> </Fuel> <CO2 unit="g/km">875.01</CO2> </Result> <Result status="success"> <VehicleGroup>P34SD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> <Payload unit="kg">4106.21</Payload> <PassengerCount>57.83</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption> </Fuel> <CO2 unit="g/km">976.63</CO2> </Result> <Result status="success"> <VehicleGroup>P34SD</VehicleGroup> <Mission>Coach</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> <Payload unit="kg">1277.49</Payload> <PassengerCount>17.99</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption> </Fuel> <CO2 unit="g/km">639.08</CO2> </Result> <Result status="success"> <VehicleGroup>P34SD</VehicleGroup> <Mission>Coach</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> <Payload unit="kg">3193.72</Payload> <PassengerCount>44.98</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption> </Fuel> <CO2 unit="g/km">674.57</CO2> </Result> <Result status="success"> <VehicleGroup>P34DD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">19588.08</TotalVehicleMass> <Payload unit="kg">1738.08</Payload> <PassengerCount>24.48</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">13.58335</EnergyConsumption> </Fuel> <CO2 unit="g/km">995.69</CO2> </Result> <Result status="success"> <VehicleGroup>P34DD</VehicleGroup> <Mission>Interurban</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> <Payload unit="kg">5793.60</Payload> <PassengerCount>81.60</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption> </Fuel> <CO2 unit="g/km">1141.12</CO2> </Result> <Result status="success"> <VehicleGroup>P34DD</VehicleGroup> <Mission>Coach</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> <Payload unit="kg">1853.95</Payload> <PassengerCount>26.11</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption> </Fuel> <CO2 unit="g/km">720.51</CO2> </Result> <Result status="success"> <VehicleGroup>P34DD</VehicleGroup> <Mission>Coach</Mission> <SimulationParameters> <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> <Payload unit="kg">4634.88</Payload> <PassengerCount>65.28</PassengerCount> <FuelMode>single fuel mode</FuelMode> </SimulationParameters> <Fuel type="Diesel CI"> <EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption> </Fuel> <CO2 unit="g/km">774.60</CO2> </Result> </Results> <ApplicationInformation> <SimulationToolVersion>String</SimulationToolVersion> <Date>2017-01-01T00:00:00Z</Date> </ApplicationInformation> </Data> <Signature> <di:Reference URI="#PIF-d10aff76c5d149948046"> <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>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> </Signature> </PrimaryVehicle> </VectoOutputMultistage> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> +<VectoOutputMultistep +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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> + <PrimaryVehicle> + <Data id="text" xsi:type="PrimaryVehicleDataType"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model</Model> + <VIN>VEH-1234567890_nonSmart-ESS</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>8x2</AxleConfiguration> + <Articulated>true</Articulated> + <TechnicalPermissibleMaximumLadenMass>4000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> + <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"/> + <tcl:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer</Manufacturer> + <Model>Bus 6x2</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>1800</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHRType> + <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> + <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> + <v2.3:ElectricalOutput>true</v2.3:ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>600</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>Diesel CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <CertificationNumber>Trans-5464sdf6sdf555</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <TorqueConverter> + <Data xsi:type="TorqueConverterDataPIFType"> + <Manufacturer>Generic Torque Converter</Manufacturer> + <Model>Generic Torque Converter Model</Model> + <CertificationMethod>Standard values</CertificationMethod> + <CertificationNumber>Torq-4546565455</CertificationNumber> + <Date>2018-01-12T12:00:00Z</Date> + <AppVersion>3.0.3</AppVersion> + <Characteristics> + <Entry speedRatio="0.0000" torqueRatio="1.00" inputTorqueRef="300.00"/> + <Entry speedRatio="0.5000" torqueRatio="1.00" inputTorqueRef="200.00"/> + <Entry speedRatio="0.9000" torqueRatio="0.90" inputTorqueRef="200.00"/> + </Characteristics> + </Data> + </TorqueConverter> + <Angledrive> + <Data xsi:type="AngledriveDataPIFType"> + <Manufacturer>Generic Angledrive</Manufacturer> + <Model>Generic Angledrive Model</Model> + <CertificationMethod>Standard values</CertificationMethod> + <CertificationNumber>ANG-Z64665456654</CertificationNumber> + <Date>2019-01-12T12:00:00Z</Date> + <AppVersion>3.2.3</AppVersion> + <Ratio>20</Ratio> + </Data> + </Angledrive> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear</Model> + <CertificationMethod>Standard values</CertificationMethod> + <CertificationNumber>AX-6654888s5f4</CertificationNumber> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <Axles> + <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>true</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleDriven</v2.0:AxleType> + <v2.0:TwinTyres>true</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>smart</AlternatorTechnology> + <SmartAlternator> + <RatedCurrent>10</RatedCurrent> + <RatedVoltage>12</RatedVoltage> + </SmartAlternator> + <Battery> + <BatteryTechnology>lead-acid battery – conventional</BatteryTechnology> + <RatedCapacity>50</RatedCapacity> + <NominalVoltage>12</NominalVoltage> + </Battery> + <Capacitor> + <CapacitorTechnology></CapacitorTechnology> + <RatedCapacitance>30</RatedCapacitance> + <RatedVoltage>3</RatedVoltage> + </Capacitor> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>electrically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>true</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_SmartPS"> + <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>uqcFIXtDYxvl513ruiYYJCrV1fIiyw37t8vJhg4xxoo=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-5f30c7fe665a47938f6b"> + <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>KUpFCKh1bu/YPwYj36kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1555.73</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1862.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1227.15</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1483.80</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1051.58</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1290.13</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15469.51</TotalVehicleMass> + <Payload unit="kg">1294.51</Payload> + <PassengerCount>18.23</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.82313</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">866.66</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18411.57</TotalVehicleMass> + <Payload unit="kg">4236.57</Payload> + <PassengerCount>59.67</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.24283</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">970.73</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1665.49</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">2049.48</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1312.66</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1630.09</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1120.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1411.95</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16467.68</TotalVehicleMass> + <Payload unit="kg">1254.68</Payload> + <PassengerCount>17.67</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.93701</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">875.01</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> + <Payload unit="kg">4106.21</Payload> + <PassengerCount>57.83</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">976.63</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> + <Payload unit="kg">1277.49</Payload> + <PassengerCount>17.99</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">639.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> + <Payload unit="kg">3193.72</Payload> + <PassengerCount>44.98</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">674.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19588.08</TotalVehicleMass> + <Payload unit="kg">1738.08</Payload> + <PassengerCount>24.48</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.58335</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">995.69</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> + <Payload unit="kg">5793.60</Payload> + <PassengerCount>81.60</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1141.12</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> + <Payload unit="kg">1853.95</Payload> + <PassengerCount>26.11</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">720.51</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> + <Payload unit="kg">4634.88</Payload> + <PassengerCount>65.28</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">774.60</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>String</SimulationToolVersion> + <Date>2017-01-01T00:00:00Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#PIF-d10aff76c5d149948046"> + <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>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3.xml index b164a8f8f048591b8bd24c8888bc574184d3b4e6..22f99e3cd63fed7b699ae186af47573cc3bca2cf 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xmlns:vif0.1="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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +26,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif0.1:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif0.1:ADAS> <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"/> @@ -639,9 +639,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,13 +650,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> + </HashPreviousStep> + <Vehicle xsi:type="v2.4:Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle"> + <v2.4:Manufacturer>Intermediate Manufacturer 1</v2.4:Manufacturer> + <v2.4:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.4:ManufacturerAddress> + <v2.4:VIN>VEH-1234567890</v2.4:VIN> + <v2.4:Date>2018-02-15T11:00:00Z</v2.4:Date> + <v2.4:VehicleDeclarationType>interim</v2.4:VehicleDeclarationType> </Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> @@ -673,10 +673,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -685,49 +685,50 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 2</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:VehicleDeclarationType>final</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2</v2.3:PredictiveCruiseControl> - </v2.8:ADAS> - <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>true</v2.8:Interiorlights> - <v2.8:Dayrunninglights>true</v2.8:Dayrunninglights> - <v2.8:Positionlights>false</v2.8:Positionlights> - <v2.8:Brakelights>false</v2.8:Brakelights> - <v2.8:Headlights>true</v2.8:Headlights> - </v2.8:LEDLights> - </v2.8:ElectricSystem> - <v2.8:HVAC> - <v2.8:SystemConfiguration>1</v2.8:SystemConfiguration> - <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 3-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>50</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>false</v2.8:SeparateAirDistributionDucts> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>false</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>true</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="v2.4:Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <VehicleDeclarationType>final</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2</PredictiveCruiseControl> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>true</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>1</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 3-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!!</SimulationToolVersion> <Date>2021-03-13T07:20:08.0187663Z</Date> @@ -743,5 +744,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3_group41.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3_group41.xml index f0f066339b43de5d3a864f4febd9f54cda2edc02..53e56e8b8f3823973131160dd4869fb092641255 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3_group41.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_3_group41.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,12 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>false</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -572,9 +574,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -583,14 +585,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-1234567890</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <VehicleDeclarationType>interim</VehicleDeclarationType> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -606,10 +608,10 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> - <ManufacturingStage stageCount="3"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-2"> - <HashPreviousStage> + </ManufacturingStep> + <ManufacturingStep stepCount="3"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-2"> + <HashPreviousStep> <di:Reference URI="#RESULT-6f30c7fe665a47938f6b"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -618,14 +620,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-2-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 2</v2.8:Manufacturer> - <v2.8:ManufacturerAddress></v2.8:ManufacturerAddress> - <v2.8:VIN>VEH-2234567890</v2.8:VIN> - <v2.8:Date>2021-02-13T07:20:08.0187663Z</v2.8:Date> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-2-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 2</Manufacturer> + <ManufacturerAddress></ManufacturerAddress> + <VIN>VEH-2234567890</VIN> + <Date>2021-02-13T07:20:08.0187663Z</Date> + <VehicleDeclarationType>interim</VehicleDeclarationType> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-02-13T07:20:08.0187663Z</Date> @@ -641,5 +643,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>GHpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_full.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_full.xml index d1bba98489c9ad108d4b3fa37dff3ed714c95227..586c608eb4d46140fe6ad025fb6556f327cc33fb 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_full.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_full.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d11aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,39 +651,39 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+67QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>VIN-132564</v2.8:VIN> - <v2.8:Date>2018-01-15T11:00:00Z</v2.8:Date> - <v2.8:Model>Intermediate Model 1</v2.8:Model> - <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> - <v2.8:CorrectedActualMass>25000</v2.8:CorrectedActualMass> - <v2.8:TechnicalPermissibleMaximumLadenMass>30000</v2.8:TechnicalPermissibleMaximumLadenMass> - <v2.8:NgTankSystem>Liquefied</v2.8:NgTankSystem> - <v2.8:ClassBus>B</v2.8:ClassBus> - <v2.8:NumberPassengerSeatsLowerDeck>24</v2.8:NumberPassengerSeatsLowerDeck> - <v2.8:NumberPassengersStandingLowerDeck>7</v2.8:NumberPassengersStandingLowerDeck> - <v2.8:NumberPassengerSeatsUpperDeck>30</v2.8:NumberPassengerSeatsUpperDeck> - <v2.8:NumberPassengersStandingUpperDeck>4</v2.8:NumberPassengersStandingUpperDeck> - <v2.8:BodyworkCode>CA</v2.8:BodyworkCode> - <v2.8:LowEntry>true</v2.8:LowEntry> - <v2.8:HeightIntegratedBody>2500</v2.8:HeightIntegratedBody> - <v2.8:VehicleLength>12000</v2.8:VehicleLength> - <v2.8:VehicleWidth>2000</v2.8:VehicleWidth> - <v2.8:EntranceHeight>2050</v2.8:EntranceHeight> - <v2.8:DoorDriveTechnology>pneumatic</v2.8:DoorDriveTechnology> - <v2.8:VehicleDeclarationType>final</v2.8:VehicleDeclarationType> - <v2.8:ADAS> - <v2.3:EngineStopStart>false</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>true</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> - </v2.8:ADAS> - <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> - <v2.8:AirDrag> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>VIN-132564</VIN> + <Date>2018-01-15T11:00:00Z</Date> + <Model>Intermediate Model 1</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>25000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>30000</TechnicalPermissibleMaximumLadenMass> + <ClassBus>B</ClassBus> + <NgTankSystem>Liquefied</NgTankSystem> + <NumberPassengerSeatsLowerDeck>24</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>7</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>30</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>4</NumberPassengersStandingUpperDeck> + <BodyworkCode>CA</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>12000</VehicleLength> + <VehicleWidth>2000</VehicleWidth> + <EntranceHeight>2050</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>true</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> <v2.0:Data xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <v2.0:Manufacturer>Generic Manufacturer</v2.0:Manufacturer> <v2.0:Model>Generic Model</v2.0:Model> @@ -703,36 +704,37 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <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>false</v2.8:Dayrunninglights> - <v2.8:Positionlights>true</v2.8:Positionlights> - <v2.8:Brakelights>true</v2.8:Brakelights> - <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 3-stage</v2.8:HeatPumpTypeDriverCompartment> - <v2.8:HeatPumpModeDriverCompartment>heating</v2.8:HeatPumpModeDriverCompartment> - <v2.8:HeatPumpTypePassengerCompartment>non R-744 2-stage</v2.8:HeatPumpTypePassengerCompartment> - <v2.8:HeatPumpModePassengerCompartment>heating</v2.8:HeatPumpModePassengerCompartment> - <v2.8:AuxiliaryHeaterPower>40</v2.8:AuxiliaryHeaterPower> - <v2.8:DoubleGlazing>false</v2.8:DoubleGlazing> - <v2.8:AdjustableAuxiliaryHeater>false</v2.8:AdjustableAuxiliaryHeater> - <v2.8:SeparateAirDistributionDucts>true</v2.8:SeparateAirDistributionDucts> - <v2.8:WaterElectricHeater>false</v2.8:WaterElectricHeater> - <v2.8:AirElectricHeater>true</v2.8:AirElectricHeater> - <v2.8:OtherHeatingTechnology>false</v2.8:OtherHeatingTechnology> - </v2.8:HVAC> - </v2.8:Data> - </v2.8:Auxiliaries> - </v2.8:Components> - </Vehicle> + </AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>true</Interiorlights> + <Dayrunninglights>false</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 3-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>40</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>false</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187666Z</Date> @@ -748,5 +750,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_mandatory.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_mandatory.xml index 42bfe04f38b711a00cba4f9ad37a77005e22a25b..092cda1172d7539b1006774b00db7c48380b08d5 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_mandatory.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersionMultistage.0.1/vecto_multistage_primary_vehicle_stage_2_mandatory.xml @@ -1,13 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> -<VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +<VectoOutputMultistep 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:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> +xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:vif="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> <PrimaryVehicle> <Data id="text" xsi:type="PrimaryVehicleDataType"> <Vehicle xsi:type="VehiclePIFType"> @@ -26,13 +27,13 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <RetarderRatio>1.000</RetarderRatio> <AngledriveType>None</AngledriveType> <ZeroEmissionVehicle>false</ZeroEmissionVehicle> - <ADAS xsi:type="v2.3:AdvancedDriverAssistantSystemsType"> - <v2.3:EngineStopStart>true</v2.3:EngineStopStart> - <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> - <v2.3:EcoRollWithEngineStop>true</v2.3:EcoRollWithEngineStop> - <v2.3:PredictiveCruiseControl>1,2,3</v2.3:PredictiveCruiseControl> - <v2.3:APTEcoRollReleaseLockupClutch>false</v2.3:APTEcoRollReleaseLockupClutch> - </ADAS> + <vif:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>true</EcoRollWithEngineStop> + <PredictiveCruiseControl>1,2,3</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>false</APTEcoRollReleaseLockupClutch> + </vif:ADAS> <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"/> @@ -639,9 +640,9 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile </di:Reference> </Signature> </PrimaryVehicle> - <ManufacturingStage stageCount="2"> - <Data xsi:type="BusManufacturingStageDataType" id="MSTG-1"> - <HashPreviousStage> + <ManufacturingStep stepCount="2"> + <Data xsi:type="BusManufacturingStepDataType" id="MSTG-1"> + <HashPreviousStep> <di:Reference URI="#PIF-d10aff76c5d149948046"> <di:Transforms> <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization"/> @@ -650,14 +651,14 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/> <di:DigestValue>nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=</di:DigestValue> </di:Reference> - </HashPreviousStage> - <Vehicle xsi:type="v2.8:InterimStageInputType" id="MSTG-1-Vehicle"> - <v2.8:Manufacturer>Intermediate Manufacturer 1</v2.8:Manufacturer> - <v2.8:ManufacturerAddress>Intermediate Manufacturer Address 1</v2.8:ManufacturerAddress> - <v2.8:VIN>adfas</v2.8:VIN> - <v2.8:Date>2018-02-15T11:00:00Z</v2.8:Date> - <v2.8:VehicleDeclarationType>interim</v2.8:VehicleDeclarationType> - </Vehicle> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MSTG-1-Vehicle" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <Manufacturer>Intermediate Manufacturer 1</Manufacturer> + <ManufacturerAddress>Intermediate Manufacturer Address 1</ManufacturerAddress> + <VIN>adfas</VIN> + <Date>2018-02-15T11:00:00Z</Date> + <VehicleDeclarationType>interim</VehicleDeclarationType> + </vif0.1:Vehicle> <ApplicationInformation> <SimulationToolVersion>!!NOT FOR CERTIFICATION!!</SimulationToolVersion> <Date>2021-01-12T07:20:08.0187663Z</Date> @@ -673,5 +674,5 @@ xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile <di:DigestValue>BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=</di:DigestValue> </di:Reference> </Signature> - </ManufacturingStage> -</VectoOutputMultistage> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/Tractor_4x2_vehicle-class-5_5_t_0.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/Tractor_4x2_vehicle-class-5_5_t_0.xml index 14fa4aaa716a059300457753979ffa92b9420cce..d0aa1a9383d6e883df0d1f73d1238108bc66dcd6 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/Tractor_4x2_vehicle-class-5_5_t_0.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/Tractor_4x2_vehicle-class-5_5_t_0.xml @@ -1,5 +1,6 @@ -<?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<?xml version="1.0" encoding="utf-8"?> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> <Vehicle id="VEH-class5_Class-5_5t0"> <Manufacturer>Generic Vendor</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-input_sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-input_sample.xml index 4c6a16410c1742891139a896417a0bcedbde0433..77dd7eb3eee48835c80b330f743b460b11c422bc 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-input_sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-input_sample.xml @@ -4,9 +4,9 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:Engine> - <Data id=""> + <Data id="asdf"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> <Model>Generic 40t Long Haul Truck Engine</Model> <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-sample.xml index 04885ccbac9f855aafb2dd61896859b4b761bd3f..f91932e4f17577f0fa2939aa9007470544c1f884 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_engine-sample.xml @@ -4,7 +4,7 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:Engine> <Data id="ENG-gooZah3D"> <Manufacturer>Generic Engine Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_gearbox-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_gearbox-sample.xml index 8b045a9bcade4bf31f3063d069f037d4459d9c91..1ea5304acb65eda2026f6a3016b2533beb2b489d 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_gearbox-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_gearbox-sample.xml @@ -4,7 +4,7 @@ xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationComponent:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoComponent.xsd"> <tns:Gearbox> <Data id="gbx-vi2Oak2N"> <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted-sample.xml index cfcc7529e32d493df7a22b849c9be43aceed5f21..23461b99f9bab9395382207993ae87b805b046c2 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted-sample.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" +xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml index 57659cef43c4d0b34fa9e642d9fb832a5070197e..bf28163e91325e459734a5da6fd098c3ce3917c2 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_full-sample.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Infinite Loop</ManufacturerAddress> <VIN>VEH-1234567891</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml index 760dc95f4322428fb6ec82cbdab6d6269e20fcdd..eec7c3edbf78e18be6b5545b9361440fca8684cb 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries01-sample.xml @@ -1 +1,18 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> <Manufacturer>Some Manufacturer 1</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>7000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> <BodyworkCode>CC</BodyworkCode> <LowEntry>false</LowEntry> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" +xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer 1</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-01-09T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>7000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> + <BodyworkCode>CC</BodyworkCode> + <LowEntry>false</LowEntry> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml index 9a6adaf176806f20f62ebdccdf56a5ee7ebbe527..5d41d4bdc57357c2a19d556f9ea81b94ebe7c456 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_certain_entries02-sample.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> -<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" -xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> - <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType"> +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType"> <Manufacturer>Some Manufacturer 2</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> <VIN>VEH-1234567891</VIN> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_mandatory_entries.xml index 89d0e3a818a2bde6ebfc8e6eb48203b84edd29ca..3731a2593bfd5943be3efd5d8fd1b16f8343b709 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_mandatory_entries.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-exempted_input_only_mandatory_entries.xml @@ -1 +1 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="ExemptedInterimStageInputType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Exempted_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-new_parameters-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-new_parameters-sample.xml index 8e11505a1864c7573a15b77d5ceb31a2b836c485..498242e718fd984e6e2cbcd924410fdb87114d67 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-new_parameters-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-new_parameters-sample.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml index 56aad96784ed0bd2ff185a79b9132c91784d8efb..074bd17bef8e6ad1cf042dcde0c44a61380d33e8 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample.xml @@ -1,10 +1,10 @@ <?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" - xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" - xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" + xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" + xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> <ManufacturerAddress>Street, ZIP City</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_AT.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_AT.xml index 487267c65ef7fa8944f7c6a856477982c8caf2a2..0c4db0a83e9c3585e5dfc60d3ff0b441430b9e5a 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_AT.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_AT.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> +<tns:VectoInputDeclaration schemaVersion="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd"> <Vehicle id="VEH-N.A."> <Manufacturer>Generic</Manufacturer> <ManufacturerAddress>N.A.</ManufacturerAddress> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL.xml index 98ecc6a0e1dc43894389ab5d1f0dba3a1d4f0ade..48c6242e17c1335e61b94448eeeeb201946ae644 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL_updated.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL_updated.xml index 74fb70c4626c2a4e8c8f22f3fb60edc4c6b2da16..4423fe5d7865b0eb6afd370b27c8e519b3313ebf 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL_updated.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_FULL_updated.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_LNG.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_LNG.xml index 226881994ac6aa543475176f1c12718e507ce690..bb8726c715ad083df8a73e0bcc00c69c651670eb 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_LNG.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_LNG.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_certificationOptions.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_certificationOptions.xml index 6cc98897c7daa5b4ea15cad83fa7bfd3237f348e..af6e9783f8b62d60ce628cc2be1b293fb5fdf101 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_certificationOptions.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_certificationOptions.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_exempted.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_exempted.xml index e8c42c7e40d553e5174954ecec33c48951c6aadf..32bd949e65eb41251297ec6f1365c0de211c53fe 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_exempted.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_exempted.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 E:\QUAM\Workspace\VECTO_quam\VectoCore\VectoCore\Resources\XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_noAirdrag.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_noAirdrag.xml index cd2eb30df69e9b7cb1b40183bfb5317f50538877..f4e5327fe4c834aa67a232849d473dc3b0407a75 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_noAirdrag.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_noAirdrag.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 v:\VectoCore\VectoCore\Resources\XSD/VectoInput.1.0.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_torqueLimits.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_torqueLimits.xml index 09f860af295d433375a2dc507ca8abcf76ff8b5b..d4194a025de16732555855bc65dd2e6f1fcd5a2f 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_torqueLimits.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-sample_torqueLimits.xml @@ -3,7 +3,7 @@ <tns:VectoInputDeclaration xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" schemaVersion="1.0" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0" - xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://webgate.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" + xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationInput:v1.0 https://citnet.tech.ec.europa.eu/CITnet/svn/VECTO/trunk/Share/XML/XSD/VectoInput.xsd" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> <Vehicle id="VEH-1234567890"> <Manufacturer>Generic Truck Manufacturer</Manufacturer> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_full-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_full-sample.xml index ed3d84732412752186168dd9ead79fa7fd4d690f..dd906dd093f9f3443e5ee1ad9a81227f47c75574 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_full-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_full-sample.xml @@ -1 +1,93 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType"> <Manufacturer>Some Manufacturer</Manufacturer> <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <Model>Sample Bus Model</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> <AirdragModifiedMultistage>false</AirdragModifiedMultistage> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>II+III</ClassBus> <NumberPassengerSeatsLowerDeck>0</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> <NumberPassengersStandingUpperDeck>10</NumberPassengersStandingUpperDeck> <BodyworkCode>CB</BodyworkCode> <LowEntry>false</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>9500</VehicleLength> <VehicleWidth>2500</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <DoorDriveTechnology>electric</DoorDriveTechnology> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <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>6.31</v2.0:CdxA_0> <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> </v2.0: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>false</Interiorlights> <Dayrunninglights>true</Dayrunninglights> <Positionlights>true</Positionlights> <Brakelights>true</Brakelights> <Headlights>false</Headlights> </LEDLights> </ElectricSystem> <HVAC> <SystemConfiguration>0</SystemConfiguration> <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> <HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment> <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> <DoubleGlazing>false</DoubleGlazing> <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> <WaterElectricHeater>true</WaterElectricHeater> <AirElectricHeater>false</AirElectricHeater> <OtherHeatingTechnology>false</OtherHeatingTechnology> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +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:v2.3" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>3500</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>0</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>10</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>10</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>electric</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Positionlights>true</Positionlights> + <Brakelights>true</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 2-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries01-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries01-sample.xml index b3026591ed53048a8944edba0570ffc82d1e7085..ac8313e475767fdbd08e7080345679deefe4a63d 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries01-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries01-sample.xml @@ -1 +1,55 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 1</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> <VIN>VEH-1234567891</VIN> <Date>2021-01-09T11:00:00Z</Date> <Model>Sample Bus Model 2</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>5000</CorrectedActualMass> <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> <AirdragModifiedMultistage>false</AirdragModifiedMultistage> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>A</ClassBus> <BodyworkCode>CG</BodyworkCode> <LowEntry>true</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>10000</VehicleLength> <VehicleWidth>2600</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <DoorDriveTechnology>pneumatic</DoorDriveTechnology> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <Auxiliaries> <Data xsi:type="CompletedVehicleAuxiliaryDataDeclarationType"> <ElectricSystem> <LEDLights> <Interiorlights>false</Interiorlights> <Dayrunninglights>true</Dayrunninglights> <Headlights>false</Headlights> </LEDLights> </ElectricSystem> <HVAC> <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> <DoubleGlazing>false</DoubleGlazing> <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> <WaterElectricHeater>true</WaterElectricHeater> <OtherHeatingTechnology>false</OtherHeatingTechnology> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" +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:v2.3" +xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" +xmlns:di="http://www.w3.org/2000/09/xmldsig#" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > + <Manufacturer>Some Manufacturer 1</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address 1</ManufacturerAddress> + <VIN>VEH-1234567891</VIN> + <Date>2021-01-09T11:00:00Z</Date> + <Model>Sample Bus Model 2</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>5000</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>10000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>false</AirdragModifiedMultistep> + <ClassBus>A</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <BodyworkCode>CG</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>10000</VehicleLength> + <VehicleWidth>2600</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>true</Dayrunninglights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <AuxiliaryHeaterPower>50</AuxiliaryHeaterPower> + <DoubleGlazing>false</DoubleGlazing> + <SeparateAirDistributionDucts>false</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries02-sample.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries02-sample.xml index 67b138e728e57eed3b0a9b966207dd1d724e0ccd..266e2e08b4556b88b61a374ba33c8c51d59b2fbd 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries02-sample.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_certain_entries02-sample.xml @@ -1 +1,71 @@ -<?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:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 2</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <Model>Sample Bus Model</Model> <LegislativeCategory>M3</LegislativeCategory> <CorrectedActualMass>500</CorrectedActualMass> <NgTankSystem>Compressed</NgTankSystem> <ClassBus>II+III</ClassBus> <NumberPassengerSeatsLowerDeck>0</NumberPassengerSeatsLowerDeck> <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> <BodyworkCode>CB</BodyworkCode> <LowEntry>false</LowEntry> <HeightIntegratedBody>2500</HeightIntegratedBody> <VehicleLength>9500</VehicleLength> <VehicleWidth>2500</VehicleWidth> <EntranceHeight>2000</EntranceHeight> <VehicleDeclarationType>interim</VehicleDeclarationType> <ADAS> <v2.3:EngineStopStart>true</v2.3:EngineStopStart> <v2.3:EcoRollWithoutEngineStop>false</v2.3:EcoRollWithoutEngineStop> <v2.3:EcoRollWithEngineStop>false</v2.3:EcoRollWithEngineStop> <v2.3:PredictiveCruiseControl>none</v2.3:PredictiveCruiseControl> <v2.3:APTEcoRollReleaseLockupClutch>true</v2.3:APTEcoRollReleaseLockupClutch> </ADAS> <Components xsi:type="CompletedVehicleComponentsDeclarationType"> <AirDrag> <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> <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>6.31</v2.0:CdxA_0> <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> </v2.0: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"> <HVAC> <SystemConfiguration>0</SystemConfiguration> <HeatPumpTypeDriverCompartment>none</HeatPumpTypeDriverCompartment> <HeatPumpModeDriverCompartment>heating</HeatPumpModeDriverCompartment> <HeatPumpTypePassengerCompartment>non R-744 2-stage</HeatPumpTypePassengerCompartment> <HeatPumpModePassengerCompartment>cooling</HeatPumpModePassengerCompartment> </HVAC> </Data> </Auxiliaries> </Components> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> +<tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" 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:v2.3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> + <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType"> + <Manufacturer>Some Manufacturer 2</Manufacturer> + <ManufacturerAddress>Some Manufacturer Address 2</ManufacturerAddress> + <VIN>VEH-1234567890</VIN> + <Date>2020-01-09T11:00:00Z</Date> + <Model>Sample Bus Model</Model> + <LegislativeCategory>M3</LegislativeCategory> + <CorrectedActualMass>500</CorrectedActualMass> + <ClassBus>II+III</ClassBus> + <NgTankSystem>Compressed</NgTankSystem> + <NumberPassengerSeatsLowerDeck>0</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>5</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>10</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CB</BodyworkCode> + <LowEntry>false</LowEntry> + <HeightIntegratedBody>2500</HeightIntegratedBody> + <VehicleLength>9500</VehicleLength> + <VehicleWidth>2500</VehicleWidth> + <EntranceHeight>2000</EntranceHeight> + <VehicleDeclarationType>interim</VehicleDeclarationType> + <ADAS xsi:type="ADAS_Conventional_Type"> + <EngineStopStart>true</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + <APTEcoRollReleaseLockupClutch>true</APTEcoRollReleaseLockupClutch> + </ADAS> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <AirDrag> + <v2.0:Data xsi:type="v2.0:AirDragDataDeclarationType" id="CabinX23h"> + <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>6.31</v2.0:CdxA_0> + <v2.0:TransferredCdxA>6.32</v2.0:TransferredCdxA> + <v2.0:DeclaredCdxA>6.34</v2.0:DeclaredCdxA> + </v2.0: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="AUX_Conventional_CompletedBusType"> + <HVAC> + <SystemConfiguration>0</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>none</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypePassengerCompartment> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </v2.0:Vehicle> +</tns:VectoInputDeclaration> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_mandatory_entries.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_mandatory_entries.xml index 4aacbe05c474c42a256799dfea8b4861a8d4ec4e..7bca53ff3c6799c523a6f6c3276053350ed8cc3c 100644 --- a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_mandatory_entries.xml +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/vecto_vehicle-stage_input_only_mandatory_entries.xml @@ -1 +1 @@ -<?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.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob E:\VECTO_DEV\fk_vecto-dev\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="InterimStageInputType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <StateOfCompletion>incomplete</StateOfCompletion> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file +<?xml version="1.0" encoding="UTF-8"?> <tns:VectoInputDeclaration schemaVersion="2.8" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="urn:tugraz:ivt:VectoAPI:DeclarationInput:v2.0" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationJob v:\VectoCore\VectoCore\Resources\XSD/VectoDeclarationJob.xsd"> <v2.0:Vehicle id="VEH-1234567890" xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" > <Manufacturer>Some Manufacturer 3</Manufacturer> <ManufacturerAddress>Some Manufacturer Address 3</ManufacturerAddress> <VIN>VEH-1234567890</VIN> <Date>2020-01-09T11:00:00Z</Date> <VehicleDeclarationType>interim</VehicleDeclarationType> </v2.0:Vehicle> </tns:VectoInputDeclaration> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs index 422e16c9762caf89a0367b3ef515c38e776ade62..cad4740bce7fa4013c6d113f12092b17a5cd1271 100644 --- a/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs +++ b/VectoCore/VectoCoreTest/Utils/CompletedVIF.cs @@ -7,6 +7,7 @@ using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Tests.Models.Simulation; @@ -26,7 +27,7 @@ namespace TUGraz.VectoCore.Tests.Utils var filename = Guid.NewGuid().ToString().Substring(0, 20); var writerAsm = new FileOutputVIFWriter(filename, 0); - var factoryAsm = new SimulatorFactory(ExecutionMode.Declaration, inputDataAsm, writerAsm); + var factoryAsm = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataAsm, writerAsm); var jobContainer = new JobContainer(new MockSumWriter()); jobContainer.AddRuns(factoryAsm); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs index a7d4d39fc436cc5d305c2c5c6ea30ed6dd7e14d4..d159b0a640ea99c8045adb722ccb5589b351ace3 100644 --- a/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs +++ b/VectoCore/VectoCoreTest/Utils/MockDeclarationVehicleInputData.cs @@ -39,7 +39,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public PerSecond EngineIdleSpeed { get; } public bool VocationalVehicle { get; } public bool? SleeperCab { get; } - public bool? AirdragModifiedMultistage { get; } + public bool? AirdragModifiedMultistep { get; } public TankSystem? TankSystem { get; } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get; } public bool ZeroEmissionVehicle { get; } @@ -63,8 +63,16 @@ namespace TUGraz.VectoCore.Tests.Utils { public Meter EntranceHeight { get; } public ConsumerTechnology? DoorDriveTechnology { get; } public VehicleDeclarationType VehicleDeclarationType { get; } + + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + public TableData BoostingLimitations { get; } + public IVehicleComponentsDeclaration Components => this; public XmlNode XMLSource { get; } + public string VehicleTypeApprovalNumber { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } #endregion @@ -83,6 +91,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public IBusAuxiliariesDeclarationData BusAuxiliaries { get; set; } public IElectricStorageSystemDeclarationInputData ElectricStorage { get; set; } public IElectricMachinesDeclarationInputData ElectricMachines { get; set; } + public IIEPCDeclarationInputData IEPC { get; set; } #endregion } @@ -111,12 +120,13 @@ namespace TUGraz.VectoCore.Tests.Utils { public bool Articulated { get; } public Meter Height { get; } public TableData ElectricMotorTorqueLimits { get; } - public TableData MaxPropulsionTorque { get; } + public TableData BoostingLimitations { get; } public Meter Length { get; set; } public Meter Width { get; set; } public Meter EntranceHeight { get; } public ConsumerTechnology? DoorDriveTechnology { get; } public VehicleDeclarationType VehicleDeclarationType { get; } + public Watt MaxNetPower2 { get; } public string ExemptedTechnology { get; } public RegistrationClass? RegisteredClass { get; set; } @@ -131,6 +141,10 @@ namespace TUGraz.VectoCore.Tests.Utils { IVehicleComponentsDeclaration IVehicleDeclarationInputData.Components => null; public XmlNode XMLSource { get; } + public string VehicleTypeApprovalNumber { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } public IVehicleComponentsEngineering Components => this; public string Identifier { get; } @@ -146,7 +160,7 @@ namespace TUGraz.VectoCore.Tests.Utils { public PerSecond EngineIdleSpeed { get; } public bool VocationalVehicle { get; } public bool? SleeperCab { get; } - public bool? AirdragModifiedMultistage { get; } + public bool? AirdragModifiedMultistep { get; } public TankSystem? TankSystem { get; } IAdvancedDriverAssistantSystemDeclarationInputData IVehicleDeclarationInputData.ADAS => null; @@ -179,6 +193,8 @@ namespace TUGraz.VectoCore.Tests.Utils { public IElectricStorageSystemEngineeringInputData ElectricStorage { get; set; } public IElectricMachinesEngineeringInputData ElectricMachines { get; set; } - #endregion - } + Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> IVehicleDeclarationInputData.ElectricMotorTorqueLimits => throw new NotImplementedException(); + + #endregion + } } \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs index 4f7e5538a9cbcf608d2e2972cba2b1c4f7eef95d..8d7345564e761c2aa5671d531ad1b1ea9a9ce6b0 100644 --- a/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs +++ b/VectoCore/VectoCoreTest/Utils/MockSimulationDataFactory.cs @@ -216,6 +216,7 @@ namespace TUGraz.VectoCore.Tests.Utils public IBusAuxiliariesDeclarationData BusAuxiliaries { get; } public IElectricStorageSystemDeclarationInputData ElectricStorage { get; } public IElectricMachinesDeclarationInputData ElectricMachines { get; } + public IIEPCDeclarationInputData IEPC { get; } } public class MockVehicleTestInputData : IVehicleDeclarationInputData @@ -248,7 +249,7 @@ namespace TUGraz.VectoCore.Tests.Utils public PerSecond EngineIdleSpeed { get; } public bool VocationalVehicle { get; } public bool? SleeperCab { get; } - public bool? AirdragModifiedMultistage { get; } + public bool? AirdragModifiedMultistep { get; } public TankSystem? TankSystem { get; } public IAdvancedDriverAssistantSystemDeclarationInputData ADAS { get; } public bool ZeroEmissionVehicle { get; } @@ -272,6 +273,12 @@ namespace TUGraz.VectoCore.Tests.Utils public Meter EntranceHeight { get; } public ConsumerTechnology? DoorDriveTechnology { get; } public VehicleDeclarationType VehicleDeclarationType { get; } + public Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> ElectricMotorTorqueLimits { get; } + public TableData BoostingLimitations { get; } + public string VehicleTypeApprovalNumber { get; } + public ArchitectureID ArchitectureID { get; } + public bool OvcHev { get; } + public Watt MaxChargingPower { get; } public IVehicleComponentsDeclaration Components { get; set; } public XmlNode XMLSource { get; } } diff --git a/VectoCore/VectoCoreTest/Utils/PathHelperTest.cs b/VectoCore/VectoCoreTest/Utils/PathHelperTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..b7195dc91739d73ba5084d92614a95099736066e --- /dev/null +++ b/VectoCore/VectoCoreTest/Utils/PathHelperTest.cs @@ -0,0 +1,85 @@ + +using System; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCore.Utils; + +namespace TUGraz.VectoCore.Tests.Utils +{ + [TestFixture] + public class PathHelperTest + { + [Test] + public void RelativePathTest1() + { + var path = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\PrimaryAndStageInput\\"; + var relativeTo = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\"; + + + + var result = PathHelper.GetRelativePath(relativeTo, path); + + Assert.AreEqual("PrimaryAndStageInput", result ); + + Assert.AreEqual(path, PathHelper.GetAbsolutePath(relativeTo, result)); + + } + + [Test] + public void RelativePathTest2() + { + var path = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\PrimaryAndStageInput\\file1.file"; + var relativeTo = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\file3.file"; + + + + var result = PathHelper.GetRelativePath(relativeTo, path); + + Assert.AreEqual("PrimaryAndStageInput\\file1.file", result); + + Assert.AreEqual(path, PathHelper.GetAbsolutePath(relativeTo, result)); + + } + [Test] + public void RelativePathTest3() + { + var path = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\file.file"; + var relativeTo = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\file3.file"; + + + + var result = PathHelper.GetRelativePath(relativeTo, path); + + Assert.AreEqual("..\\..\\..\\..\\file.file", result); + Assert.AreEqual(path, PathHelper.GetAbsolutePath(relativeTo, result)); + + } + + + [Test] + public void RelativePathDifferentDrives() + { + var path = + "D:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\PrimaryAndStageInput\\"; + var relativeTo = + "C:\\Users\\Harry\\source\\repos\\vecto-dev\\VectoCore\\VectoCoreTest\\TestData\\Integration\\Buses\\"; + + + Assert.Throws<ArgumentException>( + () => { + PathHelper.GetRelativePath(path, relativeTo); + }); + } + + + + + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/VectoCoreTest.csproj b/VectoCore/VectoCoreTest/VectoCoreTest.csproj index ce31ac9b546b526573073bdd7ecef519feff9a2e..052309dd41d4347025229b653143db65209000e7 100644 --- a/VectoCore/VectoCoreTest/VectoCoreTest.csproj +++ b/VectoCore/VectoCoreTest/VectoCoreTest.csproj @@ -91,8 +91,9 @@ </Choose> <ItemGroup> <Compile Include="FileIO\JsonReadHybridTest.cs" /> - <Compile Include="Integration\ADAS\ADASTestsPEV.cs" /> + <Compile Include="Integration\ADAS\ADASTestsConventional.cs" /> <Compile Include="Integration\ADAS\ADASTestsHEV.cs" /> + <Compile Include="Integration\ADAS\ADASTestsPEV.cs" /> <Compile Include="Integration\AMTShiftStrategyTests.cs" /> <Compile Include="Algorithms\CSVDigestValueTest.cs" /> <Compile Include="Algorithms\MeanShiftClusteringTest.cs" /> @@ -103,7 +104,6 @@ <Compile Include="FileIO\JsonReadTest.cs" /> <Compile Include="FileIO\SimulationDataReaderTest.cs" /> <Compile Include="GraphProgram.cs" /> - <Compile Include="Integration\ADAS\ADASTestsConventional.cs" /> <Compile Include="Integration\ATPowerTrain.cs" /> <Compile Include="Integration\BatteryElectric\BatteryElectricTest.cs" /> <Compile Include="Integration\BusAuxiliaries\AuxDemandTest.cs" /> @@ -241,6 +241,8 @@ <Compile Include="Utils\VectoMathTest.cs" /> <Compile Include="XML\XMLCompleteBusReaderTest.cs" /> <Compile Include="XML\XMLDeclarationInputTest.cs" /> + <Compile Include="XML\XMLDeclarationInputv24.cs" /> + <Compile Include="XML\XMLDeclarationInputv24VehicleDataTest.cs" /> <Compile Include="XML\XMLDeclarationReaderVersionsTest.cs" /> <Compile Include="XML\XMLEngineeringInputRefTest.cs" /> <Compile Include="XML\XMLEngineeringInputSingleTest.cs" /> @@ -265,15 +267,15 @@ <None Include="TestData\BatteryElectric\GenericVehicleB2\BatteryElectricVehicle_Cont30kW.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\BatteryElectric\GenericVehicleB2\BEV_ENG_BusAux.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> <None Include="TestData\BatteryElectric\GenericVehicleB2\BEV_ENG.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\BatteryElectric\GenericVehicleB2\BEV_ENG_3speed.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> + <None Include="TestData\BatteryElectric\GenericVehicleB2\BEV_ENG_BusAux.vecto"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> <None Include="TestData\BatteryElectric\GenericVehicleB2\BEV_ENG_Cont30kW.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> @@ -1724,19 +1726,19 @@ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\325kW.vfld"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\325kW.vmap"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\APT-S Generic TqMax1200.vgbx"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Axle_i6-5.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Default.vrlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\ElectricMotor\Inputdaten P3 Group 5\Electric components\GenericBattery_10kWh_658V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> @@ -1766,88 +1768,88 @@ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Engine_325kW_12.7l.veng"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_1.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_1_i=3-49.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_2_i=1-86.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_3_i=1-41.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_4_i=1.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_5_i=0-75.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Gear_6_i=0-65.vtlm"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericBattery_10kWh_658V.vbat"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericBattery_10kWh_658V.vbatr"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericBattery_10kWh_658V.vbatv"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericDrag_140kW_936Nm.vemd"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericEMotor_140kW_900Nm.vemp"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericEMotor_140kW_936Nm.vem"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\GenericMap_140kW_936Nm.vemo"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Group5_HEV.vveh"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Hybrid_Parameters.vhctl"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\MaxCurrent.vimax"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5_325kW.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5_325kW_noESS.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5_LimitEMTorqueDrive.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5_LimitVehiclePropTq.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\P4 APT Group 5_noESS.vecto"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\ShiftParameters.vtcu"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\TorqueConverter_Serial_TqMax1200.vtcc"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Transmission\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Truck.vacc"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Hybrids\GenericVehicle_Group5_P4_APT\Vehicle\EM_TorqueLimits.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> @@ -2278,2282 +2280,2300 @@ <None Include="TestData\Hybrids\Input CityBus 6x2_HEV_P2\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Class5_Tractor.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Class5_Tractor_ENG.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\325kW.vfld"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl0.8.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\325kW.vmap"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Alt.vaux"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_Stop.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS++.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS+.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Class5_Tractor.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS--.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Class5_Tractor_ENG.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS-.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Default.vrlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_Uh0.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl0.8.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.3.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.5.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_Stop.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS++.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS+.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS--.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS-.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_Uh0.1.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.4.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.7.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbat"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbatr"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseA.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbatv"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseB.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbat"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseC.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbatr"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseD.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbatv"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseE.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericDrag_140kW_936Nm.vemd"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseF.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericEMotor_140kW_900Nm.vemp"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseG.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericEMotor_140kW_936Nm.vem"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseH.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericMap_140kW_936Nm.vemo"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseI.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Hybrid_Parameters.vhctl"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseJ.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Long_Haul+ES.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\MaxCurrent_2240.vimax"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\MaxCurrent_280.vimax"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_NoADAS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Truck.vacc"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_NoADAS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\325kW.vfld"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC12.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\325kW.vmap"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC12.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Alt.vaux"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CrestCoast1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_NoADAS.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CrestCoast2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_NoADAS.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P25_PCC123EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P25_PCC123EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P4_PCC123EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P4_PCC123EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P3_PCC123EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P3_PCC123EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC12.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC12.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vecto"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vveh"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CrestCoast1.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CrestCoast2.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Default.vrlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbat"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbatr"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbatv"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbat"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbatr"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbatv"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericDrag_140kW_936Nm.vemd"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericEMotor_140kW_900Nm.vemp"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericEMotor_140kW_936Nm.vem"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericMap_140kW_936Nm.vemo"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseA.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseB.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseC.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseD.vdri"> + <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseE.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseF.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseG.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseH.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseI.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseJ.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Class5_Tractor.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Hybrid_Parameters.vhctl"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Class5_Tractor_ENG.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl0.8.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Long_Haul+ES.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\MaxCurrent_2240.vimax"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_Stop.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\MaxCurrent_280.vimax"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS++.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS+.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS--.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_TS-.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.1_Uh0.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.4.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\DriveDhSl1.7.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.veng"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.vfld"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.vmap"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_10kWh_658V.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericBattery_80kWh_658V.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericDrag_140kW_936Nm.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericEMotor_140kW_900Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericEMotor_140kW_936Nm.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\GenericMap_140kW_936Nm.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Hybrid_Parameters.vhctl"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Default.vrlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_drag.vemd"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_fld.vemp"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_Map.vemo"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\MaxCurrent_2240.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\MaxCurrent_280.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5EcoRollEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseA.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseB.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseC.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseD.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseE.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Group5_ICE_fld.vfld"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseF.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Group5_ICE_Map.vmap"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseG.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\HEV_Parameter.vhctl"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseH.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\LongHaul_mod5_id_27.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseI.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\MaxCurrent.vimax"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CaseJ.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_12.7l.veng"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_EM.vem"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_REESS.vreess"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_rep_Payload.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_EcoRollWithoutEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_s2c0_rep_Payload.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_NoADAS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_Torque_limit_2400Nm.vtqp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_NoADAS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\REESS_Internal_Resistance.vbatr"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P25_PCC123EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\REESS_SOC_curve.vbatv"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P25_PCC123EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P3_PCC123EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P3_PCC123EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Axle_4x2_LH.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P4_PCC123EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Bus.vacc"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_P4_PCC123EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\DEFAULT_2-Cylinder_2-Stage_398ccm.ACMP"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC12.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\DRIVER_truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC12.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_drag.vemd"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_drag_P0vsP1.vemd"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld.vemp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld_P0vsP1.vemp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld_P0vsP1_lim50Nm.vemp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_Map.vemo"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Class5_PCC123EcoRollWithoutEngineStop.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_MapP0vsP1.vemo"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CrestCoast1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Gear_direct.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\CrestCoast2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Gear_indirect.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vbatr"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vbatv"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vreess"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery_1kWh.vreess"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery_small.vreess"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericEMotor.vem"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericEMotor_P0vsP1.vem"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_7.7l.veng"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_fld.vfld"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_Map.vmap"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\HEV_Parameter.vhctl"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\MaxCurrent.vimax"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\NonSmart_BusAux_ESfrom HV.vaux"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\P1_CityBus.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\P1_Group31a.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Smart_BusAux.vaux"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_10kWh_658V.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Smart_BusAux_ESfrom HV.vaux"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\TorqueConverter.vtcc"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Torque_limit_1250Nm.vtqp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericBattery_80kWh_658V.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Torque_limit_P0vsP1.vtqp"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericDrag_140kW_936Nm.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Urban.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericEMotor_140kW_900Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\VEH_retarder_cardanshaft.vrlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericEMotor_140kW_936Nm.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\325kW.vfld"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\GenericMap_140kW_936Nm.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\325kW.vmap"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Hybrid_Parameters.vhctl"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Alt.vaux"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Axle.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\MaxCurrent_2240.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseJE4.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\MaxCurrent_280.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_NoADAS.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group5PCCEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_NoADAS.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC12.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC12.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC123.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC123.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E3_PCC123.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E3_PCC123.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E4_PCC123.vecto"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E4_PCC123.vveh"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CrestCoast1.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CrestCoast2.vdri"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Default.vrlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Emo_325kW_2170Nm.vem"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Engine_220kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh.vbatr"> + <None Include="TestData\Integration\ADAS-HEV\Group9_RigidTruck_AT\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh.vbatv"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh_750V.vbat"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericDrag.vemd"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericDrag_125kW_485Nm.vemd"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_drag.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm.vem"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_fld.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm.vemp"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\EM_Map.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm_Cont30kW.vem"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericMap_125kW_485Nm.vemo"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\generic_e_flc_325kW_2170Nm.vemp"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\generic_e_mot_325kW_2172Nm.vemo"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseA.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseB.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseC.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseD.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseE.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseF.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseG.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseH.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseI.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Group5_ICE_fld.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseJ.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Group5_ICE_Map.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\HEV_Parameter.vhctl"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\LongHaul_mod5_id_27.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Long_Haul+ES.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\MaxCurrent.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\MaxCurrent.vimax"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_EM.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_REESS.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_rep_Payload.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_s2c0_rep_Payload.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\P2_Group5_Torque_limit_2400Nm.vtqp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\REESS_Internal_Resistance.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\REESS_SOC_curve.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1484\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Axle_4x2_LH.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Bus.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\DEFAULT_2-Cylinder_2-Stage_398ccm.ACMP"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\DRIVER_truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_drag.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_drag_P0vsP1.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.veng"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.vfld"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld_P0vsP1.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.vmap"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_fld_P0vsP1_lim50Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_Map.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\EM_MapP0vsP1.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Gear_direct.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Gear_indirect.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery_1kWh.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericBattery_small.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericEMotor.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\E4_Group 5 LH_ll.vecto"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\GenericEMotor_P0vsP1.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\E4_Group5_LH_ll.vveh"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_7.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\Generic Battery 700V_1000kWh.vreess"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_fld.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbat"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Group31a_Map.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbatr"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\HEV_Parameter.vhctl"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbatv"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\MaxCurrent.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericDrag_157W_500Nm.vemd"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\NonSmart_BusAux_ESfrom HV.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericEMotor_157kW_500Nm.vem"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\P1_CityBus.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericEMotor_157kW_500Nm.vemp"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\P1_Group31a.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericMap_157kW_500Nm.vemo"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Smart_BusAux.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\LongHaul_mod5_id_2.vdri"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Smart_BusAux_ESfrom HV.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\MaxCurrent.vimax"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\TorqueConverter.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\ShiftParameters.vtcu"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Torque_limit_1250Nm.vtqp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\Truck.vacc"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Torque_limit_P0vsP1.vtqp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\325kW.vfld"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\Urban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\325kW.vmap"> + <None Include="TestData\Integration\ADAS-HEV\VECTO-1493\VEH_retarder_cardanshaft.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Alt.vaux"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Axle.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_CrestCoast2.vmod"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC12.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseA.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseB.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123EcoSS.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseC.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC12.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseD.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC123.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseE.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC123EcoSS.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseF.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Coach_short_HW.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseG.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\CrestCoast1.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseH.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\CrestCoast2.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseI.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Default.vrlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseJ.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CaseJE4.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_NoADAS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_NoADAS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC12.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC12.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E2_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E3_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E3_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E4_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Class5_E4_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CrestCoast1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\CrestCoast2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseA.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseB.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Emo_325kW_2170Nm.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseC.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseD.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseE.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseF.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseG.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseH.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseI.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseJ.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Long_Haul+ES.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS\Group5PCCEng\Truck.vacc"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\250kW.vfld"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\250kW.vmap"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Axle_Coach.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData.vaux"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericBattery_243kWh_750V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartES-SmartPS.vaux"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericDrag.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartES.vaux"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericDrag_125kW_485Nm.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartPS.vaux"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Default.vrlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\DEFAULT_3-Cylinder_2-Stage_598ccm.ACMP"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericEMotor_125kW_485Nm_Cont30kW.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Driver.vacc"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\GenericMap_125kW_485Nm.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Engine_250kW_7.7l.veng"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\generic_e_flc_325kW_2170Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\generic_e_mot_325kW_2172Nm.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\MaxCurrent.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group5PCCEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\Interurban.vdri"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartES-SmartPS.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartES.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartPS.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\EngineeringMode\MT_6_Bus.vgbx"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX_mixed.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_AT-P.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_42-33b.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_41-32b_AT-P.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_42-33b.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_41-32b.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\Buses\SingleBus.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\175kW.vfld"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Engine_220kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\175kW.vmap"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Axle_4x2.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Axle_4x2_orig.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_DECL.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_NoAirdrag.vveh"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_NoAirdrag_DECL.vecto"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Engine_175kW_6.8l.veng"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\Group9_RigidTruck_AT\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\E4_Group 5 LH_ll.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\E4_Group5_LH_ll.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\Generic Battery 700V_1000kWh.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbat"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\MT_6.vgbx"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\AMT_12.vgbx"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericBattery_PEV_700V.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericDrag_157W_500Nm.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Default.vrlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericEMotor_157kW_500Nm.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_drag.vemd"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericEMotor_157kW_500Nm.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_fld.vemp"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\GenericMap_157kW_500Nm.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_Map.vemo"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\LongHaul_mod5_id_2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_1.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\MaxCurrent.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_10.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\ShiftParameters.vtcu"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_11.vtlm"> + <None Include="TestData\Integration\ADAS-PEV\VECTO-1483\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_12.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_2.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_3.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_4.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_5.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_6.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_7.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_8.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_CrestCoast2.vmod"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_9.vtlm"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC12.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Group5_ICE_fld.vfld"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Group5_ICE_Map.vmap"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_ENG_PCC123EcoSS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\HEV_Parameter.vhctl"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC12.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\LongHaul_mod5_id_2.vdri"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC123.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\MaxCurrent.vimax"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Class5_Tractor_PCC123EcoSS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5.vveh"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Coach_short_HW.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_12.7l.veng"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\CrestCoast1.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_EM.vem"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\CrestCoast2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_ESSoff.vveh"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_REESS.vreess"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload.vecto"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload_ESSoff.vecto"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\REESS_Internal_Resistance.vbatr"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\REESS_SOC_curve.vbatv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Truck.vacc"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\175kW.vfld"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\175kW.vmap"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\AccelerationReserveLookup.csv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\AT-Shift.vgbs"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_PS.vecto"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_PS.vveh"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_Ser.vecto"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_Ser.vveh"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseA.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Driver.vacc"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseB.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Engine_175kW_6.8l.veng"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseC.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\GearboxPowerSplit.vgbx"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseD.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\GearboxSerial.vgbx"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseE.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearshiftLinesVoith.vgsv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseF.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Interurban.vdri"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseG.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\PredictionTimeLookup.csv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseH.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\RegionalDelivery.vdri"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseI.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareEngineSpeedHigh.csv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Group5Eng_CaseJ.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareIdleLow.csv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareTq99L.csv"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShiftParameters.vtcu"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Long_Haul+ES.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\TorqueConverter.vtcc"> + <None Include="TestData\Integration\ADAS\Group5PCCEng\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\TorqueConverterPowerSplit.vtcc"> + <None Include="TestData\Integration\Buses\EngineeringMode\250kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Urban.vdri"> + <None Include="TestData\Integration\Buses\EngineeringMode\250kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\UrbanDelivery.vdri"> + <None Include="TestData\Integration\Buses\EngineeringMode\Axle_Coach.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\175kW.vfld"> + <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\175kW.vmap"> + <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartES-SmartPS.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\AccelerationReserveLookup.csv"> + <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartES.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\AT-Shift.vgbs"> + <None Include="TestData\Integration\Buses\EngineeringMode\BusAuxData_SmartPS.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_PS.vecto"> + <None Include="TestData\Integration\Buses\EngineeringMode\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_PS.vveh"> + <None Include="TestData\Integration\Buses\EngineeringMode\DEFAULT_3-Cylinder_2-Stage_598ccm.ACMP"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_Ser.vecto"> + <None Include="TestData\Integration\Buses\EngineeringMode\Driver.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_Ser.vveh"> + <None Include="TestData\Integration\Buses\EngineeringMode\Engine_250kW_7.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Driver.vacc"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Engine_175kW_6.8l.veng"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearboxPowerSplit.vgbx"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearboxSerial.vgbx"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Interurban.vdri"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\PredictionTimeLookup.csv"> + <None Include="TestData\Integration\Buses\EngineeringMode\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\RegionalDelivery.vdri"> + <None Include="TestData\Integration\Buses\EngineeringMode\Interurban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareEngineSpeedHigh.csv"> + <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareIdleLow.csv"> + <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareTq99L.csv"> + <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartES-SmartPS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShiftParameters.vtcu"> + <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartES.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\TorqueConverter.vtcc"> + <None Include="TestData\Integration\Buses\EngineeringMode\InterurbanBus_ENG_BusAux_SmartPS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\TorqueConverterPowerSplit.vtcc"> + <None Include="TestData\Integration\Buses\EngineeringMode\MT_6_Bus.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Urban.vdri"> + <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX_mixed.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\UrbanDelivery.vdri"> + <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_ES-AUX.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\325kW.vfld"> + <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b_AT-P.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\325kW.vmap"> + <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_41-32b.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\AccelerationReserveLookup.csv"> + <None Include="TestData\Integration\Buses\FactorMethod\CompletedBus_42-33b.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Alt.vaux"> + <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_41-32b_AT-P.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\AMT_12.vgbx"> + <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_42-33b.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Integration\Buses\FactorMethod\SingleBus_41-32b.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor.vveh"> + <None Include="TestData\Integration\Buses\SingleBus.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor_ENG_FC.vecto"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\175kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor_ENG_TCU.vecto"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\175kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Default.vrlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Axle_4x2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Engine_325kW_12.7l.veng"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Axle_4x2_orig.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_1.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_10.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_DECL.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_11.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_NoAirdrag.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_12.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Class2_RigidTruck_NoAirdrag_DECL.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_2.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Engine_175kW_6.8l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_3.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_4.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_5.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_6.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_7.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_8.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_9.vtlm"> + <None Include="TestData\Integration\DeclarationMode\Class2_RigidTruck_4x2_ESS\MT_6.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\LAC-DF-Vdrop.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\LAC-DF-Vtarget.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\PredictionTimeLookup.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareEngineSpeedHigh.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_drag.vemd"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareIdleLow.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_fld.vemp"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareTq99L.csv"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\EM_Map.vemo"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShiftParameters.vtcu"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Truck.vacc"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="packages.config" /> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_11.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck.veng"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck.vfld"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck.vmap"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\12t Delivery Truck Efficiency.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_high.veng"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_Ang_Efficiency.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_high.vfld"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_NoAng.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Group5_ICE_fld.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t CoachNoAng.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Group5_ICE_Map.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_smallLossMap.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\HEV_Parameter.vhctl"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck AngleEfficiency.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\LongHaul_mod5_id_2.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck_NoAng.vveh"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\MaxCurrent.vimax"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\AT-Shift.vgbs"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\Engine.veng"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\FCMap.vmap"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_EM.vem"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\FullLoad.vfld"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_ESSoff.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\Gearbox.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_REESS.vreess"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\GearboxPowerSplit.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\GearboxSerial.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\P1_Group5_s2c0_rep_Payload_ESSoff.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\GearboxSerialDualTCBus.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\REESS_Internal_Resistance.vbatr"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\GearboxSerialDualTC.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\REESS_SOC_curve.vbatv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\Gearbox_v5.vgbx"> + <None Include="TestData\Integration\EngineeringMode\P1_Group5_AMT\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\TorqueConverterPowerSplit.vtcc"> + <None Include="TestData\Integration\Multistage\newVifCompletedConventional-noADAS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AT_GBX\TorqueConverter.vtcc"> + <None Include="TestData\Integration\Multistage\newVifCompletedConventional.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Class4_40t_Long_Haul_Truck.vveh"> + <None Include="TestData\Integration\Multistage\newVifExempted-noTPMLM.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck AxleEfficiency.vgbx"> + <None Include="TestData\Integration\Multistage\newVifExempted.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck GearEfficiency.vgbx"> + <None Include="TestData\Integration\Multistage\newVifExemptedIncomplete.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AxleInvalid.vtlm"> + <None Include="TestData\Integration\Multistage\newVifInterimDiesel.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AxleValid.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\175kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AxleGearInvalidRange.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\175kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\AxleGearValidRange.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\AccelerationReserveLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_IncPT1.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\AT-Shift.vgbs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach_IncPT1.veng"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_PS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\limited.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_PS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Axle 40t Truck.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_Ser.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Gearbox.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\CityBus_AT_Ser.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach Engine.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Driver.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach LessThanTwoGears.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Engine_175kW_6.8l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\GearboxPowerSplit.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.vveh"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\GearboxSerial.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.vveh" /> - <None Include="TestData\Components\24t CoachInterpolated.vmap"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearshiftLinesVoith.vgsv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck.veng"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Interurban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\PredictionTimeLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\RegionalDelivery.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck.vmap"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareEngineSpeedHigh.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\40t_Long_Haul_Truck.vveh"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareIdleLow.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Axle.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShareTq99L.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Direct Gear.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\ShiftParameters.vtcu"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t_Coach_ALT.vaux"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\TorqueConverter.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Coach.vacc"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\TorqueConverterPowerSplit.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\FullLoadCurve insufficient columns.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\Urban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\FullLoadCurve wrong header.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_FCOpt\UrbanDelivery.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\FullLoadCurve no header.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\175kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\FullLoadCurve insufficient entries.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\175kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Indirect Gear.vtlm" /> - <None Include="TestData\Components\AngleGear.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\AccelerationReserveLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Retarder.vrlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\AT-Shift.vgbs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\1-Gear-Test-dist.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_PS.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach time based short.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_PS.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Truck.vacc"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_Ser.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach_24t_xshort.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\CityBus_AT_Ser.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\LongHaul_short.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Driver.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\LOT2_rural Engine Only.vmod"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Engine_175kW_6.8l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach Engine Only short.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearboxPowerSplit.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach First Cycle only.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\GearboxSerial.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Indirect Gear.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Interurban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\Retarder.vrlm"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\PredictionTimeLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\ShiftPolygons.vgbs"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\RegionalDelivery.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach Engine Only FullLoad.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareEngineSpeedHigh.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach Engine Only Paux_var-dt.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareIdleLow.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach time based.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShareTq99L.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach Engine Only Paux.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\ShiftParameters.vtcu"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Cycle time field missing.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\TorqueConverter.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\TorqueConverterPowerSplit.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.veng"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\Urban.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\CityBus_AT_GSVoith\UrbanDelivery.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Components\24t Coach.vmap"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\325kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Coach Engine Only.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\325kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Cycles\Regional_Delivery.vdri"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\AccelerationReserveLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.v2.vsum"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Alt.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vecto"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.veng"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Axle_4x2_Tractor.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor_ENG_FC.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vmap"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Class5_Tractor_ENG_TCU.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vveh"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Default.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Axle.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Engine_325kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Direct Gear.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Indirect Gear.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Retarder.vrlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\324kW.vfld"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\350kW.vmap"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\AMT_12.vgbx"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Axle_4x2.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_4.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Class9_RigidTruck.vveh"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_5.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Class9_RigidTruck_DECL.vecto"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_6.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Engine_324kW_12.7l.veng"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_7.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_1.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_8.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_10.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_11.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\LAC-DF-Vdrop.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_12.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\LAC-DF-Vtarget.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_2.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\PredictionTimeLookup.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_3.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareEngineSpeedHigh.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_4.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareIdleLow.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_5.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShareTq99L.csv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_6.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\ShiftParameters.vtcu"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_7.vtlm"> + <None Include="TestData\Integration\ShiftStrategyV2\Class5_Tractor_4x2\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_8.vtlm"> + <None Include="packages.config" /> + <None Include="Properties\Settings.settings"> + <Generator>SettingsSingleFileGenerator</Generator> + <LastGenOutput>Settings.Designer.cs</LastGenOutput> + </None> + <None Include="TestData\Components\12t Delivery Truck.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_9.vtlm"> + <None Include="TestData\Components\12t Delivery Truck.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Retarder.vrlm"> + <None Include="TestData\Components\12t Delivery Truck.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vcdv"> + <None Include="TestData\Components\12t Delivery Truck.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vecto"> + <None Include="TestData\Components\12t Delivery Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.veng"> + <None Include="TestData\Components\12t Delivery Truck Efficiency.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vfld"> + <None Include="TestData\Components\24t Coach_high.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vgbx"> + <None Include="TestData\Components\24t Coach_Ang_Efficiency.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vmap"> + <None Include="TestData\Components\24t Coach_high.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vveh"> + <None Include="TestData\Components\24t Coach_NoAng.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach_Coach.vmod"> + <None Include="TestData\Components\24t CoachNoAng.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach_LOT2_rural Engine Only.vmod"> + <None Include="TestData\Components\24t Coach_smallLossMap.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t_Coach_ALT.vaux"> + <None Include="TestData\Components\40t_Long_Haul_Truck AngleEfficiency.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Axle.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck_NoAng.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach Engine Only.vdri"> + <None Include="TestData\Components\AT_GBX\AT-Shift.vgbs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach.vacc"> + <None Include="TestData\Components\AT_GBX\Engine.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach.vdri"> + <None Include="TestData\Components\AT_GBX\FCMap.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Direct Gear.vtlm"> + <None Include="TestData\Components\AT_GBX\FullLoad.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Indirect Gear.vtlm"> + <None Include="TestData\Components\AT_GBX\Gearbox.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Retarder.vrlm"> + <None Include="TestData\Components\AT_GBX\GearboxPowerSplit.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\ShiftPolygons.vgbs"> + <None Include="TestData\Components\AT_GBX\GearboxSerial.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\325kW.vfld"> + <None Include="TestData\Components\AT_GBX\GearboxSerialDualTCBus.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\325kW.vmap"> + <None Include="TestData\Components\AT_GBX\GearboxSerialDualTC.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Alt.vaux"> + <None Include="TestData\Components\AT_GBX\Gearbox_v5.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\AMT_12.vgbx"> + <None Include="TestData\Components\AT_GBX\TorqueConverterPowerSplit.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Components\AT_GBX\TorqueConverter.vtcc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123.vecto"> + <None Include="TestData\Components\Class4_40t_Long_Haul_Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC12.vecto"> + <None Include="TestData\Components\40t_Long_Haul_Truck AxleEfficiency.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC123.vveh"> + <None Include="TestData\Components\40t_Long_Haul_Truck GearEfficiency.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_PCC12.vveh"> + <None Include="TestData\Components\AxleInvalid.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_NoADAS.vveh"> + <None Include="TestData\Components\AxleValid.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Class5_NoADAS.vecto"> + <None Include="TestData\Components\AxleGearInvalidRange.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CrestCoast2.vdri"> + <None Include="TestData\Components\AxleGearValidRange.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Default.vrlm"> + <None Include="TestData\Components\24t Coach_IncPT1.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CrestCoast1.vdri"> + <None Include="TestData\Components\24t Coach_IncPT1.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Components\limited.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_1.vtlm"> + <None Include="TestData\Components\Axle 40t Truck.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_10.vtlm"> + <None Include="TestData\Components\Gearbox.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_11.vtlm"> + <None Include="TestData\Components\24t Coach Engine.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_12.vtlm"> + <None Include="TestData\Components\24t Coach LessThanTwoGears.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_2.vtlm"> + <None Include="TestData\Components\24t Coach.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_3.vtlm"> + <None Include="TestData\Components\24t Coach.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_4.vtlm"> + <None Include="TestData\Components\24t Coach.vveh" /> + <None Include="TestData\Components\24t CoachInterpolated.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_5.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_6.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_7.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_8.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Gear_9.vtlm"> + <None Include="TestData\Components\40t_Long_Haul_Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseJ.vdri"> + <None Include="TestData\Components\Axle.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseI.vdri"> + <None Include="TestData\Components\Direct Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseH.vdri"> + <None Include="TestData\Components\24t_Coach_ALT.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseG.vdri"> + <None Include="TestData\Components\Coach.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseF.vdri"> + <None Include="TestData\Components\FullLoadCurve insufficient columns.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseE.vdri"> + <None Include="TestData\Components\FullLoadCurve wrong header.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseD.vdri"> + <None Include="TestData\Components\FullLoadCurve no header.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseC.vdri"> + <None Include="TestData\Components\FullLoadCurve insufficient entries.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseB.vdri"> + <None Include="TestData\Components\Indirect Gear.vtlm" /> + <None Include="TestData\Components\AngleGear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\CaseA.vdri"> + <None Include="TestData\Components\Retarder.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Cycles\1-Gear-Test-dist.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Cycles\Coach time based short.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Long_Haul+ES.vdri"> + <None Include="TestData\Components\Truck.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5PCCEng\Truck.vacc"> + <None Include="TestData\Cycles\Coach_24t_xshort.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\APT-S Generic TqMax1200.vgbx"> + <None Include="TestData\Cycles\LongHaul_short.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Axle_i6-5.vtlm"> + <None Include="TestData\Cycles\LOT2_rural Engine Only.vmod"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_TC.vecto"> + <None Include="TestData\Cycles\Coach Engine Only short.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Class_9_RigidTruck_AT_Eng_Neutral.vecto"> + <None Include="TestData\Cycles\Coach First Cycle only.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.2.vdri"> + <None Include="TestData\Components\Indirect Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.8.vdri"> + <None Include="TestData\Components\Retarder.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_Stop.vdri"> + <None Include="TestData\Components\ShiftPolygons.vgbs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS++.vdri"> + <None Include="TestData\Cycles\Coach Engine Only FullLoad.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS+.vdri"> + <None Include="TestData\Cycles\Coach Engine Only Paux_var-dt.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS--.vdri"> + <None Include="TestData\Cycles\Coach time based.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9_TS-.vdri"> + <None Include="TestData\Cycles\Coach Engine Only Paux.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.8_Uh0.1.vdri"> + <None Include="TestData\Cycles\Cycle time field missing.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl1.9.vdri"> + <None Include="TestData\Cycles\Coach.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\DriveDhSl2.5.vdri"> + <None Include="TestData\Components\24t Coach.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.veng"> + <None Include="TestData\Components\24t Coach.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.vfld"> + <None Include="TestData\Components\24t Coach.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Engine_220kW.vmap"> + <None Include="TestData\Cycles\Coach Engine Only.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_1_i=3-49.vtlm"> + <None Include="TestData\Cycles\Regional_Delivery.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_2_i=1-86.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.v2.vsum"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_3_i=1-41.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_4_i=1.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_5_i=0-75.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Gear_6_i=0-65.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\RigidTruck_6x2_Neutral.vveh"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\RigidTruck_6x2_TC.vveh"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\40t_Long_Haul_Truck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\TorqueConverter_Serial_TqMax1200.vtcc"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Axle.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group9_RigidTruck_AT\Truck.vacc"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Direct Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\325kW.vfld"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Indirect Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\325kW.vmap"> + <None Include="TestData\Generic Vehicles\Declaration Mode\40t Long Haul Truck\Retarder.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Alt.vaux"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\324kW.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\AMT_12.vgbx"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\350kW.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Axle_4x2_Tractor.vtlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\AMT_12.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Class5_Tractor.vveh"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Axle_4x2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Class5_Tractor_ENG.vecto"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Class9_RigidTruck.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Default.vrlm"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Class9_RigidTruck_DECL.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS--.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Engine_324kW_12.7l.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS-.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_1.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS++.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_10.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_TS+.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_11.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_Stop.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_12.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.5.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_2.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl0.8.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_3.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.3.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_4.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_5.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_6.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_7.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_8.vtlm"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Gear_9.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1.vdri"> + <None Include="TestData\Generic Vehicles\Declaration Mode\Class9_RigidTruck_6x2\Retarder.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\DriveDhSl1.1_Uh0.1.vdri"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vcdv"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Engine_325kW_12.7l.veng"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vecto"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_1.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.veng"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_10.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vfld"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_11.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vgbx"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_12.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vmap"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_2.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach.vveh"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_3.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach_Coach.vmod"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_4.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t Coach_LOT2_rural Engine Only.vmod"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_5.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\24t_Coach_ALT.vaux"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_6.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Axle.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_7.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach Engine Only.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_8.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach.vacc"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Gear_9.vtlm"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Coach.vdri"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\LAC-DF-Vdrop.csv"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Direct Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\LAC-DF-Vtarget.csv"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Indirect Gear.vtlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Long_Haul+ES.vdri"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\Retarder.vrlm"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="TestData\Integration\ADAS-Conventional\Group5EcoRollEng\Truck.vacc"> + <None Include="TestData\Generic Vehicles\Engineering Mode\24t Coach\ShiftPolygons.vgbs"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Integration\BusAuxiliaries\24t Coach.vfld"> @@ -6393,7 +6413,7 @@ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> <None Include="TestData\Results\Integration\Coach_DriverStrategy_Drive_50_slope_dec-inc.vmod"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> <None Include="TestData\Results\Integration\job.vsum"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> @@ -6868,19 +6888,22 @@ <Content Include="TestData\Integration\ADAS-Conventional\Group5PCCDecl\Tractor_4x2_vehicle-class-5_5_t_0.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_EcoRoll.xml"> + <Content Include="TestData\Integration\ADAS-Conventional\Group5_EcoRoll.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_EngineStopStart.xml"> + <Content Include="TestData\Integration\ADAS-Conventional\Group5_EcoRollEngineStop.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\ADAS-Conventional\Group5_EcoRollEngineStop.xml"> + <Content Include="TestData\Integration\ADAS-Conventional\Group5_EngineStopStart.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\ADAS-Conventional\Group5_EcoRoll.xml"> + <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_EcoRoll.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\ADAS-Conventional\Group5_EngineStopStart.xml"> + <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_EcoRoll_missingParam.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_EngineStopStart.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="TestData\Integration\ADAS-Conventional\Group9_AT_PCC.xml"> @@ -6968,67 +6991,31 @@ <Content Include="TestData\Integration\DeclarationMode\EngineSpeedTooHigh\vecto_vehicle-sample_9gears.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl+sleeperF.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl+sleeperT.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_axl.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_PEV.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_PEV_2.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_sleeperF.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_sleeperT.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl+SleeperF.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl+SleeperT.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_axl.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_PEV.xml"> + <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_PEV_2.xml"> + <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_nonHEV.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_sleeperF.xml"> + <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\exempted_v2.2.1_sleeperT.xml"> + <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2_nonHEV.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted.xml"> + <Content Include="TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_nonHEV.xml"> + <Content Include="TestData\Integration\Multistage\newVifCompletedConventional.RSLT_CUSTOMER.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2.xml"> + <Content Include="TestData\Integration\Multistage\newVifCompletedConventional.RSLT_MANUFACTURER.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted_v2_nonHEV.xml"> + <Content Include="TestData\Integration\Multistage\newVifCompletedConventional.RSLT_MANUFACTURER_PRIMARY.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry.xml"> + <Content Include="TestData\Integration\Multistage\newVifCompletedConventional.VIF_Report_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="TestData\Integration\VTPMode\GenericVehicle XMLJob PTO\Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml"> @@ -7040,9 +7027,6 @@ <Content Include="TestData\Integration\VTPMode\GenericVehicle XMLJob PTO\Tractor_4x2_vehicle-class-5_Generic vehicle.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\MediumLorries\vecto_vehicle-medium_lorryFWD.xml"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> <Content Include="TestData\Integration\VTPMode\GenericVehicle\CityBus_AT_Ser_2TC.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> @@ -7127,10 +7111,10 @@ <Content Include="TestData\Integration\VTPMode\HeavyBus\vecto_vehicle-completed_heavyBus_34f.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2F.RSLT_MANUFACTURER.xml"> + <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2.RSLT_MANUFACTURER.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2F.xml"> + <Content Include="TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="TestData\Jobs\Tractor_4x2_vehicle-class-5_Generic vehicle.xml"> @@ -7205,6 +7189,246 @@ <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-sample_LNG.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_IHPC.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_AMT_E2_EM_Std.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_mediumLorry_AMT_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_heavyLorry_AMT_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\Conventional_completedBus_1.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\Conventional_heavyLorry_AMT.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\HEV-S_heavyLorry_AMT_S2_ADC.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\HEV_heavyLorry_AMT_Px_Capacitor.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\Conventional_mediumLorry_AMT.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem-IHPC_1.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_only_mandatory_entries.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_heavyLorry.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_mediumLorry.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_primaryBus.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_APT-N.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_IHPC.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_AMT_S2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_IEPC-S.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_AMT_S2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_IEPC-S.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\HEV_completedBus_1.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV_mediumLorry_AMT_Px.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\IEPC_completedBus_1.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\IEPC_heavyLorry.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\IEPC_mediumLorry.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\IEPC_primaryBus.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\PEV_completedBus_1.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_AMT_E2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_APT-N_E2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_AMT_E2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_APT-N_E2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_AMT_E2.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E3.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E4.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_primaryBus_AMT_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_AMT_S2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_IEPC-S_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_S3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_S4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_AMT_S2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_IEPC-S_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_S3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_S4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_AMT_S2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_IEPC-S_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_S3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_S4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_heavyLorry_AMT_Px_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_mediumLorry_AMT_Px_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_primaryBus_AMT_Px_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_heavyLorry_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_mediumLorry_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_primaryBus_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_AMT_E2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_APT-N_E2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_E3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_E4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_AMT_E2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_APT-N_E2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_E3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_E4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_AMT_E2_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_E3_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_E4_n_opt.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\Tractor_4x2_vehicle-class-5_5_t_0.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> @@ -7283,63 +7507,76 @@ <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\exempted_primary_heavyBus.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-completed_heavyBus-sample.xml"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> <SubType>Designer</SubType> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-medium_lorry-sample.xml" /> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBus-sample.xml"> + <CopyToOutputDirectory>Always</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES-sample.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_full-sample.xml"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_mandatory_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample_group41.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_full-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries01-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries02-sample.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_component_nullable_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_mandatory_entries.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_entries.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample_group41.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_vif_input.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries01-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\BatterySystem_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries02-sample.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\CapacitorSystem_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_component_nullable_entries.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_entries.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_StdValues.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_1.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> - <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_vif_input.xml"> + <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_StdValues.xml"> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </Content> <Content Include="TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_primary_heavyBus.VIF.xml"> diff --git a/VectoCore/VectoCoreTest/XML/XMLBusVehicleReport.cd b/VectoCore/VectoCoreTest/XML/XMLBusVehicleReport.cd new file mode 100644 index 0000000000000000000000000000000000000000..a3c056dcd3699b081f44fd4433c6e639f4569131 --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLBusVehicleReport.cd @@ -0,0 +1,65 @@ +<?xml version="1.0" encoding="utf-8"?> +<ClassDiagram MajorVersion="1" MinorVersion="1" MembersFormat="NameAndType"> + <Class Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.XMLExemptedPrimaryBusVehicleReport"> + <Position X="4" Y="5.5" Width="1.5" /> + <TypeIdentifier /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.XMLMultistageExemptedBusReport"> + <Position X="6.75" Y="5.75" Width="2.5" /> + <TypeIdentifier /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.XMLMultistageBusReport"> + <Position X="6.75" Y="0.75" Width="2.5" /> + <TypeIdentifier /> + <Lollipop Position="0.2" /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.XMLPrimaryBusVehicleReport"> + <Position X="0.5" Y="1" Width="2" /> + <TypeIdentifier /> + <Lollipop Position="0.2" /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.XMLDeclarationReportMultistageBusVehicle"> + <Position X="9.75" Y="7.5" Width="3.5" /> + <TypeIdentifier /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.XMLDeclarationReportPrimaryVehicle"> + <Position X="14.5" Y="7.5" Width="3" /> + <TypeIdentifier /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.XML.XMLDeclarationReport"> + <Position X="12.25" Y="0.75" Width="2.75" /> + <Compartments> + <Compartment Name="Nested Types" Collapsed="false" /> + </Compartments> + <NestedTypes> + <Class Name="TUGraz.VectoCore.OutputData.XML.XMLDeclarationReport.ResultEntry" Collapsed="true"> + <TypeIdentifier /> + <Lollipop Position="0.2" /> + </Class> + </NestedTypes> + <TypeIdentifier /> + </Class> + <Class Name="TUGraz.VectoCore.OutputData.DeclarationReport<T>"> + <Position X="15.5" Y="2.25" Width="2.5" /> + <NestedTypes> + <Class Name="TUGraz.VectoCore.OutputData.DeclarationReport<T>.ResultContainer<TEntry>" Collapsed="true"> + <TypeIdentifier /> + </Class> + </NestedTypes> + <TypeIdentifier /> + <Lollipop Position="0.2" /> + </Class> + <Interface Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.IXMLMultistageReport"> + <Position X="9.75" Y="0.75" Width="2.25" /> + <TypeIdentifier /> + </Interface> + <Interface Name="TUGraz.VectoCore.OutputData.XML.DeclarationReports.VehicleInformationFile.IXMLPrimaryVehicleReport"> + <Position X="3" Y="1.5" Width="2.75" /> + <TypeIdentifier /> + </Interface> + <Interface Name="TUGraz.VectoCore.OutputData.IDeclarationReport"> + <Position X="15.5" Y="0.5" Width="1.5" /> + <TypeIdentifier /> + </Interface> + <Font Name="Segoe UI" Size="9" /> +</ClassDiagram> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs index e82eceb2691ff41e03f93e84c6a78766d78ed0a4..9e18b5bd3bc4e7d022c1e4431b411b7c334fffab 100644 --- a/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLCompleteBusReaderTest.cs @@ -19,7 +19,7 @@ namespace TUGraz.VectoCore.Tests.XML public class XMLCompleteBusReaderTest { private const string CompleteBusExample = - "TestData/XML/XMLReaderDeclaration/SchemaVersion2.6_Buses/vecto_vehicle-completed_heavyBus-sample.xml"; + "TestData/XML/XMLReaderDeclaration/SchemaVersion2.10/vecto_vehicle-completed_heavyBus-sample.xml"; diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs index f333143bc0587336835d882229873095f6e40667..3b8acaf915aac426e8528049a394595062d20d59 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputTest.cs @@ -52,6 +52,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.InputData.Reader.DataObjectAdapter; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; namespace TUGraz.VectoCore.Tests.XML { @@ -413,7 +414,7 @@ namespace TUGraz.VectoCore.Tests.XML var jobContainer = new JobContainer(sumData); var dataProvider = xmlInputReader.CreateDeclaration(reader); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); runsFactory.WriteModalResults = true; jobContainer.AddRuns(runsFactory); @@ -574,7 +575,7 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = xmlInputReader.CreateDeclaration(modified); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputDataProvider, new FileOutputWriter("dummy")); + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputDataProvider, new FileOutputWriter("dummy")); var jobContainer = new JobContainer(null); jobContainer.AddRuns(factory); jobContainer.Execute(); diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs new file mode 100644 index 0000000000000000000000000000000000000000..e3772a80ce8b059a7283e5c07dac95f3f3b11fe4 --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv210.cs @@ -0,0 +1,129 @@ +using System.IO; +using System.Linq; +using System.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; +using TUGraz.VectoCore.OutputData.FileIO; + +namespace TUGraz.VectoCore.Tests.XML +{ + [TestFixture] + public class XMLDeclarationInputv210 + { + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + private const string BASE_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\"; + + + [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_S3.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_S4.xml"), + TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px.xml"), + TestCase(@"HeavyLorry\IEPC_heavyLorry.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_APT-N_E2.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_E3.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml"), + TestCase(@"MediumLorry\Conventional_MediumLorry_AMT.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_AMT_S2.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_IEPC-S.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_S3.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_S4.xml"), + TestCase(@"MediumLorry\HEV_mediumLorry_AMT_Px.xml"), + TestCase(@"MediumLorry\IEPC_mediumLorry.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_AMT_E2.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_APT-N_E2.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_E3.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_E4.xml"), + TestCase(@"PrimaryBus\Conventional_primaryBus_AMT.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_AMT_S2.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_IEPC-S.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_S3.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_S4.xml"), + TestCase(@"PrimaryBus\HEV_primaryBus_AMT_Px.xml"), + TestCase(@"PrimaryBus\IEPC_primaryBus.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_AMT_E2.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_E3.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_E4.xml"), + //TestCase(@"CompletedBus\Conventional_completedBus_1.xml"), + //TestCase(@"CompletedBus\HEV_completedBus_1.xml"), + //TestCase(@"CompletedBus\IEPC_completedBus_1.xml"), + //TestCase(@"CompletedBus\PEV_completedBus_1.xml"), + TestCase(@"ExemptedVehicles\exempted_completedBus_input_full.xml"), + TestCase(@"ExemptedVehicles\exempted_completedBus_input_only_mandatory_entries.xml"), + TestCase(@"ExemptedVehicles\exempted_heavyLorry.xml"), + TestCase(@"ExemptedVehicles\exempted_mediumLorry.xml"), + TestCase(@"ExemptedVehicles\exempted_primaryBus.xml"), + ] + public void TestReadingJobVersion_V210(string jobFile) + { + ReadDeclarationJob(jobFile); + } + + [TestCase(@"CompletedBus\Conventional_completedBus_1.xml"), + TestCase(@"CompletedBus\HEV_completedBus_1.xml"), + TestCase(@"CompletedBus\IEPC_completedBus_1.xml"), + TestCase(@"CompletedBus\PEV_completedBus_1.xml"), + ] + public void TestReadingCompletedBus_V210(string jobfile) + { + var filename = Path.Combine(BASE_DIR, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + Assert.NotNull(dataProvider.JobInputData.Vehicle); + + var veh = dataProvider.JobInputData.Vehicle; + Assert.AreEqual(1, veh.NumberPassengerSeatsLowerDeck); + Assert.AreEqual(9.5, veh.Length.Value()); + + Assert.NotNull(veh.Components); + Assert.NotNull(veh.Components.BusAuxiliaries); + + var busAux = veh.Components.BusAuxiliaries; + Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, busAux.HVACAux.SystemConfiguration); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busAux.HVACAux.HeatPumpTypeCoolingPassengerCompartment); + + Assert.IsTrue(busAux.ElectricConsumers.BrakelightsLED); + } + + public IVectoRun[] ReadDeclarationJob(string jobfile) + { + var filename = Path.Combine(BASE_DIR, jobfile); + + var fileWriter = new FileOutputWriter(filename); + //var sumWriter = new SummaryDataContainer(fileWriter); + //var jobContainer = new JobContainer(sumWriter); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = false; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; + + var runs = runsFactory.SimulationRuns().ToArray(); + Assert.IsTrue(runs.Length > 0); + + return runs; + } + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24.cs new file mode 100644 index 0000000000000000000000000000000000000000..38dba2fac60c03f056e175c5021b6cc7c30358bb --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24.cs @@ -0,0 +1,2123 @@ +using System; +using System.Collections.Generic; +using System.Data; +using System.IO; +using System.Linq; +using System.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.BusAuxiliaries; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Resources; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.Models.Simulation; +using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; +using TUGraz.VectoCore.OutputData.FileIO; + +namespace TUGraz.VectoCore.Tests.XML +{ + [TestFixture] + public class XMLDeclarationInputv24 + { + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + private const string BASE_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\"; + private const string ADDITONAL_TESTS_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\"; + private const string Optional_TESTS_DIR = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries"; + + + [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_S3.xml"), + TestCase(@"HeavyLorry\HEV-S_heavyLorry_S4.xml"), + TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px.xml"), + TestCase(@"HeavyLorry\IEPC_heavyLorry.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_APT-N_E2.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_E3.xml"), + TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml"), + TestCase(@"MediumLorry\Conventional_mediumLorry_AMT.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_AMT_S2.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_IEPC-S.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_S3.xml"), + TestCase(@"MediumLorry\HEV-S_mediumLorry_S4.xml"), + TestCase(@"MediumLorry\HEV_mediumLorry_AMT_Px.xml"), + TestCase(@"MediumLorry\IEPC_mediumLorry.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_AMT_E2.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_APT-N_E2.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_E3.xml"), + TestCase(@"MediumLorry\PEV_mediumLorry_E4.xml"), + TestCase(@"PrimaryBus\Conventional_primaryBus_AMT.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_AMT_S2.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_IEPC-S.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_S3.xml"), + TestCase(@"PrimaryBus\HEV-S_primaryBus_S4.xml"), + TestCase(@"PrimaryBus\HEV_primaryBus_AMT_Px.xml"), + TestCase(@"PrimaryBus\IEPC_primaryBus.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_AMT_E2.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_E3.xml"), + TestCase(@"PrimaryBus\PEV_primaryBus_E4.xml"), + //TestCase(@"CompletedBus\Conventional_completedBus_1.xml"), + //TestCase(@"CompletedBus\HEV_completedBus_1.xml"), + //TestCase(@"CompletedBus\IEPC_completedBus_1.xml"), + //TestCase(@"CompletedBus\PEV_completedBus_1.xml"), + TestCase(@"ExemptedVehicles\exempted_completedBus_input_full.xml"), + TestCase(@"ExemptedVehicles\exempted_completedBus_input_only_mandatory_entries.xml"), + TestCase(@"ExemptedVehicles\exempted_heavyLorry.xml"), + TestCase(@"ExemptedVehicles\exempted_mediumLorry.xml"), + TestCase(@"ExemptedVehicles\exempted_primaryBus.xml"), + ] + public void TestReadingJobVersion_V24(string jobFile) + { + ReadDeclarationJob(jobFile); + } + + [TestCase(@"CompletedBus\Conventional_completedBus_1.xml"), + TestCase(@"CompletedBus\HEV_completedBus_1.xml"), + TestCase(@"CompletedBus\IEPC_completedBus_1.xml"), + TestCase(@"CompletedBus\PEV_completedBus_1.xml"), + ] + public void TestReadingCompletedBus_V24(string jobfile) + { + var filename = Path.Combine(BASE_DIR, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + Assert.NotNull(dataProvider.JobInputData.Vehicle); + + var veh = dataProvider.JobInputData.Vehicle; + Assert.AreEqual(1, veh.NumberPassengerSeatsLowerDeck); + Assert.AreEqual(9.5, veh.Length.Value()); + + Assert.NotNull(veh.Components); + Assert.NotNull(veh.Components.BusAuxiliaries); + + var busAux = veh.Components.BusAuxiliaries; + Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, busAux.HVACAux.SystemConfiguration); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busAux.HVACAux.HeatPumpTypeCoolingPassengerCompartment); + + Assert.IsTrue(busAux.ElectricConsumers.BrakelightsLED); + } + + public IVectoRun[] ReadDeclarationJob(string jobfile) + { + var filename = Path.Combine(BASE_DIR, jobfile); + + var fileWriter = new FileOutputWriter(filename); + //var sumWriter = new SummaryDataContainer(fileWriter); + //var jobContainer = new JobContainer(sumWriter); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = false; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; + + var runs = runsFactory.SimulationRuns().ToArray(); + Assert.IsTrue(runs.Length > 0); + + return runs; + } + + [TestCase(@"HeavyLorry\Conventional_heavyLorry_AMT.xml", BASE_DIR)] + [TestCase(@"Conventional_heavyLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalHeavyLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + TestADASData(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) {//optional test + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData);//optional + Assert.IsNull(vehicle.Components.RetarderInputData);//optional + Assert.IsNull(vehicle.Components.AirdragInputData);//optional + Assert.IsNull(vehicle.TorqueLimits);//optional + } else { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData);//optional + Assert.IsNotNull(vehicle.Components.RetarderInputData);//optional + Assert.IsNotNull(vehicle.Components.AirdragInputData);//optional + Assert.IsNotNull(vehicle.TorqueLimits);//optional + } + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.ElectricStorage); + TestPTOData(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limits + } + + private void TestADASData(IAdvancedDriverAssistantSystemDeclarationInputData adas) + { + Assert.IsNotNull(adas); + Assert.AreEqual(true, adas.EngineStopStart); + Assert.AreEqual(EcoRollType.WithEngineStop, adas.EcoRoll); + Assert.AreEqual(PredictiveCruiseControlType.Option_1_2_3, adas.PredictiveCruiseControl); + } + + private void TestPTOData(IPTOTransmissionInputData pto) + { + Assert.IsNotNull(pto); + Assert.AreEqual("None", pto.PTOTransmissionType); + } + + [TestCase(@"MediumLorry\Conventional_mediumLorry_AMT.xml", BASE_DIR) ] + [TestCase(@"Conventional_mediumLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalMediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + TestADASData(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + //optional test + if (testDir == Optional_TESTS_DIR) { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + } + else { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.AreEqual(20.300.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.IsNotNull(vehicle.TorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + [TestCase(@"PrimaryBus\Conventional_primaryBus_AMT.xml", BASE_DIR)] + [TestCase(@"Conventional_primaryBus_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalPrimaryHeavyBus(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + //optional test + if (testDir == Optional_TESTS_DIR) { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.TorqueLimits); + } + else { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + [TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px.xml", BASE_DIR)] + [TestCase(@"HEV_heavyLorry_AMT_Px_Capacitor.xml", ADDITONAL_TESTS_DIR)] + [TestCase(@"HEV_heavyLorry_AMT_Px_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVHeavyLorryPx(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + //optional test + if (testDir == Optional_TESTS_DIR) + { + TestElectricMachinesData(vehicle.Components.ElectricMachines.Entries.First(), true); + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + else + { + TestElectricMachinesData(vehicle.Components.ElectricMachines.Entries.First()); + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + TestElectricMotorTorqueLimits(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + TestBoostingLimitations(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + TestElectricStorageElements(vehicle.Components.ElectricStorage.ElectricStorageElements); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + } + + #region Test Electric Machines Reader + + private void TestElectricMachinesData(ElectricMachineEntry<IElectricMotorDeclarationInputData> eMachineEntry, bool optional = false) + { + Assert.IsNotNull(eMachineEntry); + var eMachine = eMachineEntry.ElectricMachine; + + Assert.IsNotNull(eMachine); + Assert.AreEqual("a", eMachine.Manufacturer); + Assert.AreEqual("a", eMachine.Model); + Assert.AreEqual("token", eMachine.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-01-01T00:00:00Z").ToUniversalTime(), eMachine.Date); + Assert.AreEqual("aaaaa", eMachine.AppVersion); + Assert.AreEqual(ElectricMachineType.ASM, eMachine.ElectricMachineType); + Assert.AreEqual(CertificationMethod.Measured, eMachine.CertificationMethod); + Assert.AreEqual(1.SI<Watt>(), eMachine.R85RatedPower); + Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), eMachine.Inertia);//RotationalInertia + //Assert.AreEqual(200.00.SI<NewtonMeter>(), eMachine.ContinuousTorque); + //Assert.AreEqual(2000.00.SI<PerSecond>(), eMachine.ContinuousTorqueSpeed);//TestSpeedContinuousTorque + //Assert.AreEqual(400.00.SI<NewtonMeter>(), eMachine.OverloadTorque); + //Assert.AreEqual(2000.00.SI<PerSecond>(), eMachine.OverloadTestSpeed);//TestSpeedOverloadTorque + //Assert.AreEqual(30.00.SI<Second>(), eMachine.OverloadTime); + Assert.AreEqual(true, eMachine.DcDcConverterIncluded); + Assert.AreEqual("None", eMachine.IHPCType); + + TestVoltageLevel(eMachine.VoltageLevels); + TestDragCurve(eMachine.DragCurve); + TestConditioning(eMachine.Conditioning, optional); + } + + private void TestVoltageLevel(IList<IElectricMotorVoltageLevel> voltageLevels) + { + Assert.AreEqual(2, voltageLevels.Count); + var voltageLevel = voltageLevels[0]; + Assert.AreEqual(400.SI<Volt>(), voltageLevel.VoltageLevel); + + TestOverloadValues(voltageLevel); + TestMaxTorqueCurve(voltageLevel.FullLoadCurve); + TestPowerMap(voltageLevel.PowerMap); + + voltageLevel = voltageLevels[1]; + Assert.AreEqual(600.SI<Volt>(), voltageLevel.VoltageLevel); + + TestOverloadValues(voltageLevel); + TestMaxTorqueCurve(voltageLevel.FullLoadCurve); + TestPowerMap(voltageLevel.PowerMap); + + } + + private void TestOverloadValues(IElectricMotorVoltageLevel voltageLevel) + { + Assert.AreEqual(200.00.SI<NewtonMeter>(), voltageLevel.ContinuousTorque); + Assert.AreEqual(2000.00.SI<PerSecond>(), voltageLevel.ContinuousTorqueSpeed);//TestSpeedContinuousTorque + Assert.AreEqual(400.00.SI<NewtonMeter>(), voltageLevel.OverloadTorque); + Assert.AreEqual(2000.00.SI<PerSecond>(), voltageLevel.OverloadTestSpeed);//TestSpeedOverloadTorque + Assert.AreEqual(30.00.SI<Second>(), voltageLevel.OverloadTime); + } + + private void TestPowerMap(IList<IElectricMotorPowerMap> powerMap) + { + + if (powerMap.Count >= 1) + TestPowerMapData01(powerMap[0]); + + if (powerMap.Count >= 2) + TestPowerMapData02(powerMap[1]); + + if (powerMap.Count == 3) + TestPowerMapData03(powerMap[2]); + } + + private void TestPowerMapData01(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "400.00", "1000.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-400.00", "-1000.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("4000.00", "4000.00", "20000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("4000.00", "-4000.00", "-20000.00", powerMap.PowerMap.Rows[3]); + } + + private void TestPowerMapData02(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "500.00", "1500.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-500.00", "-1500.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("5000.00", "5000.00", "25000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("5000.00", "-5000.00", "-25000.00", powerMap.PowerMap.Rows[3]); + } + + private void TestPowerMapData03(IElectricMotorPowerMap powerMap) + { + TestPowerMapEntry("0.00", "600.00", "1200.00", powerMap.PowerMap.Rows[0]); + TestPowerMapEntry("0.00", "-600.00", "-1200.00", powerMap.PowerMap.Rows[1]); + TestPowerMapEntry("6000.00", "6000.00", "40000.00", powerMap.PowerMap.Rows[2]); + TestPowerMapEntry("6000.00", "-6000.00", "-40000.00", powerMap.PowerMap.Rows[3]); + } + + + private void TestMaxTorqueCurve(TableData torqueCurve) + { + TestMaxTorqueCurveEntry("0.00", "450.00", "-450.00", torqueCurve.Rows[0]); + TestMaxTorqueCurveEntry("4000.00", "100.00", "-100.00", torqueCurve.Rows[1]); + } + + private void TestMaxTorqueCurveEntry(string outShaftSpeed, string maxTorque, string minTorque, DataRow row) + { + Assert.AreEqual(outShaftSpeed, row[XMLNames.MaxTorqueCurve_OutShaftSpeed]); + Assert.AreEqual(maxTorque, row[XMLNames.MaxTorqueCurve_MaxTorque]); + Assert.AreEqual(minTorque, row[XMLNames.MaxTorqueCurve_MinTorque]); + } + + private void TestPowerMapEntry(string outShaftSpeed, string torque, string electricPower, DataRow row) + { + Assert.AreEqual(outShaftSpeed, row[XMLNames.PowerMap_OutShaftSpeed]); + Assert.AreEqual(torque, row[XMLNames.PowerMap_Torque]); + Assert.AreEqual(electricPower, row[XMLNames.PowerMap_ElectricPower]); + } + + private void TestDragCurve(TableData dragCurve) + { + TestDragCurveData01(dragCurve); + } + + private void TestDragCurveData01(TableData dragCurve) + { + TestDragCurveEntry("0.00", "10.00", dragCurve.Rows[0]); + TestDragCurveEntry("4000.00", "30.00", dragCurve.Rows[1]); + } + + private void TestDragCurveData02(TableData dragCurve) + { + TestDragCurveEntry("0.00", "15.00", dragCurve.Rows[0]); + TestDragCurveEntry("4500.00", "35.00", dragCurve.Rows[1]); + } + + + private void TestDragCurveEntry(string outShaftSpeed, string dragTorque, DataRow row) + { + Assert.AreEqual(outShaftSpeed, row[XMLNames.DragCurve_OutShaftSpeed]); + Assert.AreEqual(dragTorque, row[XMLNames.DragCurve_DragTorque]); + } + + private void TestConditioning(TableData eMachineConditioning , bool optional) + { + if(optional) + Assert.IsNull(eMachineConditioning); + else + TestConditioningEntry("30", "5000", eMachineConditioning.Rows[0]); + } + + private void TestConditioningEntry(string coolantTempInlet, string coolingPower, DataRow row) + { + Assert.AreEqual(coolantTempInlet, row[XMLNames.Conditioning_CoolantTempInlet]); + Assert.AreEqual(coolingPower, row[XMLNames.Conditioning_CoolingPower]); + } + + #endregion + + #region Test ElectricStorage Element Reader + + private void TestElectricStorageElements(IList<IElectricStorageDeclarationInputData> elements) + { + Assert.IsNotNull(elements); + switch (elements.Count) { + case 1: + TestSuperCapEntry(elements.First()); + break; + case 2: + Assert.AreEqual(2, elements.Count); + TestFirstBatterySystemEntry(elements[0]); + TestSecondBatterySystemEntry(elements[1]); + break; + } + } + + private void TestSuperCapEntry(IElectricStorageDeclarationInputData entry) + { + Assert.AreEqual(REESSType.SuperCap, entry.REESSPack.StorageType); + Assert.AreEqual("Capacitor Manufacturer", entry.REESSPack.Manufacturer); + Assert.AreEqual("Capacitor Model", entry.REESSPack.Model); + Assert.AreEqual("ccccccc", entry.REESSPack.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-02-03T00:00:00Z").ToUniversalTime(), entry.REESSPack.Date); + Assert.AreEqual("ccccc", entry.REESSPack.AppVersion); + Assert.AreEqual(CertificationMethod.Measured, entry.REESSPack.CertificationMethod); + Assert.IsNotNull(entry.REESSPack.DigestValue); + + var supercap = (ISuperCapDeclarationInputData)entry.REESSPack; + Assert.AreEqual(100.00.SI<Farad>(), supercap.Capacity); + Assert.AreEqual(20.00.SI<Ohm>() / 1000, supercap.InternalResistance); + Assert.AreEqual(12.00.SI<Volt>(), supercap.MinVoltage); + Assert.AreEqual(100.00.SI<Volt>(), supercap.MaxVoltage); + Assert.AreEqual(80.00.SI<Ampere>(), supercap.MaxCurrentCharge); + Assert.AreEqual(20.00.SI<Ampere>(), supercap.MaxCurrentDischarge); + } + + private void TestFirstBatterySystemEntry(IElectricStorageDeclarationInputData entry) + { + Assert.AreEqual(REESSType.Battery, entry.REESSPack.StorageType); + Assert.AreEqual(0, entry.StringId); + Assert.AreEqual("a", entry.REESSPack.Manufacturer); + Assert.AreEqual("a", entry.REESSPack.Model); + Assert.AreEqual("tokena", entry.REESSPack.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-01-01T00:00:00Z").ToUniversalTime(), entry.REESSPack.Date); + Assert.AreEqual("aaaaa", entry.REESSPack.AppVersion); + Assert.AreEqual(CertificationMethod.Measured, entry.REESSPack.CertificationMethod); + Assert.IsNotNull(entry.REESSPack.DigestValue); + + var battery = (IBatteryPackDeclarationInputData)entry.REESSPack; + Assert.AreEqual(20, battery.MinSOC); + Assert.AreEqual(80, battery.MaxSOC); + Assert.AreEqual(BatteryType.HPBS, battery.BatteryType); + Assert.AreEqual(72.00.SI<AmpereSecond>() * 3600, battery.Capacity); + Assert.AreEqual(true, battery.ConnectorsSubsystemsIncluded); + Assert.AreEqual(true, battery.JunctionboxIncluded); + Assert.AreEqual(20.0.DegCelsiusToKelvin(), battery.TestingTemperature); + + Assert.IsNotNull(battery.VoltageCurve);//OVC Data + TestOCVTableRow("0", "620.00", battery.VoltageCurve.Rows[0]); + TestOCVTableRow("100", "640.00", battery.VoltageCurve.Rows[1]); + Assert.IsNotNull(battery.InternalResistanceCurve); + TestInternalResistanceTableRow("0", "10.00", "11.00", "12.00", battery.InternalResistanceCurve.Rows[0]); + TestInternalResistanceTableRow("100","12.00" ,"14.00","16.00", battery.InternalResistanceCurve.Rows[1]); + Assert.IsNotNull(battery.MaxCurrentMap);//CurrentLimits Data + TestCurrentLimitsTableRow("0", "50.00", "0.00", battery.MaxCurrentMap.Rows[0]); + TestCurrentLimitsTableRow("100", "0.00", "50.00", battery.MaxCurrentMap.Rows[1]); + } + + private void TestSecondBatterySystemEntry(IElectricStorageDeclarationInputData entry) + { + Assert.AreEqual(REESSType.Battery, entry.REESSPack.StorageType); + Assert.AreEqual(1, entry.StringId); + Assert.AreEqual("b", entry.REESSPack.Manufacturer); + Assert.AreEqual("b", entry.REESSPack.Model); + Assert.AreEqual("tokenb", entry.REESSPack.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-02-02T00:00:00Z").ToUniversalTime(), entry.REESSPack.Date); + Assert.AreEqual("bbbbb", entry.REESSPack.AppVersion); + Assert.AreEqual(CertificationMethod.Measured, entry.REESSPack.CertificationMethod); + Assert.IsNotNull(entry.REESSPack.DigestValue); + + var battery = (IBatteryPackDeclarationInputData)entry.REESSPack; + Assert.IsNull(battery.MinSOC); + Assert.IsNull(battery.MaxSOC); + Assert.AreEqual(BatteryType.HPBS, battery.BatteryType); + Assert.AreEqual(73.00.SI<AmpereSecond>() * 3600, battery.Capacity); + Assert.AreEqual(true, battery.ConnectorsSubsystemsIncluded); + Assert.AreEqual(true, battery.JunctionboxIncluded); + Assert.AreEqual(20.0.DegCelsiusToKelvin(), battery.TestingTemperature); + + Assert.IsNotNull(battery.VoltageCurve);//OVC Data + TestOCVTableRow("0", "621.00", battery.VoltageCurve.Rows[0]); + TestOCVTableRow("100", "641.00", battery.VoltageCurve.Rows[1]); + Assert.IsNotNull(battery.InternalResistanceCurve); + TestInternalResistanceTableRow("0", "11.00", "12.00", "13.00", battery.InternalResistanceCurve.Rows[0]); + TestInternalResistanceTableRow("100", "12.00", "14.00", "16.00", battery.InternalResistanceCurve.Rows[1]); + Assert.IsNotNull(battery.MaxCurrentMap);//CurrentLimits Data + TestCurrentLimitsTableRow("0", "51.00", "0.00", battery.MaxCurrentMap.Rows[0]); + TestCurrentLimitsTableRow("100", "0.00", "50.00", battery.MaxCurrentMap.Rows[1]); + } + + private void TestOCVTableRow(string soc, string ocv, DataRow row) + { + Assert.AreEqual(soc, row[XMLNames.REESS_OCV_SoC]); + Assert.AreEqual(ocv, row[XMLNames.REESS_OCV_OCV]); + } + + private void TestInternalResistanceTableRow(string soc, string r2, string r10, string r20, DataRow row) + { + Assert.AreEqual(soc, row[XMLNames.REESS_InternalResistanceCurve_SoC]); + Assert.AreEqual(r2, row[XMLNames.REESS_InternalResistanceCurve_R2]); + Assert.AreEqual(r10, row[XMLNames.REESS_InternalResistanceCurve_R10]); + Assert.AreEqual(r20, row[XMLNames.REESS_InternalResistanceCurve_R20]); + } + + private void TestCurrentLimitsTableRow(string soc, string maxChargingCurrent, string maxDischargingCurrent, + DataRow row) + { + Assert.AreEqual(soc, row[XMLNames.REESS_CurrentLimits_SoC]); + Assert.AreEqual(maxChargingCurrent, row[XMLNames.REESS_CurrentLimits_MaxChargingCurrent]); + Assert.AreEqual(maxDischargingCurrent, row[XMLNames.REESS_CurrentLimits_MaxDischargingCurrent]); + } + + + #endregion + + #region Test Electric Motor TorqueLimits Reader + + private void TestElectricMotorTorqueLimits(Dictionary<PowertrainPosition, List<Tuple<Volt, TableData>>> limits) + { + Assert.IsNotNull(limits); + Assert.AreEqual(1, limits.Count); + Assert.AreEqual(2, limits.First().Value.Count); + Assert.AreEqual(PowertrainPosition.HybridP2, limits.First().Key); + + Assert.AreEqual(100, limits.First().Value[0].Item1.Value()); + TestMaxTorqueCurveEntry("0.00", "200.00", "-200.00", limits.First().Value[0].Item2.Rows[0]); + TestMaxTorqueCurveEntry("1000.00", "300.00", "-300.00", limits.First().Value[0].Item2.Rows[1]); + + Assert.AreEqual(500, limits.First().Value[1].Item1.Value()); + TestMaxTorqueCurveEntry("0.00", "200.00", "-200.00", limits.First().Value[1].Item2.Rows[0]); + TestMaxTorqueCurveEntry("1000.00", "300.00", "-300.00", limits.First().Value[1].Item2.Rows[1]); + } + + #endregion + + #region Test Max Propulsion Torque Reader / BoostingLimitations + + private void TestBoostingLimitations(TableData boostingLimitations) + { + Assert.IsNotNull(boostingLimitations); + Assert.AreEqual(2, boostingLimitations.Rows.Count); + + TestBoostingLimitationsEntry("0.00", "0.00", boostingLimitations.Rows[0]); + TestBoostingLimitationsEntry("1000.00", "0.00", boostingLimitations.Rows[1]); + } + + private void TestBoostingLimitationsEntry(string rotationalSpeed, string boostingTorque, DataRow row) + { + Assert.AreEqual(rotationalSpeed, row[XMLNames.BoostingLimitation_RotationalSpeed]); + Assert.AreEqual(boostingTorque, row[XMLNames.BoostingLimitation_BoostingTorque]); + } + + #endregion + + + [TestCase(@"MediumLorry\HEV_mediumLorry_AMT_Px.xml", BASE_DIR)] + [TestCase(@"HEV_mediumLorry_AMT_Px_n_opt.xml", Optional_TESTS_DIR )] + public void TestHEVMediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + //optional test + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.AreEqual(20.300.SI<CubicMeter>(), vehicle.CargoVolume); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNotNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + } + + + [TestCase(@"PrimaryBus\HEV_primaryBus_AMT_Px.xml", BASE_DIR)] + [TestCase(@"HEV_primaryBus_AMT_Px_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPrimaryBusAMTPx(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + //optional test + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + else + { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + Assert.IsNotNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + } + + + [TestCase(@"HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml", BASE_DIR)] + [TestCase(@"HEV-S_heavyLorry_AMT_S2_ADC.xml", ADDITONAL_TESTS_DIR)] + [TestCase(@"HEV-S_heavyLorry_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVHeavyLorryAMTS2(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.IsNull(vehicle.Components.IEPC); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + TestElectricMachines(vehicle.Components.ElectricMachines.Entries); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.AreEqual(0, vehicle.TorqueLimits.Count); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.BoostingLimitations);//Vehicle Max Prop. Limit + } + + private void TestElectricMachines(IList<ElectricMachineEntry<IElectricMotorDeclarationInputData>> eMachines) + { + foreach (var eMachine in eMachines) { + switch (eMachine.Position) { + case PowertrainPosition.GEN: + TestElectricMachineGEN(eMachine); + break; + case PowertrainPosition.BatteryElectricE2: + TestElectricMachine(eMachine); + break; + } + } + } + + private void TestElectricMachineGEN(ElectricMachineEntry<IElectricMotorDeclarationInputData> eMachine) + { + Assert.AreEqual(1, eMachine.Count); + TestElectricMachinesData(eMachine); + if (eMachine.ADC != null) + TestADC(eMachine.ADC); + } + + private void TestElectricMachine(ElectricMachineEntry<IElectricMotorDeclarationInputData> eMachine) + { + Assert.AreEqual(1, eMachine.Count); + TestElectricMachinesData(eMachine); + if(eMachine.ADC != null) + TestADC(eMachine.ADC); + } + + private void TestADC(IADCDeclarationInputData adcData) + { + Assert.AreEqual("ADC Manufacturer", adcData.Manufacturer); + Assert.AreEqual("ADC Model", adcData.Model); + Assert.AreEqual("adcadc", adcData.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-01-01T00:00:00Z").ToUniversalTime(), adcData.Date); + Assert.AreEqual("adccda", adcData.AppVersion); + Assert.AreEqual(12.123, adcData.Ratio); + Assert.AreEqual(CertificationMethod.Option1, adcData.CertificationMethod); + Assert.IsNotNull(adcData.DigestValue); + + TestTorqueLossMapEntry("10.00","40.00" ,"30.00", adcData.LossMap.Rows[0]); + TestTorqueLossMapEntry("11.00", "41.00", "31.00", adcData.LossMap.Rows[1]); + TestTorqueLossMapEntry("12.00", "41.00", "32.00", adcData.LossMap.Rows[2]); + TestTorqueLossMapEntry("13.00", "42.00", "33.00", adcData.LossMap.Rows[3]); + } + + private void TestTorqueLossMapEntry(string inputSpeed, string inputTorque, string torqueLoss, DataRow row) + { + Assert.AreEqual(inputSpeed, row[XMLNames.ADC_TorqueLossMap_InputSpeed]); + Assert.AreEqual(inputTorque, row[XMLNames.ADC_TorqueLossMap_InputTorque]); + Assert.AreEqual(torqueLoss, row[XMLNames.ADC_TorqueLossMap_TorqueLoss]); + } + + + [TestCase(@"HeavyLorry\HEV-S_heavyLorry_S3.xml", BASE_DIR)] + [TestCase(@"HEV-S_heavyLorry_S3_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVHeavyLorryS3(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2 ,vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN,vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + //Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"HeavyLorry\HEV-S_heavyLorry_S4.xml", BASE_DIR)] + [TestCase(@"HEV-S_heavyLorry_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVHeavyLorryS4(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits);//Vehicle EM Drive Limits + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"MediumLorry\HEV-S_mediumLorry_AMT_S2.xml", BASE_DIR)] + [TestCase(@"HEV-S_mediumLorry_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVMediumLorryS2(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"MediumLorry\HEV-S_mediumLorry_S3.xml", BASE_DIR)] + [TestCase(@"HEV-S_mediumLorry_S3_n_opt.xml", Optional_TESTS_DIR)] + public void TestHevMediumLorryS3(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"MediumLorry\HEV-S_mediumLorry_S4.xml", BASE_DIR)] + [TestCase(@"HEV-S_mediumLorry_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVMediumLorryS4(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"PrimaryBus\HEV-S_primaryBus_AMT_S2.xml", BASE_DIR)] + [TestCase(@"HEV-S_primaryBus_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPrimaryBusS2(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"PrimaryBus\HEV-S_primaryBus_S3.xml", BASE_DIR)] + [TestCase(@"HEV-S_primaryBus_S3_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPrimaryBusS3(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"PrimaryBus\HEV-S_primaryBus_S4.xml", BASE_DIR)] + [TestCase(@"HEV-S_primaryBus_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPrimaryBusS4(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(2, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[1].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + //Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml", BASE_DIR)] + [TestCase(@"HEV-S_heavyLorry_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVIEPCHeavyLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[0].Position); + TestIEPCData(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + #region Test IEPC reader data + + private void TestIEPCData(IIEPCDeclarationInputData iepcData) + { + Assert.IsNotNull(iepcData); + Assert.AreEqual("a", iepcData.Manufacturer); + Assert.AreEqual("a", iepcData.Model); + Assert.AreEqual("token", iepcData.CertificationNumber); + Assert.AreEqual(DateTime.Parse("2017-01-01T00:00:00Z").ToUniversalTime(), iepcData.Date); + Assert.AreEqual("aaaaa", iepcData.AppVersion); + Assert.AreEqual(ElectricMachineType.ASM, iepcData.ElectricMachineType); + Assert.AreEqual(CertificationMethod.Measured, iepcData.CertificationMethod); + Assert.AreEqual(1.SI<Watt>(), iepcData.R85RatedPower); + Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), iepcData.Inertia);//RotationalInertia + Assert.AreEqual(false, iepcData.DifferentialIncluded); + Assert.AreEqual(false, iepcData.DesignTypeWheelMotor); + Assert.IsNull(iepcData.NrOfDesignTypeWheelMotorMeasured); + Assert.IsNotNull(iepcData.DigestValue); + + TestGearsData(iepcData.Gears); + TestVoltageLevel(iepcData.VoltageLevels); + TestDragCurves(iepcData.DragCurves); + } + + private void TestDragCurves(IList<IDragCurve> dragCurves) + { + Assert.AreEqual(1, dragCurves[0].Gear); + TestDragCurveData01(dragCurves[0].DragCurve); + + Assert.AreEqual(2, dragCurves[1].Gear); + TestDragCurveData02(dragCurves[1].DragCurve); + } + + private void TestGearsData(IList<IGearEntry> gears) + { + Assert.IsNotNull(gears); + Assert.AreEqual(2, gears.Count); + + Assert.AreEqual(1, gears[0].GearNumber); + Assert.AreEqual(3.000, gears[0].Ratio); + Assert.IsNull(gears[0].MaxOutputShaftSpeed); + Assert.IsNull(gears[0].MaxOutputShaftTorque); + + Assert.AreEqual(2, gears[1].GearNumber); + Assert.AreEqual(1.000, gears[1].Ratio); + Assert.IsNull(gears[1].MaxOutputShaftSpeed); + Assert.AreEqual(2000.00.SI<NewtonMeter>(), gears[1].MaxOutputShaftTorque); + } + + #endregion + + + [TestCase(@"MediumLorry\HEV-S_mediumLorry_IEPC-S.xml", BASE_DIR)] + [TestCase(@"HEV-S_mediumLorry_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVIEPCSMediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[0].Position); + TestIEPCData(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.TankSystem); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + } + else + { + Assert.IsNotNull(vehicle.TankSystem); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData.LossMap); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels.AxlesDeclaration); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"PrimaryBus\HEV-S_primaryBus_IEPC-S.xml", BASE_DIR)] + [TestCase(@"HEV-S_primaryBus_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVIEPCSPrimaryBus(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNotNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.GEN, vehicle.Components.ElectricMachines.Entries[0].Position); + TestIEPCData(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData.LossMap); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"HeavyLorry\PEV_heavyLorry_AMT_E2.xml", BASE_DIR)] + [TestCase(@"PEV_heavyLorry_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HeavyLorry\PEV_heavyLorry_APT-N_E2.xml", BASE_DIR)] + [TestCase(@"PEV_heavyLorry_APT-N_E2_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE2HeavyLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"HeavyLorry\PEV_heavyLorry_E3.xml", BASE_DIR)] + [TestCase(@"PEV_heavyLorry_E3_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE3HeavyLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData.LossMap); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"HeavyLorry\PEV_heavyLorry_E4.xml", BASE_DIR)] + [TestCase(@"PEV_heavyLorry_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE4HeavyLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData.LossMap); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"MediumLorry\PEV_mediumLorry_AMT_E2.xml", BASE_DIR)] + [TestCase(@"PEV_mediumLorry_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"MediumLorry\PEV_mediumLorry_APT-N_E2.xml", BASE_DIR)] + [TestCase(@"PEV_mediumLorry_APT-N_E2_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE2MediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + if (vehicle.VehicleCategory == VehicleCategory.Van) { + Assert.AreEqual(20, vehicle.CargoVolume.Value()); + } else { + Assert.IsNull(vehicle.CargoVolume); + } + + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"MediumLorry\PEV_mediumLorry_E3.xml", BASE_DIR)] + [TestCase(@"PEV_mediumLorry_E3_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE3MediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"MediumLorry\PEV_mediumLorry_E4.xml", BASE_DIR)] + [TestCase(@"PEV_mediumLorry_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVE4MediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"PrimaryBus\PEV_primaryBus_AMT_E2.xml", BASE_DIR)] + [TestCase(@"PEV_primaryBus_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVPrimaryBusE2(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNotNull(vehicle.Components.GearboxInputData); + TestTorqueConverter(vehicle); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.TorqueLimits); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"PrimaryBus\PEV_primaryBus_E3.xml", BASE_DIR)] + [TestCase(@"PEV_primaryBus_E3_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVPrimaryBusE3(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE3, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"PrimaryBus\PEV_primaryBus_E4.xml", BASE_DIR)] + [TestCase(@"PEV_primaryBus_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVPrimaryBusE4(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNotNull(vehicle.Components.ElectricMachines); + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE4, vehicle.Components.ElectricMachines.Entries[0].Position); + Assert.IsNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.ElectricMotorTorqueLimits); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + // Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + [TestCase(@"HeavyLorry\IEPC_heavyLorry.xml", BASE_DIR)] + [TestCase(@"IEPC_heavyLorry_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCHeayLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNotNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNotNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"MediumLorry\IEPC_mediumLorry.xml", BASE_DIR)] + [TestCase(@"IEPC_mediumLorry_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCMediumLorry(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNotNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.AreEqual(20, vehicle.CargoVolume.Value()); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + Assert.IsNotNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.CargoVolume); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.AuxiliaryInputData.Auxiliaries); + Assert.IsNull(vehicle.Components.BusAuxiliaries); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + + [TestCase(@"PrimaryBus\IEPC_primaryBus.xml", BASE_DIR)] + [TestCase(@"IEPC_primaryBus_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCPrimaryBus(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + Assert.NotNull(vehicle); + Assert.IsNotNull(vehicle.ADAS); + Assert.IsNull(vehicle.Components.EngineInputData); + Assert.IsNull(vehicle.Components.ElectricMachines); + Assert.IsNotNull(vehicle.Components.IEPC); + Assert.IsNull(vehicle.Components.GearboxInputData); + Assert.IsNull(vehicle.Components.TorqueConverterInputData); + + if (testDir == Optional_TESTS_DIR) + { + Assert.IsNull(vehicle.Components.RetarderInputData); + Assert.IsNull(vehicle.Components.AxleGearInputData); + } + else + { + Assert.IsNotNull(vehicle.Components.RetarderInputData); + Assert.IsNotNull(vehicle.Components.AxleGearInputData); + } + + Assert.IsNull(vehicle.Components.AngledriveInputData); + Assert.IsNotNull(vehicle.Components.AxleWheels); + Assert.IsNull(vehicle.Components.AuxiliaryInputData); + Assert.IsNotNull(vehicle.Components.BusAuxiliaries); + Assert.IsNull(vehicle.Components.AirdragInputData); + Assert.IsNotNull(vehicle.Components.ElectricStorage); + Assert.IsNull(vehicle.Components.PTOTransmissionInputData); + Assert.IsNull(vehicle.CargoVolume); + Assert.IsNull(vehicle.TorqueLimits); + Assert.IsNull(vehicle.ElectricMotorTorqueLimits); + Assert.IsNull(vehicle.BoostingLimitations); + } + + //[TestCase(@"PrimaryBus\HEV-S_primaryBus_IEPC-S_IEPC_Std.xml", BASE_DIR)] + //public void TestHEVSPrimaryBusIEPCStd(string jobfile, string testDir) + //{ + // var filename = Path.Combine(testDir, jobfile); + // var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + // Assert.NotNull(dataProvider.JobInputData); + // var vehicle = dataProvider.JobInputData.Vehicle; + + // var iepc = vehicle.Components.IEPC; + // Assert.IsNotNull(iepc); + // Assert.AreEqual(ElectricMachineType.ASM, iepc.ElectricMachineType); + // Assert.AreEqual(CertificationMethod.StandardValues, vehicle.Components.IEPC.CertificationMethod); + + // Assert.AreEqual(1.SI<Watt>(), iepc.R85RatedPower); + // Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), iepc.Inertia);//RotationalInertia + // Assert.AreEqual(200.00.SI<NewtonMeter>(), iepc.ContinuousTorque); + // Assert.AreEqual(2000.00.SI<PerSecond>(), iepc.ContinuousTorqueSpeed);//TestSpeedContinuousTorque + // Assert.AreEqual(400.00.SI<NewtonMeter>(), iepc.OverloadTorque); + // Assert.AreEqual(2000.00.SI<PerSecond>(), iepc.OverloadTestSpeed);//TestSpeedOverloadTorque + // Assert.AreEqual(30.00.SI<Second>(), iepc.OverloadTime);//OverloadDuration + // Assert.AreEqual(false, iepc.DifferentialIncluded); + // Assert.AreEqual(false, iepc.DesignTypeWheelMotor); + // Assert.AreEqual(1, iepc.NrOfDesignTypeWheelMotorMeasured); + + // TestGearsData(iepc.Gears); + // Assert.AreEqual(1, iepc.VoltageLevels.Count); + // TestMaxTorqueCurve(iepc.VoltageLevels[0].FullLoadCurve); + // TestPowerMapData01(iepc.VoltageLevels[0].PowerMap[0]); + // TestDragCurve(iepc.DragCurves[0].DragCurve); + //} + + + + [TestCase(@"HeavyLorry\HEV_heavyLorry_AMT_Px_IHPC.xml", BASE_DIR)] + public void TestHEVHeavyLorryAMTPxIHPC(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + + + var eMachine = vehicle.Components.ElectricMachines.Entries.First(); + Assert.IsNotNull(eMachine); + + Assert.AreEqual(PowertrainPosition.HybridP2, eMachine.Position); + Assert.AreEqual(1, eMachine.Count); + + Assert.AreEqual(ElectricMachineType.ASM, eMachine.ElectricMachine.ElectricMachineType); + Assert.AreEqual(1.SI<Watt>(), eMachine.ElectricMachine.R85RatedPower); + Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), eMachine.ElectricMachine.Inertia); + Assert.AreEqual(true, eMachine.ElectricMachine.DcDcConverterIncluded); + Assert.AreEqual("IHPC Type 1", eMachine.ElectricMachine.IHPCType); + + Assert.AreEqual(2, eMachine.ElectricMachine.VoltageLevels.Count); + Assert.AreEqual(400.SI<Volt>(), eMachine.ElectricMachine.VoltageLevels[0].VoltageLevel); + Assert.AreEqual(2, eMachine.ElectricMachine.VoltageLevels[0].PowerMap.Count); + Assert.AreEqual(1, eMachine.ElectricMachine.VoltageLevels[0].PowerMap[0].Gear); + Assert.AreEqual(2, eMachine.ElectricMachine.VoltageLevels[0].PowerMap[1].Gear); + + Assert.AreEqual(600.SI<Volt>(), eMachine.ElectricMachine.VoltageLevels[1].VoltageLevel); + Assert.AreEqual(2, eMachine.ElectricMachine.VoltageLevels[1].PowerMap.Count); + Assert.AreEqual(1, eMachine.ElectricMachine.VoltageLevels[1].PowerMap[0].Gear); + Assert.AreEqual(2, eMachine.ElectricMachine.VoltageLevels[1].PowerMap[1].Gear); + + Assert.AreEqual(2, eMachine.ElectricMachine.DragCurve.Rows.Count); + Assert.AreEqual(1, eMachine.ElectricMachine.Conditioning.Rows.Count); + } + + + [TestCase(@"MediumLorry\PEV_mediumLorry_AMT_E2_EM_Std.xml", BASE_DIR)] + public void TestPEVMediumLorryAMTE2EMStd(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + Assert.NotNull(dataProvider.JobInputData); + var vehicle = dataProvider.JobInputData.Vehicle; + + Assert.AreEqual(1, vehicle.Components.ElectricMachines.Entries.Count); + var eMachine = vehicle.Components.ElectricMachines.Entries[0]; + Assert.AreEqual(1, eMachine.Count); + Assert.AreEqual(PowertrainPosition.BatteryElectricE2, eMachine.Position); + + Assert.AreEqual(ElectricMachineType.ASM, eMachine.ElectricMachine.ElectricMachineType); + Assert.AreEqual(CertificationMethod.StandardValues, eMachine.ElectricMachine.CertificationMethod); + Assert.AreEqual(1.SI<Watt>(), eMachine.ElectricMachine.R85RatedPower); + Assert.AreEqual(0.10.SI<KilogramSquareMeter>(), eMachine.ElectricMachine.Inertia);//RotationalInertia + Assert.AreEqual(true, eMachine.ElectricMachine.DcDcConverterIncluded); + Assert.AreEqual("None", eMachine.ElectricMachine.IHPCType); + + Assert.AreEqual(1, eMachine.ElectricMachine.VoltageLevels.Count); + TestMaxTorqueCurve(eMachine.ElectricMachine.VoltageLevels[0].FullLoadCurve); + Assert.IsNotNull(eMachine.ElectricMachine.VoltageLevels[0].PowerMap); + TestPowerMapData01(eMachine.ElectricMachine.VoltageLevels[0].PowerMap[0]); + Assert.IsNull(eMachine.ElectricMachine.Conditioning); + + Assert.IsNotNull(eMachine.RatioPerGear); + } + + + + + + + #region Test existence of torque converter + + private void TestTorqueConverter(IVehicleDeclarationInputData vehicle) + { + var torqueConverter = vehicle.Components.TorqueConverterInputData; + switch (vehicle.Components?.GearboxInputData?.Type) + { + case GearboxType.ATPowerSplit: + case GearboxType.ATSerial: + Assert.IsNotNull(torqueConverter); + break; + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24VehicleDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24VehicleDataTest.cs new file mode 100644 index 0000000000000000000000000000000000000000..3afa609e98578e24ef75d00c95730399d831de00 --- /dev/null +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationInputv24VehicleDataTest.cs @@ -0,0 +1,490 @@ +using System.IO; +using System.Xml; +using Ninject; +using NUnit.Framework; +using TUGraz.VectoCommon.InputData; +using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; + +namespace TUGraz.VectoCore.Tests.XML +{ + [TestFixture] + public class XMLDeclarationInputv24VehicleDataTest + { + protected IXMLInputDataReader xmlInputReader; + private IKernel _kernel; + + + private const string Optional_TESTS_DIR = + @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries"; + + [OneTimeSetUp] + public void RunBeforeAnyTests() + { + Directory.SetCurrentDirectory(TestContext.CurrentContext.TestDirectory); + + _kernel = new StandardKernel(new VectoNinjectModule()); + xmlInputReader = _kernel.Get<IXMLInputDataReader>(); + } + + private IXMLDeclarationVehicleData ReadVehicleData(string jobfile, string testDir) + { + var filename = Path.Combine(testDir, jobfile); + var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); + var vehicle = dataProvider.JobInputData.Vehicle as IXMLDeclarationVehicleData; + + Assert.IsNotNull(vehicle); + + return vehicle; + } + + #region Test group parameters + + private void TestChassisLorryParametersSequenceGroup(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(6000.SI<Kilogram>(), vehicle.CurbMassChassis); + Assert.AreEqual(12000.SI<Kilogram>(), vehicle.GrossVehicleMassRating); + } + + private void TestRetarderSequenceGroup(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(RetarderType.LossesIncludedInTransmission, vehicle.RetarderType); + Assert.AreEqual(2.000, vehicle.RetarderRatio); + } + + private void TestxEvParametersSequenceGroup(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(true, vehicle.OvcHev); + Assert.AreEqual(11.SI<Watt>(), vehicle.MaxChargingPower); + } + + + #endregion + + #region Heavy lorry group parmeters + + private void TestHeavyLorryParametersSequenceGroup1(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(LegislativeClass.N3, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.RigidTruck, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicle.AxleConfiguration); + } + + private void TestHeavyLorryParametersSequenceGroup2(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual("None", vehicle.PTOTransmissionInputData.PTOTransmissionType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + Assert.AreEqual(true, vehicle.VocationalVehicle); + Assert.IsNull(vehicle.TankSystem); + Assert.AreEqual(true, vehicle.SleeperCab); + Assert.AreEqual("ASDF", vehicle.VehicleTypeApprovalNumber); + } + + #endregion + + #region Test medium lorry group parameters + + private void TestMediumLorryParametersSequenceGroup1(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(LegislativeClass.N2, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.Tractor, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_6x2, vehicle.AxleConfiguration); + } + + private void TestMediumLorryParameterSequenceGroup2(IXMLDeclarationVehicleData vehicle) + { + if (vehicle.VehicleCategory == VehicleCategory.Van) { + Assert.AreEqual(20, vehicle.CargoVolume.Value()); + } else { + Assert.IsNull(vehicle.CargoVolume); + } + + Assert.AreEqual(AngledriveType.None, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + Assert.IsNull(vehicle.TankSystem); + Assert.AreEqual("ASDF", vehicle.VehicleTypeApprovalNumber); + } + + #endregion + + #region Test primary bus group parameters + + private void TestPrimaryBusParametersSequenceGroup(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.HeavyBusPrimaryVehicle, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicle.AxleConfiguration); + Assert.AreEqual(true, vehicle.Articulated); + Assert.AreEqual(26000.SI<Kilogram>(), vehicle.GrossVehicleMassRating); + } + + private void TestChassisPrimaryBusParametersSequenceGroup(IXMLDeclarationVehicleData vehicle) + { + Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.HeavyBusPrimaryVehicle, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicle.AxleConfiguration); + Assert.AreEqual(true, vehicle.Articulated); + Assert.AreEqual(25000.SI<Kilogram>(), vehicle.GrossVehicleMassRating); + } + + + #endregion + + + [TestCase(@"Conventional_heavyLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalHeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + } + + + [TestCase(@"Conventional_mediumLorry_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalMediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestMediumLorryParametersSequenceGroup1(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + } + + + [TestCase(@"Conventional_primaryBus_AMT_n_opt.xml", Optional_TESTS_DIR)] + public void TestConventionalPrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestPrimaryBusParametersSequenceGroup(vehicle); + Assert.AreEqual(600.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + } + + + [TestCase(@"HEV_heavyLorry_AMT_Px_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPxHeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.P2_5, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV_mediumLorry_AMT_Px_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPxMediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestMediumLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.P2, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV_primaryBus_AMT_Px_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVPxPrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestChassisPrimaryBusParametersSequenceGroup(vehicle); + Assert.AreEqual(600.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + Assert.AreEqual(ArchitectureID.P2, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV-S_heavyLorry_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_heavyLorry_S3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_heavyLorry_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVSxHeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + switch (jobfile) { + case "HEV-S_heavyLorry_AMT_S2_n_opt.xml": + Assert.AreEqual(ArchitectureID.S2, vehicle.ArchitectureID); + Assert.AreEqual(660.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_heavyLorry_S3_n_opt.xml": + Assert.AreEqual(ArchitectureID.S3, vehicle.ArchitectureID); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_heavyLorry_S4_n_opt.xml": + Assert.AreEqual(ArchitectureID.S4, vehicle.ArchitectureID); + Assert.AreEqual(640.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV-S_mediumLorry_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_mediumLorry_S3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_mediumLorry_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVSxMediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestMediumLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + + switch (jobfile) + { + case "HEV-S_mediumLorry_AMT_S2_n_opt.xml": + Assert.AreEqual(ArchitectureID.S2, vehicle.ArchitectureID); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_mediumLorry_S3_n_opt.xml": + Assert.AreEqual(ArchitectureID.S3, vehicle.ArchitectureID); + Assert.AreEqual(660.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_mediumLorry_S4_n_opt.xml": + Assert.AreEqual(ArchitectureID.S4, vehicle.ArchitectureID); + Assert.AreEqual(640.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV-S_primaryBus_AMT_S2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_primaryBus_S3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"HEV-S_primaryBus_S4_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEVSxPrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestChassisPrimaryBusParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.IsNull(vehicle.PTONode); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + + switch (jobfile) + { + case "HEV-S_primaryBus_AMT_S2_n_opt.xml": + Assert.AreEqual(ArchitectureID.S2, vehicle.ArchitectureID); + Assert.AreEqual(600.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_primaryBus_S3_n_opt.xml": + Assert.AreEqual(ArchitectureID.S3, vehicle.ArchitectureID); + Assert.AreEqual(610.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + case "HEV-S_primaryBus_S4_n_opt.xml": + Assert.AreEqual(ArchitectureID.S4, vehicle.ArchitectureID); + Assert.AreEqual(620.00.RPMtoRad(), vehicle.EngineIdleSpeed); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + [TestCase(@"HEV-S_heavyLorry_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEV_IEPC_S_HeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.S_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"HEV-S_mediumLorry_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEV_IEPC_S_MediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestMediumLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + Assert.AreEqual(650.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.S_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + [TestCase(@"HEV-S_primaryBus_IEPC-S_n_opt.xml", Optional_TESTS_DIR)] + public void TestHEV_IEPC_S_PrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestChassisPrimaryBusParametersSequenceGroup(vehicle); + Assert.AreEqual(600.00.RPMtoRad(), vehicle.EngineIdleSpeed); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + Assert.AreEqual(ArchitectureID.S_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + [TestCase(@"PEV_heavyLorry_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_heavyLorry_E3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_heavyLorry_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVHeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + + switch (jobfile) + { + case "PEV_heavyLorry_AMT_E2_n_opt.xml": + Assert.AreEqual(ArchitectureID.E2, vehicle.ArchitectureID); + break; + case "PEV_heavyLorry_E3_n_opt.xml": + Assert.AreEqual(ArchitectureID.E3, vehicle.ArchitectureID); + break; + case "PEV_heavyLorry_E4_n_opt.xml": + Assert.AreEqual(ArchitectureID.E4, vehicle.ArchitectureID); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"PEV_mediumLorry_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_mediumLorry_E3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_mediumLorry_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVMediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestMediumLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + + + switch (jobfile) + { + case "PEV_mediumLorry_AMT_E2_n_opt.xml": + Assert.AreEqual(ArchitectureID.E2, vehicle.ArchitectureID); + break; + case "PEV_mediumLorry_E3_n_opt.xml": + Assert.AreEqual(ArchitectureID.E3, vehicle.ArchitectureID); + break; + case "PEV_mediumLorry_E4_n_opt.xml": + Assert.AreEqual(ArchitectureID.E4, vehicle.ArchitectureID); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"PEV_primaryBus_AMT_E2_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_primaryBus_E3_n_opt.xml", Optional_TESTS_DIR)] + [TestCase(@"PEV_primaryBus_E4_n_opt.xml", Optional_TESTS_DIR)] + public void TestPEVPrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestChassisPrimaryBusParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + + switch (jobfile) + { + case "PEV_primaryBus_AMT_E2_n_opt.xml": + Assert.AreEqual(ArchitectureID.E2, vehicle.ArchitectureID); + break; + case "PEV_primaryBus_E3_n_opt.xml": + Assert.AreEqual(ArchitectureID.E3, vehicle.ArchitectureID); + break; + case "PEV_primaryBus_E4_n_opt.xml": + Assert.AreEqual(ArchitectureID.E4, vehicle.ArchitectureID); + break; + } + + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"IEPC_heavyLorry_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCHeavyLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestHeavyLorryParametersSequenceGroup1(vehicle); + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestHeavyLorryParametersSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.E_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"IEPC_mediumLorry_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCMediumLorryVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + Assert.AreEqual(LegislativeClass.N2, vehicle.LegislativeClass); + Assert.AreEqual(VehicleCategory.Van, vehicle.VehicleCategory); + Assert.AreEqual(AxleConfiguration.AxleConfig_4x2, vehicle.AxleConfiguration); + + TestChassisLorryParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + TestMediumLorryParameterSequenceGroup2(vehicle); + Assert.AreEqual(ArchitectureID.E_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + + + [TestCase(@"IEPC_primaryBus_n_opt.xml", Optional_TESTS_DIR)] + public void TestIEPCPrimaryBusVehicleData(string jobfile, string testDir) + { + var vehicle = ReadVehicleData(jobfile, testDir); + + TestChassisPrimaryBusParametersSequenceGroup(vehicle); + TestRetarderSequenceGroup(vehicle); + Assert.AreEqual(AngledriveType.SeparateAngledrive, vehicle.AngledriveType); + Assert.AreEqual(true, vehicle.ZeroEmissionVehicle); + Assert.AreEqual(ArchitectureID.E_IEPC, vehicle.ArchitectureID); + TestxEvParametersSequenceGroup(vehicle); + } + } +} diff --git a/VectoCore/VectoCoreTest/XML/XMLDeclarationReaderVersionsTest.cs b/VectoCore/VectoCoreTest/XML/XMLDeclarationReaderVersionsTest.cs index 13c06eb66367ab2b9ba5b8a9fec885b45e8e5602..6f5665683b985cb88d7b54ce15e9f0d39148ceef 100644 --- a/VectoCore/VectoCoreTest/XML/XMLDeclarationReaderVersionsTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLDeclarationReaderVersionsTest.cs @@ -38,6 +38,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; @@ -119,7 +120,7 @@ namespace TUGraz.VectoCore.Tests.XML [TestCase(@"TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry-Van.xml", TestName = "Medium Lorry Van"), TestCase(@"TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry.xml", TestName = "Medium Lorry"), - TestCase(@"TestData\Integration\MediumLorries\vecto_vehicle-medium_lorryFWD.xml", TestName = "Medium Lorry FWD"), + //TestCase(@"TestData\Integration\MediumLorries\vecto_vehicle-medium_lorryFWD.xml", TestName = "Medium Lorry FWD"), // FWD no longer supported / required ] public void CreateRunDataMediumLorry(string jobFile) { @@ -128,11 +129,9 @@ namespace TUGraz.VectoCore.Tests.XML var writer = new FileOutputWriter(jobFile); var inputData = xmlInputReader.CreateDeclaration(jobFile); - var factory = new SimulatorFactory(ExecutionMode.Declaration, inputData, writer) { - WriteModalResults = true, - //ActualModalData = true, - Validate = false - }; + var factory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, inputData, writer); + factory.WriteModalResults = true; //ActualModalData = true, + factory.Validate = false; var jobContainer = new JobContainer(new SummaryDataContainer(writer)); jobContainer.AddRuns(factory); jobContainer.Execute(); @@ -161,12 +160,11 @@ namespace TUGraz.VectoCore.Tests.XML //var sumWriter = new SummaryDataContainer(fileWriter); //var jobContainer = new JobContainer(sumWriter); var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = false, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = false; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; var runs = runsFactory.SimulationRuns().ToArray(); Assert.IsTrue(runs.Length > 0); diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs index 0cdd7a33f1155fa7a83314171b360477ce843c7b..e0c0068ab735dfe618f1eb956f8fb43a9f20696d 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusConsolidatedInputDataTest.cs @@ -59,7 +59,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(LegislativeClass.M3, vehicle.LegislativeClass); Assert.AreEqual(15000, vehicle.CurbMassChassis.Value());//CorrectedActualMass Assert.AreEqual(20000, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass - Assert.AreEqual(null, vehicle.AirdragModifiedMultistage); + Assert.AreEqual(null, vehicle.AirdragModifiedMultistep); Assert.AreEqual(TankSystem.Liquefied, vehicle.TankSystem);//NgTankSystem Assert.AreEqual(RegistrationClass.B, vehicle.RegisteredClass);//ClassBus Assert.AreEqual(11, vehicle.NumberPassengerSeatsLowerDeck); @@ -91,18 +91,18 @@ namespace TUGraz.VectoCore.Tests.XML var busHVACAux = vehicle.Components.BusAuxiliaries.HVACAux; Assert.AreEqual(BusHVACSystemConfiguration.Configuration1, busHVACAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, busHVACAux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, busHVACAux.HeatPumpModeDriverCompartment); - Assert.AreEqual(1, busHVACAux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busHVACAux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, busHVACAux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, busHVACAux.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, busHVACAux.HeatPumpTypeHeatingDriverCompartment); + //Assert.AreEqual(1, busHVACAux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, busHVACAux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, busHVACAux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(50, busHVACAux.AuxHeaterPower.Value()); Assert.AreEqual(false, busHVACAux.DoubleGlazing); Assert.AreEqual(true, busHVACAux.AdjustableAuxiliaryHeater); Assert.AreEqual(false, busHVACAux.SeparateAirDistributionDucts); - Assert.AreEqual(false, busHVACAux.WaterElectricHeater); - Assert.AreEqual(false, busHVACAux.AirElectricHeater); - Assert.AreEqual(true, busHVACAux.OtherHeatingTechnology); + //Assert.AreEqual(false, busHVACAux.WaterElectricHeater); + //Assert.AreEqual(false, busHVACAux.AirElectricHeater); + //Assert.AreEqual(true, busHVACAux.OtherHeatingTechnology); } @@ -113,7 +113,8 @@ namespace TUGraz.VectoCore.Tests.XML var inputDataProvider = _xmlInputReader.Create(reader) as IMultistageBusInputDataProvider; Assert.AreEqual(null, inputDataProvider.JobInputData.ManufacturingStages); - Assert.AreEqual(null, inputDataProvider.JobInputData.ConsolidateManufacturingStage); + //The consolidated ManufacturingStage is now always created, and can hold some values from the primary vehicle (i.e. TPMLM) + //Assert.AreEqual(null, inputDataProvider.JobInputData.ConsolidateManufacturingStage); Assert.AreEqual(false, inputDataProvider.JobInputData.InputComplete); } @@ -133,8 +134,8 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(DateTime.Parse("2018-02-15T11:00:00Z").ToUniversalTime(), vehicle.Date); Assert.AreEqual(null, vehicle.LegislativeClass); Assert.AreEqual(null, vehicle.CurbMassChassis);//CorrectedActualMass - Assert.AreEqual(null, vehicle.GrossVehicleMassRating);//TechnicalPermissibleMaximumLadenMass - Assert.AreEqual(null, vehicle.AirdragModifiedMultistage); + Assert.AreEqual(4000, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass + Assert.AreEqual(null, vehicle.AirdragModifiedMultistep); Assert.AreEqual(null, vehicle.TankSystem);//NgTankSystem Assert.AreEqual(null, vehicle.RegisteredClass);//ClassBus Assert.AreEqual(null, vehicle.NumberPassengerSeatsLowerDeck); @@ -150,7 +151,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(null, vehicle.DoorDriveTechnology); Assert.AreEqual(VehicleDeclarationType.interim, vehicle.VehicleDeclarationType); - Assert.AreEqual(null, vehicle.ADAS); + Assert.NotNull(vehicle.ADAS); Assert.AreEqual(null, vehicle.Components); @@ -171,8 +172,8 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(DateTime.Parse("2021-02-13T07:20:08.0187663Z").ToUniversalTime(), vehicle.Date); Assert.AreEqual(null, vehicle.LegislativeClass); Assert.AreEqual(15000, vehicle.CurbMassChassis.Value());//CorrectedActualMass - Assert.AreEqual(null, vehicle.GrossVehicleMassRating);//TechnicalPermissibleMaximumLadenMass - Assert.AreEqual(null, vehicle.AirdragModifiedMultistage); + Assert.AreEqual(4000, vehicle.GrossVehicleMassRating.Value());//TechnicalPermissibleMaximumLadenMass + Assert.AreEqual(null, vehicle.AirdragModifiedMultistep); Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem);//NgTankSystem Assert.AreEqual(null, vehicle.RegisteredClass);//ClassBus Assert.AreEqual(12, vehicle.NumberPassengerSeatsLowerDeck); @@ -205,13 +206,13 @@ namespace TUGraz.VectoCore.Tests.XML var hvaux = inputDataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.NotNull(hvaux); - Assert.AreEqual(HeatPumpMode.heating, hvaux.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(2, hvaux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvaux.HeatPumpPassengerCompartments[0].Item2); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpPassengerCompartments[1].Item1); - Assert.AreEqual(HeatPumpMode.heating, hvaux.HeatPumpPassengerCompartments[1].Item2); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeHeatingDriverCompartment); + //Assert.AreEqual(2, hvaux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeHeatingPassengerCompartment); + //Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpPassengerCompartments[1].Item1); + //Assert.AreEqual(HeatPumpMode.heating, hvaux.HeatPumpPassengerCompartments[1].Item2); Assert.AreEqual(true, inputDataProvider.JobInputData.InputComplete); } @@ -224,11 +225,11 @@ namespace TUGraz.VectoCore.Tests.XML var hvaux = inputDataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.NotNull(hvaux); - Assert.AreEqual(HeatPumpMode.N_A, hvaux.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvaux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.not_applicable, hvaux.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeCoolingDriverCompartment); + //Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(true, inputDataProvider.JobInputData.InputComplete); } @@ -241,11 +242,11 @@ namespace TUGraz.VectoCore.Tests.XML var hvaux = inputDataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.NotNull(hvaux); - Assert.AreEqual(HeatPumpMode.heating, hvaux.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvaux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeHeatingDriverCompartment); + //Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(true, inputDataProvider.JobInputData.InputComplete); } @@ -258,11 +259,11 @@ namespace TUGraz.VectoCore.Tests.XML var hvaux = inputDataProvider.JobInputData.ConsolidateManufacturingStage.Vehicle.Components.BusAuxiliaries.HVACAux; Assert.NotNull(hvaux); - Assert.AreEqual(HeatPumpMode.heating, hvaux.HeatPumpModeDriverCompartment); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvaux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvaux.HeatPumpTypeCoolingDriverCompartment); + //Assert.AreEqual(1, hvaux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvaux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvaux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(true, inputDataProvider.JobInputData.InputComplete); diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs index 6eb57e694e83f1c7c5d3ce9cb74f63a9309e49a0..e6f64bb85b0d4ca7add6630ec87f1193ace9140e 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusDataTest.cs @@ -545,10 +545,10 @@ namespace TUGraz.VectoCore.Tests.XML private void TestManufacturingStag01(IManufacturingStageInputData manufacturingStage) { - Assert.AreEqual(2, manufacturingStage.StageCount); + Assert.AreEqual(2, manufacturingStage.StepCount); TestDigestData("#PIF-d10aff76c5d149948046", "nI+57QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=", - manufacturingStage.HashPreviousStage); + manufacturingStage.HashPreviousStep); TestVehicleDataStage01(manufacturingStage.Vehicle); @@ -576,7 +576,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(null, vehicleData.LegislativeClass); Assert.AreEqual(null, vehicleData.CurbMassChassis); Assert.AreEqual(null, vehicleData.GrossVehicleMassRating); - Assert.AreEqual(null, vehicleData.AirdragModifiedMultistage); + Assert.AreEqual(null, vehicleData.AirdragModifiedMultistep); Assert.AreEqual(null, vehicleData.TankSystem); Assert.AreEqual(null, vehicleData.RegisteredClass); Assert.AreEqual(null, vehicleData.NumberPassengerSeatsLowerDeck); @@ -600,10 +600,10 @@ namespace TUGraz.VectoCore.Tests.XML private void TestManufacturingStag02(IManufacturingStageInputData manufacturingStage) { - Assert.AreEqual(3, manufacturingStage.StageCount); + Assert.AreEqual(3, manufacturingStage.StepCount); TestDigestData("#RESULT-6f30c7fe665a47938f6b", "BMpFCKh1bu/YPwYj37kJK1uCrv++BTLf2OUZcOt43Os=", - manufacturingStage.HashPreviousStage); + manufacturingStage.HashPreviousStep); TestVehicleDataStage02(manufacturingStage.Vehicle); } @@ -615,7 +615,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual("Intermediate Manufacturer Address 2", vehicleData.ManufacturerAddress); Assert.AreEqual("VEH-2234567890", vehicleData.VIN); Assert.AreEqual(DateTime.Parse("2021-02-13T07:20:08.0187663Z").ToUniversalTime(), vehicleData.Date); - Assert.AreEqual(null, vehicleData.AirdragModifiedMultistage); + Assert.AreEqual(null, vehicleData.AirdragModifiedMultistep); Assert.AreEqual(VehicleDeclarationType.final, vehicleData.VehicleDeclarationType); Assert.AreEqual(true, vehicleData.ADAS.EngineStopStart); @@ -631,18 +631,18 @@ namespace TUGraz.VectoCore.Tests.XML var hvacAux = vehicleData.Components.BusAuxiliaries.HVACAux; Assert.AreEqual(BusHVACSystemConfiguration.Configuration1, hvacAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment); - Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeCoolingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeHeatingDriverCompartment); + //Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeHeatingPassengerCompartment); Assert.AreEqual(50.SI<Watt>(), hvacAux.AuxHeaterPower); Assert.AreEqual(false, hvacAux.DoubleGlazing); Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); - Assert.AreEqual(false, hvacAux.WaterElectricHeater); - Assert.AreEqual(false, hvacAux.AirElectricHeater); - Assert.AreEqual(true, hvacAux.OtherHeatingTechnology); + //Assert.AreEqual(false, hvacAux.WaterElectricHeater); + //Assert.AreEqual(false, hvacAux.AirElectricHeater); + //Assert.AreEqual(true, hvacAux.OtherHeatingTechnology); } #endregion @@ -682,10 +682,10 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(1, manufacturingStages.Count); var stageData = manufacturingStages[0]; - Assert.AreEqual(2, stageData.StageCount); + Assert.AreEqual(2, stageData.StepCount); TestDigestData("#PIF-d11aff76c5d149948046", "nI+67QQtWA2rFqJTZ41t0XrXcJbcGmc7j4E66iGJyT0=", - stageData.HashPreviousStage); + stageData.HashPreviousStep); TestVehicleDataVIF02(stageData.Vehicle); @@ -706,7 +706,7 @@ namespace TUGraz.VectoCore.Tests.XML Assert.AreEqual(LegislativeClass.M3, vehicleData.LegislativeClass); Assert.AreEqual(25000.SI<Kilogram>(), vehicleData.CurbMassChassis); Assert.AreEqual(30000.SI<Kilogram>(), vehicleData.GrossVehicleMassRating); - Assert.AreEqual(null, vehicleData.AirdragModifiedMultistage); + Assert.AreEqual(null, vehicleData.AirdragModifiedMultistep); Assert.AreEqual(TankSystem.Liquefied, vehicleData.TankSystem); Assert.AreEqual(RegistrationClass.B, vehicleData.RegisteredClass); Assert.AreEqual(24, vehicleData.NumberPassengerSeatsLowerDeck); @@ -747,18 +747,18 @@ namespace TUGraz.VectoCore.Tests.XML var hvacAux = busAux.HVACAux; Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment); - Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[0].Item2); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeCoolingDriverCompartment); + //Assert.AreEqual(1, hvacAux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeHeatingPassengerCompartment); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeCoolingPassengerCompartment); Assert.AreEqual(40.SI<Watt>(), hvacAux.AuxHeaterPower); Assert.AreEqual(false, hvacAux.DoubleGlazing); Assert.AreEqual(false, hvacAux.AdjustableAuxiliaryHeater); Assert.AreEqual(true, hvacAux.SeparateAirDistributionDucts); - Assert.AreEqual(false, hvacAux.WaterElectricHeater); - Assert.AreEqual(true, hvacAux.AirElectricHeater); - Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); + //Assert.AreEqual(false, hvacAux.WaterElectricHeater); + //Assert.AreEqual(true, hvacAux.AirElectricHeater); + //Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); } private void TestAirdragVIF02(IAirdragDeclarationInputData airdragData) diff --git a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs index f8ffca2207b8fda49f5ea9a2cf48564252dfa78d..78f240ab8f58e9463ad2f02b632c8253ce68c7d6 100644 --- a/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLMultistageBusInputDataTest.cs @@ -6,6 +6,7 @@ using NUnit.Framework; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; +using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML; namespace TUGraz.VectoCore.Tests.XML @@ -17,7 +18,7 @@ namespace TUGraz.VectoCore.Tests.XML protected IXMLInputDataReader xmlInputReader; private IKernel _kernel; - const string DirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\"; + const string DirPath = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\"; const string VehicleInterimStageInput = DirPath + "vecto_vehicle-stage_input_full-sample.xml"; const string VehicleExemptedInterimStageInput = DirPath + "vecto_vehicle-exempted_input_full-sample.xml"; const string VehicleExemptedMandatoryOnly = DirPath + "vecto_vehicle-exempted_input_only_mandatory_entries.xml"; @@ -60,7 +61,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(true, vehicle.AirdragModifiedMultistage); + Assert.AreEqual(true, vehicle.AirdragModifiedMultistep); Assert.AreEqual(TankSystem.Compressed, vehicle.TankSystem);//NgTankSystem Assert.AreEqual(RegistrationClass.II_III, vehicle.RegisteredClass);//ClassBus Assert.AreEqual(1, vehicle.NumberPassengerSeatsLowerDeck); @@ -122,22 +123,27 @@ namespace TUGraz.VectoCore.Tests.XML private void TestHVACComponent(IHVACBusAuxiliariesDeclarationData hvacAux) { Assert.AreEqual(BusHVACSystemConfiguration.Configuration0, hvacAux.SystemConfiguration); - Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeDriverCompartment); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpModeDriverCompartment); - Assert.AreEqual(3, hvacAux.HeatPumpPassengerCompartments.Count); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[0].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[0].Item2); - Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[1].Item1); - Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[1].Item2); - Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[2].Item1); - Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[2].Item2); + Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpTypeHeatingDriverCompartment); + Assert.AreEqual(HeatPumpType.none, hvacAux.HeatPumpTypeCoolingDriverCompartment); + //Assert.AreEqual(3, hvacAux.HeatPumpPassengerCompartments.Count); + Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpTypeCoolingPassengerCompartment); + Assert.AreEqual(HeatPumpType.non_R_744_4_stage , hvacAux.HeatPumpTypeHeatingPassengerCompartment); + //Assert.AreEqual(HeatPumpType.non_R_744_3_stage, hvacAux.HeatPumpPassengerCompartments[1].Item1); + //Assert.AreEqual(HeatPumpMode.heating, hvacAux.HeatPumpPassengerCompartments[1].Item2); + //Assert.AreEqual(HeatPumpType.non_R_744_2_stage, hvacAux.HeatPumpPassengerCompartments[2].Item1); + //Assert.AreEqual(HeatPumpMode.cooling, hvacAux.HeatPumpPassengerCompartments[2].Item2); Assert.AreEqual(50, hvacAux.AuxHeaterPower.Value()); Assert.AreEqual(false, hvacAux.DoubleGlazing); Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); - Assert.AreEqual(true, hvacAux.WaterElectricHeater); - Assert.AreEqual(false, hvacAux.AirElectricHeater); - Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); + Assert.AreEqual(50.SI<Watt>(), hvacAux.AuxHeaterPower); + Assert.AreEqual(false, hvacAux.DoubleGlazing); + Assert.AreEqual(true, hvacAux.AdjustableAuxiliaryHeater); + Assert.AreEqual(false, hvacAux.SeparateAirDistributionDucts); + + //Assert.AreEqual(true, hvacAux.WaterElectricHeater); + //Assert.AreEqual(false, hvacAux.AirElectricHeater); + //Assert.AreEqual(false, hvacAux.OtherHeatingTechnology); } @@ -247,44 +253,22 @@ namespace TUGraz.VectoCore.Tests.XML Assert.IsNotNull(airdrag); } - [TestCase()] - public void TestValidateInputMultistageExampleFiles() + [TestCase(ExemptedInputFullSample), + TestCase(ExemptedOnlyCertainEntries01), + TestCase(ExemptedOnlyCertainEntries02), + TestCase(ExemptedSample), + TestCase(NewParamSample), + TestCase(VehicleSample), + TestCase(StageInputFullSample), + TestCase(StageInputCertainEntriesEntries01), + TestCase(StageInputCertainEntriesEntries02), + ] + public void TestValidateInputMultistageExampleFiles(string fileName) { - var reader = XmlReader.Create(ExemptedInputFullSample); + var reader = XmlReader.Create(fileName); var inputDataProvider = xmlInputReader.CreateDeclaration(reader); Assert.IsNotNull(inputDataProvider); - reader = XmlReader.Create(ExemptedOnlyCertainEntries01); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(ExemptedOnlyCertainEntries02); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(ExemptedSample); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(NewParamSample); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(VehicleSample); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(StageInputFullSample); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(StageInputCertainEntriesEntries01); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); - - reader = XmlReader.Create(StageInputCertainEntriesEntries02); - inputDataProvider = xmlInputReader.CreateDeclaration(reader); - Assert.IsNotNull(inputDataProvider); } } } diff --git a/VectoCore/VectoCoreTest/XML/XMLPrimaryBusInputDataTest.cs b/VectoCore/VectoCoreTest/XML/XMLPrimaryBusInputDataTest.cs index 7a4538a9887cbf8bd4b0b9139236adc33948138e..b56634bd7afe6bee70a425a93bf569f080090dba 100644 --- a/VectoCore/VectoCoreTest/XML/XMLPrimaryBusInputDataTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLPrimaryBusInputDataTest.cs @@ -14,7 +14,7 @@ namespace TUGraz.VectoCore.Tests.XML protected IXMLInputDataReader xmlInputReader; private IKernel _kernel; - const string SampleVehicleDecl = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml"; + const string SampleVehicleDecl = @"TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBus-sample.xml"; [OneTimeSetUp] diff --git a/VectoCore/VectoCoreTest/XML/XMLReportTest.cs b/VectoCore/VectoCoreTest/XML/XMLReportTest.cs index 7f595f7ff669ceee478fa43a87c1ccb87ba0812c..8d577a78d3ac5912dd2896b200f66290061232c1 100644 --- a/VectoCore/VectoCoreTest/XML/XMLReportTest.cs +++ b/VectoCore/VectoCoreTest/XML/XMLReportTest.cs @@ -38,6 +38,7 @@ using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML; using TUGraz.VectoCore.Models.Simulation.Impl; +using TUGraz.VectoCore.Models.Simulation.Impl.SimulatorFactory; using TUGraz.VectoCore.OutputData; using TUGraz.VectoCore.OutputData.FileIO; using TUGraz.VectoCore.Utils; @@ -79,12 +80,11 @@ namespace TUGraz.VectoCore.Tests.XML var sumWriter = new SummaryDataContainer(fileWriter); var jobContainer = new JobContainer(sumWriter); var dataProvider = xmlInputReader.CreateDeclaration(XmlReader.Create(filename)); - var runsFactory = new SimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter) { - ModalResults1Hz = false, - WriteModalResults = false, - ActualModalData = false, - Validate = false, - }; + var runsFactory = SimulatorFactory.CreateSimulatorFactory(ExecutionMode.Declaration, dataProvider, fileWriter); + runsFactory.ModalResults1Hz = false; + runsFactory.WriteModalResults = false; + runsFactory.ActualModalData = false; + runsFactory.Validate = false; jobContainer.AddRuns(runsFactory); jobContainer.Execute(); jobContainer.WaitFinished(); diff --git a/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml new file mode 100644 index 0000000000000000000000000000000000000000..2abcc0a6799026518aea6383501a518c7a206a5a --- /dev/null +++ b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/CompletedHeavyBus_33b1.RSLT_VIF.xml @@ -0,0 +1,681 @@ +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep 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:v2.3" +xmlns:v2.4="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" +xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 v:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd"> + <PrimaryVehicle> + <Data xsi:type="PrimaryVehicleDataType" id="PIF-584956b9e3ab43acaf97"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model Primary</Model> + <VIN>VEH-1234567890_SmartPS</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>40000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <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> + </ADAS> + <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"/> + <tcl:Entry gear="12" maxTorque="1900"/> + </TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer> + <Model>Bus 6x2 Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>1800</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.3">false</ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>600</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00"/> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00"/> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00"/> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00"/> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00"/> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00"/> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00"/> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00"/> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00"/> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00"/> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>Diesel CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox Primary</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear Primary</Model> + <CertificationMethod>Standard values</CertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <!-- <AxleWheels xmlns:pbus="urn:tugraz:ivt:VectoAPI:DeclarationOutput:PrimaryVehicleInformation:HeavyBus:v0.1" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="AxleWheelsComponentDeclarationType"> + <Data xsi:type="AxleWheelsDataDeclarationType"> +--> + <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:Axle axleNumber="3" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</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.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> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + <SupplyFromHEVPossible>false</SupplyFromHEVPossible> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>mechanically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>true</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_SmartPS"> + <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>KyEUoR+pb/fnqRuLFC53Ft+RhDf+ABAdd1xxsMwH7io=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-77ea5cb9575a4fe3b401"> + <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>jIFYjdZEqVpxFinMBSoXvJg8Wl3OjE09xRAnjEgnhhY=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">21.22359</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1555.73</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">25.40945</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1862.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">16.74101</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1227.15</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">20.24221</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1483.80</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">14.34578</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1051.58</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.60016</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1290.13</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.72091</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1665.49</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">27.95930</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">2049.48</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.90756</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1312.66</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.23796</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1630.09</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.28035</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1120.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">19.26201</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1411.95</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16239.55</TotalVehicleMass> + <Payload unit="kg">1026.55</Payload> + <PassengerCount>14.46</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.82464</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">866.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> + <Payload unit="kg">4106.21</Payload> + <PassengerCount>57.83</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.32341</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">976.63</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> + <Payload unit="kg">1277.49</Payload> + <PassengerCount>17.99</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">8.71847</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">639.08</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> + <Payload unit="kg">3193.72</Payload> + <PassengerCount>44.98</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.20255</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">674.57</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19298.40</TotalVehicleMass> + <Payload unit="kg">1448.40</Payload> + <PassengerCount>20.40</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.44807</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">985.77</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> + <Payload unit="kg">5793.60</Payload> + <PassengerCount>81.60</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.56740</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1141.12</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> + <Payload unit="kg">1853.95</Payload> + <PassengerCount>26.11</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.82937</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">720.51</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> + <Payload unit="kg">4634.88</Payload> + <PassengerCount>65.28</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">10.56728</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">774.60</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2020-05-27T08:16:48.0278823Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#PIF-584956b9e3ab43acaf97"> + <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>GPW3cyV+VQrDzyGeryMrakfOlD+YUWtdaHz/C2lhxJQ=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> + <ManufacturingStep stepCount="2"> + <Data xsi:type="vif0.1:BusManufacturingStepDataType" id="asdf"> + <HashPreviousStep> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </HashPreviousStep> + <vif0.1:Vehicle xsi:type="Vehicle_Conventional_CompletedBusDeclarationType" id="MST-1234" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <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>8300</CorrectedActualMass> + <TechnicalPermissibleMaximumLadenMass>18000</TechnicalPermissibleMaximumLadenMass> + <AirdragModifiedMultistep>true</AirdragModifiedMultistep> + <ClassBus>I+II</ClassBus> + <NumberPassengerSeatsLowerDeck>30</NumberPassengerSeatsLowerDeck> + <NumberPassengersStandingLowerDeck>0</NumberPassengersStandingLowerDeck> + <NumberPassengerSeatsUpperDeck>0</NumberPassengerSeatsUpperDeck> + <NumberPassengersStandingUpperDeck>0</NumberPassengersStandingUpperDeck> + <BodyworkCode>CE</BodyworkCode> + <LowEntry>true</LowEntry> + <HeightIntegratedBody>3000</HeightIntegratedBody> + <VehicleLength>11830</VehicleLength> + <VehicleWidth>2550</VehicleWidth> + <EntranceHeight>120</EntranceHeight> + <DoorDriveTechnology>pneumatic</DoorDriveTechnology> + <VehicleDeclarationType>final</VehicleDeclarationType> + <VehicleTypeApprovalNumber>1234567890</VehicleTypeApprovalNumber> + <Components xsi:type="Components_Conventional_CompletedBusType"> + <v2.4:AirDrag xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType"> + <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>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <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> + </Signature> + </v2.4:AirDrag> + <Auxiliaries> + <Data xsi:type="AUX_Conventional_CompletedBusType"> + <ElectricSystem> + <LEDLights> + <Interiorlights>false</Interiorlights> + <Dayrunninglights>false</Dayrunninglights> + <Positionlights>false</Positionlights> + <Brakelights>false</Brakelights> + <Headlights>false</Headlights> + </LEDLights> + </ElectricSystem> + <HVAC> + <SystemConfiguration>7</SystemConfiguration> + <HeatPumpTypeDriverCompartment> + <Cooling>none</Cooling> + <Heating>non R-744 2-stage</Heating> + </HeatPumpTypeDriverCompartment> + <HeatPumpTypePassengerCompartment> + <Cooling>non R-744 4-stage</Cooling> + <Heating>none</Heating> + </HeatPumpTypePassengerCompartment> + <AuxiliaryHeaterPower>0</AuxiliaryHeaterPower> + <DoubleGlazing>true</DoubleGlazing> + <AdjustableAuxiliaryHeater>true</AdjustableAuxiliaryHeater> + <SeparateAirDistributionDucts>true</SeparateAirDistributionDucts> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </vif0.1:Vehicle> + <ApplicationInformation> + <SimulationToolVersion>0.6.1.1957-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2020-05-27T08:16:48.0278823Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference> + <di:DigestMethod Algorithm=""/> + <di:DigestValue/> + </di:Reference> + </Signature> + </ManufacturingStep> +</VectoOutputMultistep> diff --git a/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml new file mode 100644 index 0000000000000000000000000000000000000000..7b67c6a129caa3df120c394dc5ac61f15802c808 --- /dev/null +++ b/VectoCore/VectoCoreTest/bin/Debug/TestData/Integration/Buses/FactorMethod/primary_heavyBus group42_SmartPS.RSLT_VIF.xml @@ -0,0 +1,604 @@ +<?xml version="1.0" encoding="utf-8"?> +<VectoOutputMultistep xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" 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:v2.3" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistep.0.1.xsd" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <PrimaryVehicle> + <Data id="VEH-dda89003b1894b738e01" xsi:type="PrimaryVehicleDataType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1"> + <Vehicle xsi:type="VehiclePIFType"> + <ManufacturerPrimaryVehicle>Generic Truck Manufacturer</ManufacturerPrimaryVehicle> + <ManufacturerAddressPrimaryVehicle>Street, ZIP City</ManufacturerAddressPrimaryVehicle> + <Model>Generic Model Primary</Model> + <VIN>VEH-1234567890_SmartPS</VIN> + <Date>2017-02-15T11:00:00Z</Date> + <LegislativeCategory>M3</LegislativeCategory> + <ChassisConfiguration>Bus</ChassisConfiguration> + <AxleConfiguration>6x2</AxleConfiguration> + <Articulated>false</Articulated> + <TechnicalPermissibleMaximumLadenMass>25000</TechnicalPermissibleMaximumLadenMass> + <IdlingSpeed>600</IdlingSpeed> + <RetarderType>Transmission Output Retarder</RetarderType> + <RetarderRatio>1.000</RetarderRatio> + <AngledriveType>None</AngledriveType> + <ZeroEmissionVehicle>false</ZeroEmissionVehicle> + <vif0.1:ADAS xsi:type="ADAS_Conventional_Type" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.4"> + <EngineStopStart>false</EngineStopStart> + <EcoRollWithoutEngineStop>false</EcoRollWithoutEngineStop> + <EcoRollWithEngineStop>false</EcoRollWithEngineStop> + <PredictiveCruiseControl>none</PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xsi:type="TorqueLimitsType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Entry gear="6" maxTorque="1800" /> + <Entry gear="1" maxTorque="2500" /> + <Entry gear="12" maxTorque="1900" /> + </vif0.1:TorqueLimits> + <Components xsi:type="VehicleComponentsPIFType"> + <Engine> + <Data xsi:type="EngineDataPIFType"> + <Manufacturer>Generic Engine Manufacturer Primary</Manufacturer> + <Model>Bus 6x2 Engine</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-02-15T11:00:00Z</Date> + <AppVersion>VectoEngine x.y</AppVersion> + <Displacement>12730</Displacement> + <RatedSpeed>1800</RatedSpeed> + <RatedPower>325032</RatedPower> + <MaxEngineTorque>2134</MaxEngineTorque> + <WHRType> + <v2.3:MechanicalOutputICE>false</v2.3:MechanicalOutputICE> + <v2.3:MechanicalOutputDrivetrain>false</v2.3:MechanicalOutputDrivetrain> + <v2.3:ElectricalOutput>false</v2.3:ElectricalOutput> + </WHRType> + <Mode> + <IdlingSpeed>600</IdlingSpeed> + <FullLoadAndDragCurve> + <Entry engineSpeed="600.00" maxTorque="1188.00" dragTorque="-138.00" /> + <Entry engineSpeed="800.00" maxTorque="1661.00" dragTorque="-143.00" /> + <Entry engineSpeed="1000.00" maxTorque="2134.00" dragTorque="-152.00" /> + <Entry engineSpeed="1200.00" maxTorque="2134.00" dragTorque="-165.00" /> + <Entry engineSpeed="1400.00" maxTorque="2134.00" dragTorque="-187.00" /> + <Entry engineSpeed="1600.00" maxTorque="1928.00" dragTorque="-217.00" /> + <Entry engineSpeed="1800.00" maxTorque="1722.00" dragTorque="-244.00" /> + <Entry engineSpeed="2000.00" maxTorque="1253.00" dragTorque="-278.00" /> + <Entry engineSpeed="2100.00" maxTorque="1019.00" dragTorque="-296.00" /> + <Entry engineSpeed="2200.00" maxTorque="0.00" dragTorque="-314.00" /> + </FullLoadAndDragCurve> + <Fuels> + <FuelType>Diesel CI</FuelType> + </Fuels> + </Mode> + </Data> + </Engine> + <Transmission> + <Data xsi:type="TransmissionDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer Primary</Manufacturer> + <Model>Generic 40t Long Haul Truck Gearbox Primary</Model> + <MainCertificationMethod>Standard values</MainCertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <TransmissionType>AMT</TransmissionType> + <Gears xsi:type="TransmissionGearsPIFType"> + <Gear number="1"> + <Ratio>14.930</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="2"> + <Ratio>11.640</Ratio> + <MaxTorque>1900</MaxTorque> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="3"> + <Ratio>9.020</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="4"> + <Ratio>7.040</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="5"> + <Ratio>5.640</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="6"> + <Ratio>4.400</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="7"> + <Ratio>3.390</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="8"> + <Ratio>2.650</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="9"> + <Ratio>2.050</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="10"> + <Ratio>1.600</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="11"> + <Ratio>1.280</Ratio> + <MaxSpeed>2000</MaxSpeed> + </Gear> + <Gear number="12"> + <Ratio>1.000</Ratio> + </Gear> + </Gears> + </Data> + </Transmission> + <Axlegear> + <Data xsi:type="AxlegearDataPIFType"> + <Manufacturer>Generic Gearbox Manufacturer</Manufacturer> + <Model>Generic 40t Long Haul Truck AxleGear Primary</Model> + <CertificationMethod>Standard values</CertificationMethod> + <Date>2017-01-11T11:00:00Z</Date> + <AppVersion>3.0.1</AppVersion> + <LineType>Single portal axle</LineType> + <Ratio>2.590</Ratio> + </Data> + </Axlegear> + <AxleWheels> + <Data xsi:type="AxleWheelsDataPIFType"> + <Axles> + <Axle axleNumber="1" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>true</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="2" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleDriven</v2.0:AxleType> + <v2.0:TwinTyres>true</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0063</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + <Axle axleNumber="3" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="v2.0:AxleDataDeclarationType"> + <v2.0:AxleType>VehicleNonDriven</v2.0:AxleType> + <v2.0:TwinTyres>false</v2.0:TwinTyres> + <v2.0:Steered>false</v2.0:Steered> + <v2.0:Tyre> + <v2.0:Data id="WHL-5432198760-315-70-R22.5" xsi:type="v2.0:TyreDataDeclarationType"> + <v2.0:Manufacturer>Generic Wheels Manufacturer</v2.0:Manufacturer> + <v2.0:Model>Generic Wheel</v2.0:Model> + <v2.0:CertificationNumber>e12*0815/8051*2017/05E0000*00</v2.0:CertificationNumber> + <v2.0:Date>2017-01-11T14:00:00Z</v2.0:Date> + <v2.0:AppVersion>Tyre Generation App 1.0</v2.0:AppVersion> + <v2.0:Dimension>315/70 R22.5</v2.0:Dimension> + <v2.0:RRCDeclared>0.0055</v2.0:RRCDeclared> + <v2.0:FzISO>31300</v2.0:FzISO> + </v2.0:Data> + <v2.0: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> + </v2.0:Signature> + </v2.0:Tyre> + </Axle> + </Axles> + </Data> + </AxleWheels> + <Auxiliaries> + <Data xsi:type="AuxiliaryDataPIFType"> + <Fan> + <Technology>Hydraulic driven - Constant displacement pump</Technology> + </Fan> + <SteeringPump> + <Technology axleNumber="1">Variable displacement elec. controlled</Technology> + </SteeringPump> + <ElectricSystem> + <AlternatorTechnology>conventional</AlternatorTechnology> + </ElectricSystem> + <PneumaticSystem> + <SizeOfAirSupply>Large Supply 2-stage</SizeOfAirSupply> + <CompressorDrive>electrically</CompressorDrive> + <Clutch>none</Clutch> + <CompressorRatio>1.000</CompressorRatio> + <SmartCompressionSystem>true</SmartCompressionSystem> + <SmartRegenerationSystem>false</SmartRegenerationSystem> + <AirsuspensionControl>electronically</AirsuspensionControl> + <PneumaticSCRReagentDosing>true</PneumaticSCRReagentDosing> + </PneumaticSystem> + <HVAC> + <AdjustableCoolantThermostat>true</AdjustableCoolantThermostat> + <EngineWasteGasHeatExchanger>true</EngineWasteGasHeatExchanger> + </HVAC> + </Data> + </Auxiliaries> + </Components> + </Vehicle> + <InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_SmartPS"> + <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>JKmEGO5ChZ+EWf9fu/yxJQldo/kvXaJnmhgcz2YQTpU=</di:DigestValue> + </di:Reference> + </InputDataSignature> + <ManufacturerRecordSignature> + <di:Reference URI="#RESULT-b24e106754644462913e"> + <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>tCwhy15j1jcO+sj2PNaNEQEcczz0hoj6BhzdsLxMHlo=</di:DigestValue> + </di:Reference> + </ManufacturerRecordSignature> + <Results> + <Status>success</Status> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">21.18710</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1553.06</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">25.36235</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1859.11</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">16.73089</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1226.41</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">20.22898</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1482.83</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15527.52</TotalVehicleMass> + <Payload unit="kg">1352.52</Payload> + <PassengerCount>19.89</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">14.37825</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1053.96</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">20937.60</TotalVehicleMass> + <Payload unit="kg">6762.60</Payload> + <PassengerCount>99.45</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.62230</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1291.75</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">15469.51</TotalVehicleMass> + <Payload unit="kg">1294.51</Payload> + <PassengerCount>18.23</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.83195</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">867.31</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18411.57</TotalVehicleMass> + <Payload unit="kg">4236.57</Payload> + <PassengerCount>59.67</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.25049</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">971.29</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.69048</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1663.26</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Heavy Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">27.91380</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">2046.14</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">17.89886</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1312.02</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Urban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">22.22866</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1629.41</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16303.29</TotalVehicleMass> + <Payload unit="kg">1578.29</Payload> + <PassengerCount>23.21</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.31725</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1122.79</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P33DD</VehicleGroup> + <Mission>Suburban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22616.43</TotalVehicleMass> + <Payload unit="kg">7891.43</Payload> + <PassengerCount>116.05</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">19.28148</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1413.37</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16467.68</TotalVehicleMass> + <Payload unit="kg">1254.68</Payload> + <PassengerCount>17.67</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">11.94624</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">875.68</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19319.21</TotalVehicleMass> + <Payload unit="kg">4106.21</Payload> + <PassengerCount>57.83</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.32545</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">976.78</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">16490.49</TotalVehicleMass> + <Payload unit="kg">1277.49</Payload> + <PassengerCount>17.99</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">8.71857</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">639.09</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34SD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">18406.72</TotalVehicleMass> + <Payload unit="kg">3193.72</Payload> + <PassengerCount>44.98</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.20204</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">674.53</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19588.08</TotalVehicleMass> + <Payload unit="kg">1738.08</Payload> + <PassengerCount>24.48</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">13.58782</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">996.02</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Interurban</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">23643.60</TotalVehicleMass> + <Payload unit="kg">5793.60</Payload> + <PassengerCount>81.60</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">15.57745</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">1141.86</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">19703.95</TotalVehicleMass> + <Payload unit="kg">1853.95</Payload> + <PassengerCount>26.11</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">9.82883</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">720.47</CO2> + </Result> + <Result status="success"> + <VehicleGroup>P34DD</VehicleGroup> + <Mission>Coach</Mission> + <SimulationParameters> + <TotalVehicleMass unit="kg">22484.88</TotalVehicleMass> + <Payload unit="kg">4634.88</Payload> + <PassengerCount>65.28</PassengerCount> + <FuelMode>single fuel mode</FuelMode> + </SimulationParameters> + <Fuel type="Diesel CI"> + <EnergyConsumption unit="MJ/km">10.56696</EnergyConsumption> + </Fuel> + <CO2 unit="g/km">774.58</CO2> + </Result> + </Results> + <ApplicationInformation> + <SimulationToolVersion>0.7.7.2547-DEV !!NOT FOR CERTIFICATION!!</SimulationToolVersion> + <Date>2022-01-27T14:55:40.5963202Z</Date> + </ApplicationInformation> + </Data> + <Signature> + <di:Reference URI="#VEH-dda89003b1894b738e01"> + <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>TqJtY535jeu6qydOprHVzvXTRScAKSj4mkDwzpx1y6A=</di:DigestValue> + </di:Reference> + </Signature> + </PrimaryVehicle> +</VectoOutputMultistep> \ No newline at end of file diff --git a/VectoCore/VectoXML.spp b/VectoCore/VectoXML.spp index 556c381d3d2e990b3011c9ad8e090aa0223561a5..c91f38ed726ad3e3538a8130719a527f2e55f455 100644 --- a/VectoCore/VectoXML.spp +++ b/VectoCore/VectoXML.spp @@ -8,21 +8,11 @@ <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_engine-sample.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_tyre-sample.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-components_1.0.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorry.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-new_parameters-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBus.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-sample_LNG.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml" HomeFolder="Yes"/> </Folder> - <Folder FolderName="Schema 2.6DEV Buses ML"> - <File FilePath="E:\QUAM\Workspace\VECTO_DEV_Buses\VectoCore\VectoCoreTest\bin\Debug\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\exempted_primary_heavyBus.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\PIF-heavyBus-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-completed_heavyBus-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-medium_lorryFWD-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBus-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.6_Buses\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml" HomeFolder="Yes"/> - </Folder> <Folder FolderName="Examples 1.0"> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderEngineering\engineering_axlegear-sample_ref.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderEngineering\engineering_engine-sample_ref.xml" HomeFolder="Yes"/> @@ -61,18 +51,93 @@ <File FilePath="VectoCoreTest\TestData\XML\EngineeringJob\SampleJobEngineering1.0.xml" HomeFolder="Yes"/> <File FilePath="VectoCoreTest\TestData\XML\EngineeringJob\SampleJobEngineering1.1.xml" HomeFolder="Yes"/> </Folder> - <Folder FolderName="Schema 2.8"> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_full-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-exempted_input_only_mandatory_entries.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_full-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_component_nullable_entries.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_entries.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml" HomeFolder="Yes"/> - <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.8\vecto_vehicle-stage_vif_input.xml" HomeFolder="Yes"/> + <Folder FolderName="Schema 2.10 DEV Buses ML"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\PIF-heavyBus-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-completed_heavyBus-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBus-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Schema 2.10 stage input"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_full-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_mandatory_entries.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_component_nullable_entries.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_entries.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_vif_input.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Schema 2.10_Components" ValidFileSet="Yes" ValidFile="VectoCore\Resources\XSD\VectoComponent.2.10.xsd"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ADC.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\BatterySystem_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\CapacitorSystem_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem-IHPC_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_StdValues.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_APT-N.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_IHPC.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_StdValues.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Schema 2.10_Jobs"> + <Folder FolderName="HeavyLorry"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\Conventional_heavyLorry_AMT.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S4.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_IHPC.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\IEPC_heavyLorry.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_AMT_E2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_APT-N_E2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E4.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="MediumLorry"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\Conventional_MediumLorry_AMT.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_AMT_S2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_IEPC-S.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S4.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV_mediumLorry_AMT_Px.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\IEPC_mediumLorry.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_AMT_E2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_AMT_E2_EM_Std.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_APT-N_E2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E4.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="PrimaryBus"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_AMT_S2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_IEPC-S.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S4.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\IEPC_primaryBus.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_AMT_E2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E3.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E4.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="CompletedBus"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\Conventional_completedBus_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\HEV_completedBus_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\IEPC_completedBus_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\PEV_completedBus_1.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Exempted"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_only_mandatory_entries.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_heavyLorry.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_mediumLorry.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_primaryBus.xml" HomeFolder="Yes"/> + </Folder> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\HEV_heavyLorry_AMT_Px_Capacitor.xml" HomeFolder="Yes"/> </Folder> <Folder FolderName="Schema Multistage 0.1"> <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml" HomeFolder="Yes"/> @@ -89,9 +154,349 @@ <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_stage_2_mandatory.xml" HomeFolder="Yes"/> </Folder> </Folder> + <Folder FolderName="XML Files Vecto Testcases"> + <Folder FolderName="SchemaVersion2.10" ExtStr=".xml"> + <Folder FolderName="Distributed"> + <Folder FolderName="CompletedBus"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\Conventional_completedBus_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\HEV_completedBus_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\IEPC_completedBus_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\CompletedBus\PEV_completedBus_1.xml"/> + </Folder> + <Folder FolderName="ComponentData"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ADC.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\BatterySystem_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\CapacitorSystem_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem-IHPC_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\ElectricMachineSystem_StdValues.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_APT-N.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\Gearbox_IHPC.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_1.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ComponentData\IEPC_StdValues.xml"/> + </Folder> + <Folder FolderName="ExemptedVehicles"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_full.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_completedBus_input_only_mandatory_entries.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_heavyLorry.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_mediumLorry.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\ExemptedVehicles\exempted_primaryBus.xml"/> + </Folder> + <Folder FolderName="HeavyLorry"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\Conventional_heavyLorry_AMT.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_AMT_S2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_IEPC-S.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV-S_heavyLorry_S4.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\HEV_heavyLorry_AMT_Px_IHPC.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\IEPC_heavyLorry.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_AMT_E2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_APT-N_E2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\HeavyLorry\PEV_heavyLorry_E4.xml"/> + </Folder> + <Folder FolderName="MediumLorry"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\Conventional_mediumLorry_AMT.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_AMT_S2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_IEPC-S.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV-S_mediumLorry_S4.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\HEV_mediumLorry_AMT_Px.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\IEPC_mediumLorry.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_AMT_E2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_APT-N_E2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\MediumLorry\PEV_mediumLorry_E4.xml"/> + </Folder> + <Folder FolderName="PrimaryBus"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\Conventional_primaryBus_AMT.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_AMT_S2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_IEPC-S.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV-S_primaryBus_S4.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\HEV_primaryBus_AMT_Px.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\IEPC_primaryBus.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_AMT_E2.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\Distributed\PrimaryBus\PEV_primaryBus_E4.xml"/> + </Folder> + </Folder> + <Folder FolderName="WithoutOptionalEntries"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_heavyLorry_AMT_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_mediumLorry_AMT_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\Conventional_primaryBus_AMT_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_AMT_S2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_IEPC-S_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_S3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_heavyLorry_S4_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_AMT_S2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_IEPC-S_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_S3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_mediumLorry_S4_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_AMT_S2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_IEPC-S_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_S3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV-S_primaryBus_S4_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_heavyLorry_AMT_Px_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_mediumLorry_AMT_Px_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\HEV_primaryBus_AMT_Px_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_heavyLorry_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_mediumLorry_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\IEPC_primaryBus_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_AMT_E2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_APT-N_E2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_E3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_heavyLorry_E4_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_AMT_E2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_APT-N_E2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_E3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_mediumLorry_E4_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_AMT_E2_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_E3_n_opt.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\WithoutOptionalEntries\PEV_primaryBus_E4_n_opt.xml" HomeFolder="Yes"/> + </Folder> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\exempted_primary_heavyBus.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-completed_heavyBus-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_full-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-exempted_input_only_mandatory_entries.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-medium_lorry-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBus-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-primary_heavyBusSmartES_invalid_testdata.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_full-sample_group41.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries01-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_certain_entries02-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_component_nullable_entries.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_entries.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_input_only_mandatory_standard_value_airdrag.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.10\vecto_vehicle-stage_vif_input.xml"/> + </Folder> + <Folder FolderName="SchemaVersion2.3"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\engineSample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\engineSample_WHR.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\engineSampleDualModeDualFuel.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vecto_tyre-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleDualModeDualFuel_WHR.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleSingleModeDualFuel.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleSingleModeDualFuel_WHR.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.3\vehicle_sampleSingleModeSingleFuel_WHR.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="SchemaVersion2.2"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\Tractor_4x2_vehicle-class-5_5_t_0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\vecto_engine-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\vecto_tyre-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\vecto_vehicle-exempted-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\vecto_vehicle-new_parameters-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.2\vecto_vehicle-sample_LNG.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="SchemaVersion2.1"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\Tractor_4x2_vehicle-class-5_5_t_0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_engine-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_tyre-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-components_1.0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-components_2.0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-engine_2.0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-exempted-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-new_parameters-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.1\vecto_vehicle-sample_LNG.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="SchemaVersion2.0"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\Tractor_4x2_vehicle-class-5_5_t_0.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_engine-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_tyre-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-components_1.0.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-new_parameters-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion2.0\vecto_vehicle-sample_LNG.xml"/> + </Folder> + <Folder FolderName="SchemaVersion1.0"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\test.VIF_Report_2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\Tractor_4x2_vehicle-class-5_5_t_0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\vecto_engine-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\vecto_vehicle-exempted-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\vecto_vehicle-new_parameters-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersion1.0\vecto_vehicle-sample_LNG.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Integration"> + <Folder FolderName="DeclarationMode"> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\Class4_Vocational\Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\Class5_ADAS\Tractor_4x2_vehicle-class-5_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\Class5_NG\Tractor_4x2_vehicle-class-5_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\Class5_Vocational\Tractor_4x2_vehicle-class-5_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\EngineSpeedTooHigh\vecto_vehicle-sample_9gears.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\DeclarationMode\ExemptedVehicle\vecto_vehicle-sample_exempted.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Buses"> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\CompletedHeavyBus_33b1.RSLT_VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\primary_heavyBus group P39_40_nonSmart_ESS.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group41.RSLT_VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group41_AT-P.RSLT_VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group41_nonSmart.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group41_nonSmart_AT-P.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group42_SmartPS.RSLT_VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\primary_heavyBus group42_SmartPS.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-completed_heavyBus.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\vecto_vehicle-completed_heavyBus_41.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\vecto_vehicle-completed_heavyBus_41_mixed.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\vecto_vehicle-completed_heavyBus_42.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.RSLT_VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\FactorMethod\vecto_vehicle-primary_heavyBus_ESS_electricFanSTP.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_nonSmart.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_nonSmart_ESS.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartES.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartES_PS.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\Buses\vecto_vehicle-primary_heavyBus_SmartPS.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="ADAS"> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group5_EcoRoll.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group5_EcoRollEngineStop.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group5_EngineStopStart.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group9_AT_EcoRoll.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group9_AT_EcoRoll_missingParam.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group9_AT_EngineStopStart.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group9_AT_PCC.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group9_AT_PCCEcoRoll.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ADAS\Group5PCCDecl\Tractor_4x2_vehicle-class-5_5_t_0.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="MediumLorries"> + <File FilePath="VectoCoreTest\TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry-Van.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\MediumLorries\vecto_vehicle-medium_lorry.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="ShiftStrategy_SampleVehicles"> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_4x2_vehicle-class-1_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_4x2_vehicle-class-2_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_4x2_vehicle-class-4_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_6x2_vehicle-class-9_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_6x4_vehicle-class-11_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Rigid Truck_8x4_vehicle-class-16_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Tractor_4x2_vehicle-class-5_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Tractor_4x2_vehicle-class-5_EURO6_2018_FlatFCMap.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Tractor_4x2_vehicle-class-5_EURO6_2018_IncreasingFCMap.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Tractor_6x2_vehicle-class-10_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\ShiftStrategyV2\SampleVehicles\Tractor_6x4_vehicle-class-12_EURO6_2018.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="VTPMode"> + <Folder FolderName="DualFuelVehicle"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\DualFuelVehicle\vehicle_sampleSingleModeDualFuel.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\DualFuelVehicle\vehicle_sampleSingleModeDualFuel.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="GenericVehicle"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\CityBus_AT_Ser.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\CityBus_AT_Ser.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\CityBus_AT_Ser_2TC.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\GB_12-gear.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\Generic Engine.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\Rigid Truck_4x2_vehicle-class-3_EURO6_2018.MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\Rigid Truck_4x2_vehicle-class-3_EURO6_2018.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle\Tractor_4x2_vehicle-class-5_Generic vehicle.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="GenericVehicle XMLJob PTO"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle XMLJob PTO\Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle XMLJob PTO\Tractor_4x2_vehicle-class-5_Generic vehicle.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="GenericVehicle_CNG"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle_CNG\Tractor_4x2_vehicle-class-5_Generic vehicle.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\GenericVehicle_CNG\Tractor_4x2_vehicle-class-5_Generic vehicle.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="HeavyBus"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\HeavyBus\CompletedBus_34f.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\HeavyBus\primary_heavyBus group 42_non_Smart.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\HeavyBus\primary_heavyBus group 42_non_Smart.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\HeavyBus\vecto_vehicle-completed_heavyBus_34f.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="MediumLorry"> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2.RSLT_CUSTOMER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2.RSLT_MANUFACTURER.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\Integration\VTPMode\MediumLorry\vecto_vehicle-medium_lorry_4x2.xml" HomeFolder="Yes"/> + </Folder> + </Folder> + </Folder> + <Folder FolderName="SampleVehilces"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\Tractor_4x2_vehicle-class-5_5_t_0.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_engine-input_sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_engine-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_gearbox-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-exempted-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-exempted_input_full-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-exempted_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-exempted_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-exempted_input_only_mandatory_entries.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-new_parameters-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_AT.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_certificationOptions.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_exempted.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_FULL.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_FULL_updated.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_LNG.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_noAirdrag.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-sample_torqueLimits.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-stage_input_full-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-stage_input_only_certain_entries01-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-stage_input_only_certain_entries02-sample.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\vecto_vehicle-stage_input_only_mandatory_entries.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="Multistage_0.1"> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AidragComponent.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AirdragLoadTestFile.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\AirdragLoadTestFilev2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_completed.VIF_Report_2.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\exempted_primary_heavyBus.VIF.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_airdrag.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_heatPump.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_hev.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_NGTankSystem.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_multiple_stages_vif.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_one_stage.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_consolidated_two_stages.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_conventional_final_vif.VIF_Report_1.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_only.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_stage_2_3.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_stage_2_3_group41.xml" HomeFolder="Yes"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_stage_2_full.xml"/> + <File FilePath="VectoCoreTest\TestData\XML\XMLReaderDeclaration\SchemaVersionMultistage.0.1\vecto_multistage_primary_vehicle_stage_2_mandatory.xml"/> + </Folder> + </Folder> + <Folder FolderName="XML Files Generic Vehicles"> + <Folder FolderName="SingleBus"> + <File FilePath="V:\Generic Vehicles\Declaration Mode\SingleBus_31b\primary_heavyBus group_P31_32_Smart_ES.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\SingleBus_34f\primary_heavyBus group_P33_34_SmartPS.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\SingleBus_31b\vecto_vehicle-completed_heavyBus_31b.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\SingleBus_34f\vecto_vehicle-completed_heavyBus_34f.xml" HomeFolder="Yes"/> + </Folder> + <Folder FolderName="CompletedBus"> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\airdrag.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\completed_heavyBus_31b.VIF_Report_2.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 34f\completed_heavyBus_34f.VIF_Report_2.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\input_airdragonly.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\input_aux.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\primary_heavyBus group_P31_32_Smart_ES.VIF.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\primary_heavyBus group_P31_32_Smart_ES.VIF_incl TC.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 34f\primary_heavyBus group_P33_34_SmartPS.VIF.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 31b2\vecto_vehicle-completed_heavyBus_31b.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\CompletedBus 34f\vecto_vehicle-completed_heavyBus_34f.xml" HomeFolder="Yes"/> + </Folder> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group5_Tractor_4x2\Class5_Tractor_DECL.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group5_Tractor_4x2\Class5_Tractor_DECL_DF-DM_WHR.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group5_Tractor_4x2\Class5_Tractor_DECL_DF.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group5_Tractor_4x2\Class5_Tractor_DECL_WHR.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group P39_40\primary_heavyBus group P39_40_nonSmart_ESS.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group P31_32\primary_heavyBus group_P31_32_Smart_ES.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group P33_34\primary_heavyBus group_P33_34_SmartPS.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group P35_36\primary_heavyBus group_P35_36_nonSmart.xml" HomeFolder="Yes"/> + <File FilePath="V:\Generic Vehicles\Declaration Mode\Group P37_38\primary_heavyBus group_P37_38_SmartES_PS.xml" HomeFolder="Yes"/> + </Folder> <Folder FolderName="XSL Files" ExtStr="xsl;xslt"> <File FilePath="E:\QUAM\Workspace\VECTO_quam\Documentation\XML\RenderTable.xslt" HomeFolder="Yes"/> - <File FilePath="E:\QUAM\Workspace\VECTO_quam\VectoCommon\VectoHashing\Resources\XSLT\SortInputData.xslt" HomeFolder="Yes"/> + <File FilePath="V:\VectoCommon\VectoHashing\Resources\XSLT\SortInputData.xslt" HomeFolder="Yes"/> </Folder> <Folder FolderName="XQuery Files" ExtStr="xq;xql;xquery;xqu"/> <Folder FolderName="HTML Files" ExtStr="html;htm;xhtml;asp"/> @@ -99,17 +504,15 @@ <Folder FolderName="Declaration"> <File FilePath="VectoCore\Resources\XSD\VectoComponent.1.0.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoComponent.2.0.xsd" HomeFolder="Yes"/> + <File FilePath="VectoCore\Resources\XSD\VectoComponent.2.1.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationComponent.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.0.6.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.0.8.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.1.0.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.0.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.1.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.2.1.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.2.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.3_DEV.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.6_Buses.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.8_Stage.xsd" HomeFolder="Yes"/> + <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.3.xsd" HomeFolder="Yes"/> + <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.2.4.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationDefinitions.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoDeclarationJob.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoInput.1.0.xsd" HomeFolder="Yes"/> @@ -150,8 +553,7 @@ <File FilePath="VectoCore\Resources\XSD\VectoOutputManufacturer.0.7.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoOutputManufacturer.0.8.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VectoOutputManufacturer.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoOutputMultistage.0.1.xsd" HomeFolder="Yes"/> - <File FilePath="VectoCore\Resources\XSD\VectoOutputPrimaryBus.xsd" HomeFolder="Yes"/> + <File FilePath="VectoCore\Resources\XSD\VectoOutputMultistep.0.1.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VTPReport.0.1.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VTPReport.0.2.xsd" HomeFolder="Yes"/> <File FilePath="VectoCore\Resources\XSD\VTPReport.xsd" HomeFolder="Yes"/>