From c10bf43dd3fab0928027b1f34cb6498bfe01b9ac Mon Sep 17 00:00:00 2001 From: Duc Bui Tien <mail@duc-buitien.de> Date: Fri, 13 Sep 2024 09:45:08 +0200 Subject: [PATCH] New UnicadoGUI Branch --- README.md => UnicadoGUI/Backend/README.md | 0 UnicadoGUI/Backend/configWriter.py | 26 + UnicadoGUI/Backend/main.py | 112 + UnicadoGUI/Backend/requirements.txt | 3 + UnicadoGUI/Backend/test_main.http | 41 + UnicadoGUI/Backend/tmp/modules | 1 + .../xml_configs/calculatePerformance_conf.xml | 139 + .../calculatePerformance_conf_default.xml | 139 + .../xml_configs/calculatePolar_conf.xml | 592 ++ .../calculatePolar_conf_default.xml | 592 ++ UnicadoGUI/Backend/xml_configs/config.ini | 3 + .../xml_configs/convergenceLoop_conf.xml | 192 + .../xml_configs/createMissionXML_conf.xml | 255 + .../createMissionXML_conf_default.xml | 255 + .../xml_configs/initialSizing_conf.xml | 167 + .../initialSizing_conf_default.xml | 167 + .../xml_configs/missionAnalysis_conf.xml | 286 + .../missionAnalysis_conf_default.xml | 286 + .../xml_configs/propulsionDesign_conf.xml | 129 + .../propulsionDesign_conf_default.xml | 129 + .../xml_configs/systemsDesign_conf.xml | 2437 ++++++++ .../systemsDesign_conf_default.xml | 2437 ++++++++ UnicadoGUI/Backend/xml_configs/template.xml | 5001 +++++++++++++++++ .../weightAndBalanceAnalysis_conf.xml | 96 + .../weightAndBalanceAnalysis_conf_default.xml | 96 + .../Backend/xml_configs/wingDesign_conf.xml | 731 +++ .../xml_configs/wingDesign_conf_default.xml | 732 +++ UnicadoGUI/Frontend/.npmrc | 1 + UnicadoGUI/Frontend/README.md | 38 + UnicadoGUI/Frontend/package-lock.json | 2244 ++++++++ UnicadoGUI/Frontend/package.json | 32 + UnicadoGUI/Frontend/src/app.d.ts | 13 + UnicadoGUI/Frontend/src/app.html | 12 + UnicadoGUI/Frontend/src/global.d.ts | 3 + UnicadoGUI/Frontend/src/lib/index.ts | 1 + UnicadoGUI/Frontend/src/routes/+layout.svelte | 73 + UnicadoGUI/Frontend/src/routes/+page.svelte | 8 + .../Frontend/src/routes/graphs/+page.svelte | 48 + .../Frontend/src/routes/logs/+page.svelte | 40 + .../Frontend/src/routes/model/+page.svelte | 618 ++ .../src/routes/model/InPlaceEdit.svelte | 58 + .../Frontend/src/routes/reports/+page.svelte | 37 + .../Frontend/src/routes/settings/+page.svelte | 343 ++ UnicadoGUI/Frontend/static/favicon.png | Bin 0 -> 182528 bytes UnicadoGUI/Frontend/svelte.config.js | 18 + UnicadoGUI/Frontend/tsconfig.json | 18 + UnicadoGUI/Frontend/vite.config.ts | 8 + 47 files changed, 18657 insertions(+) rename README.md => UnicadoGUI/Backend/README.md (100%) create mode 100644 UnicadoGUI/Backend/configWriter.py create mode 100644 UnicadoGUI/Backend/main.py create mode 100644 UnicadoGUI/Backend/requirements.txt create mode 100644 UnicadoGUI/Backend/test_main.http create mode 100644 UnicadoGUI/Backend/tmp/modules create mode 100644 UnicadoGUI/Backend/xml_configs/calculatePerformance_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/calculatePerformance_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/calculatePolar_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/calculatePolar_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/config.ini create mode 100644 UnicadoGUI/Backend/xml_configs/convergenceLoop_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/createMissionXML_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/createMissionXML_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/initialSizing_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/initialSizing_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/missionAnalysis_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/missionAnalysis_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/propulsionDesign_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/propulsionDesign_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/systemsDesign_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/systemsDesign_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/template.xml create mode 100644 UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf_default.xml create mode 100644 UnicadoGUI/Backend/xml_configs/wingDesign_conf.xml create mode 100644 UnicadoGUI/Backend/xml_configs/wingDesign_conf_default.xml create mode 100644 UnicadoGUI/Frontend/.npmrc create mode 100644 UnicadoGUI/Frontend/README.md create mode 100644 UnicadoGUI/Frontend/package-lock.json create mode 100644 UnicadoGUI/Frontend/package.json create mode 100644 UnicadoGUI/Frontend/src/app.d.ts create mode 100644 UnicadoGUI/Frontend/src/app.html create mode 100644 UnicadoGUI/Frontend/src/global.d.ts create mode 100644 UnicadoGUI/Frontend/src/lib/index.ts create mode 100644 UnicadoGUI/Frontend/src/routes/+layout.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/+page.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/graphs/+page.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/logs/+page.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/model/+page.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/model/InPlaceEdit.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/reports/+page.svelte create mode 100644 UnicadoGUI/Frontend/src/routes/settings/+page.svelte create mode 100644 UnicadoGUI/Frontend/static/favicon.png create mode 100644 UnicadoGUI/Frontend/svelte.config.js create mode 100644 UnicadoGUI/Frontend/tsconfig.json create mode 100644 UnicadoGUI/Frontend/vite.config.ts diff --git a/README.md b/UnicadoGUI/Backend/README.md similarity index 100% rename from README.md rename to UnicadoGUI/Backend/README.md diff --git a/UnicadoGUI/Backend/configWriter.py b/UnicadoGUI/Backend/configWriter.py new file mode 100644 index 0000000..714e99b --- /dev/null +++ b/UnicadoGUI/Backend/configWriter.py @@ -0,0 +1,26 @@ +import os +import configparser + +#small script to write a config.ini with available modules + +def create_config(): + config = configparser.ConfigParser() + directory = os.fsencode('xml_configs') + available_modules = [] + for file in os.listdir(directory): + filename = os.fsdecode(file) + if filename.endswith("default.xml"): + available_modules.append(filename.split('_')[0]) + config['available_Modules']={'modules':','.join(available_modules)} + + with open('xml_configs/config.ini', 'w') as configfile: + config.write(configfile) + +if __name__ == '__main__': + create_config() + config = configparser.ConfigParser() + config.read('xml_configs/config.ini') + print(config['available_Modules']['modules'].split(',')) + + + diff --git a/UnicadoGUI/Backend/main.py b/UnicadoGUI/Backend/main.py new file mode 100644 index 0000000..0cd07cd --- /dev/null +++ b/UnicadoGUI/Backend/main.py @@ -0,0 +1,112 @@ +import configparser +import json +from fastapi import FastAPI +from fastapi.responses import FileResponse +from fastapi.middleware.cors import CORSMiddleware +from pydantic import BaseModel +import xmltodict +from fastapi.encoders import jsonable_encoder + +#FastAPI Backend for UNICADO Gui +app = FastAPI() + +origins = [ + "http://localhost", + "http://localhost:5173", +] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +#Models for requests +class Modules(BaseModel): + groups: list = [] + +class Conf(BaseModel): + module_configuration_file: dict = {} + + +#Endpoints +@app.get("/start/{module}") +async def start_module(module: str): + #dummy-function + #waiting for working unicado + return {"message": f"running {module} without problems"} + + +#endpoint which returns a list of available modules +@app.get("/modules/selection") +async def get_avail_modules(): + dict = {} + config = configparser.ConfigParser() + config.read('xml_configs/config.ini') + + dict['availableModules']=config['available_Modules']['modules'].split(',') + return dict + + +#TO-DO: following endpoints are for the case of a single project, need to add solution for more projects +#endpoint which returns the last saved project +@app.get("/modules") +async def get_modules(): + with open("tmp/modules", "r") as fp: + modules = json.load(fp) + + return modules + +#endpoint to save the current project on the server +@app.put("/modules/update") +async def update_modules(item:Modules): + print(jsonable_encoder(item)) + with open("tmp/modules", "w") as fp: + json.dump(jsonable_encoder(item), fp) + + return item + +#endpoint to get the settings of selected module +@app.get("/modules/{module}/config") +async def get_module_config(module: str): + with open("xml_configs/"+module+"_conf.xml", encoding='utf-8') as fd: + config = json.dumps(xmltodict.parse(fd.read())) + return config + +#endpoint to save the setting of selected module +@app.put("/modules/config/update") +async def update_module_config(config: Conf): + dict = {"module_configuration_file": config.module_configuration_file} + xml = xmltodict.unparse(dict, pretty=True) + with open("xml_configs/" + config.module_configuration_file["@name"], "w", encoding='utf-8') as fd: + fd.write(xml) + return + +#endpoint reset settings of selected module to default +@app.get("/modules/{module}/config/reset") +async def reset_module_config(module:str): + with open("xml_configs/"+module+"_conf_default.xml", encoding='utf-8') as fd: + dict = xmltodict.parse(fd.read()) + xml = xmltodict.unparse(dict, pretty=True) + with open("xml_configs/"+module+"_conf.xml", "w", encoding='utf-8') as fd: + fd.write(xml) + return + +#dummy endpoints +@app.get("/graph/") +async def get_plotData(): + #dummy-Function + #TO-DO: working Implemantion + plotData = {} + return plotData + +@app.get("/log/{file}") +async def get_csv(file: str): + return FileResponse(f"output_files/logFiles/{file}") + +@app.get("/report/{file}") +async def get_report(file: str): + return FileResponse(f"output_files/reportHTML/{file}") + diff --git a/UnicadoGUI/Backend/requirements.txt b/UnicadoGUI/Backend/requirements.txt new file mode 100644 index 0000000..6fef470 --- /dev/null +++ b/UnicadoGUI/Backend/requirements.txt @@ -0,0 +1,3 @@ +xmltodict~=0.13.0 +fastapi~=0.109.2 +pydantic~=1.10.14 \ No newline at end of file diff --git a/UnicadoGUI/Backend/test_main.http b/UnicadoGUI/Backend/test_main.http new file mode 100644 index 0000000..70bc248 --- /dev/null +++ b/UnicadoGUI/Backend/test_main.http @@ -0,0 +1,41 @@ +# Test your FastAPI endpoints + +GET http://127.0.0.1:8000/ +Accept: application/json + +### + +GET http://127.0.0.1:8000/start/convergenceLoop +Accept: application/json + +### + +GET http://127.0.0.1:8000/modules +Accept: application/json + +### + +GET http://127.0.0.1:8000/modules/initialSizing/config +Accept: application/json + +### + +GET http://127.0.0.1:8000//graph/convergenceLoop_plot.csv +Accept: application/json + +### + +GET http://127.0.0.1:8000//log/convergenceLoop.log +Accept: application/json + +### + +GET http://127.0.0.1:8000//report/convergenceLoop_report.html +Accept: application/json + +### + +GET http://127.0.0.1:8000//graph/ +Accept: application/json + +### \ No newline at end of file diff --git a/UnicadoGUI/Backend/tmp/modules b/UnicadoGUI/Backend/tmp/modules new file mode 100644 index 0000000..d0279f9 --- /dev/null +++ b/UnicadoGUI/Backend/tmp/modules @@ -0,0 +1 @@ +{"groups": [{"name": "models from modularization branches", "loop": "true", "loopsize": 1, "modules": ["initialSizing", "wingDesign", "createMissionXML", "systemsDesign", "calculatePolar", "calculatePerformance", "missionAnalysis", "weightAndBalanceAnalysis", "propulsionDesign"]}]} \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf.xml b/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf.xml new file mode 100644 index 0000000..de72592 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf.xml @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8" ?> +<ConfigFile Name="calculatePerformance_conf.xml"> + <ControlSettings Desc="general control settings"> + <IOFileName>CSR-02.xml</IOFileName> + <IODir>../projects/CSR/CSR-02/</IODir> + <OwnToolLevel>2</OwnToolLevel> + <ConsoleOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</ConsoleOutputOn> + <LogfileOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</LogfileOutputOn> + <PlotOutputOn CopyPlottingFiles="1" DeletePlottingFilesFromToolFolder="1">1</PlotOutputOn> + <ReportOutputOn>1</ReportOutputOn> + <TexReportOn>0</TexReportOn> + <WriteInfoFiles>1</WriteInfoFiles> + <GnuplotScript>calculatePerformance_plot.plt</GnuplotScript> + <LogFile>calculatePerformance.log</LogFile> + <InkscapePath>DEFAULT</InkscapePath> + <GnuplotPath>DEFAULT</GnuplotPath> + <ProgramSpecific Desc="program-specific control settings"> + <SaveCSVFilesToProjectFolder Desc="CSV files will be stored in the folder csvFilesForPlots" Default="1">1</SaveCSVFilesToProjectFolder> + <DeleteFiles>0</DeleteFiles> + </ProgramSpecific> + </ControlSettings> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR-02.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <ProgramSettings Desc="program settings"> + <ModuleStrategy Desc="Select the strategy level option tool execution" Default="calculatePerformance" >calculatePerformance</ModuleStrategy> + <MuduleFidelityLevel>low</MuduleFidelityLevel> + <PerformanceChecks Desc="Settings that affect different functionalities!"> + <PayloadRangeDiagram Desc="Payload Range Diagram Calculation"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </PayloadRangeDiagram> + <EnginePerformance Desc="Engine power estimation"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </EnginePerformance> + <FlightEnvelopePerformance Desc="Estimation of flight range limits" OverwriteInitialValues="0"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </FlightEnvelopePerformance> + <ClimbPerformance Desc="Climb Performance (so far only for plots)" Default="1"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </ClimbPerformance> + <TOPerformance Desc="Estimation of the starting distance" CalculateBLFLPerformance="1"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </TOPerformance> + <LandingPerformance Desc="Landing distance estimation" > + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </LandingPerformance> + <VnDiagram Desc="Switch for calculation of V-n diagram 1: On, 0: Off"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </VnDiagram> + </PerformanceChecks> + <ConstantsForPerformanceChecks> + <enginePerformance> + <Ratings> + <nrRatings>4</nrRatings> + <Rating ID="1">Cruise</Rating> + <Rating ID="2">Climb</Rating> + <Rating ID="3">MaxCont</Rating> + <Rating ID="4">TO</Rating> + </Ratings> + </enginePerformance> + <fieldPerformance> + <runwaySlope Desc="Slope / climb of the runway" Unit="deg" Default="0">0</runwaySlope> + <headWind Desc="headwind speed" Unit="m/s" Default="0">0.0</headWind> + </fieldPerformance> + <VnDiagram> + <maxNClean Desc="Maximum load factor in clean configuration (fixed for CS-25 2.5)" Unit="-" Default="2.5">2.5</maxNClean> + <minNClean Desc="Minimum load factor in clean configuration (fixed -1.0 for CS-25)" Unit="-" Default="-1.0">-1.0</minNClean> + <maxNFlaps Desc="Maximum load factor with flaps (fixed for CS-25 2.0)" Unit="-" Default="2.0">2.0</maxNFlaps> + <minNFlaps Desc="Minimum load factor with flaps (fixed at CS-25 0.0)" Unit="-" Default="0.0">0.0</minNFlaps> + </VnDiagram> + </ConstantsForPerformanceChecks> + <Modes Desc="other settings that influence different modes!"> + <FuelPlanning Desc="Fuel estimation switch: 1:On, 0:Off" Unit="-" Default="0">0</FuelPlanning> + <UseStudyMissionForAnalysis Desc="1: use missionStudy.xml, 0: use missionDesign.xml" Default="0">0</UseStudyMissionForAnalysis> + <MTOM_Design Desc="Redetermination of the MTOM: 1:Yes (e.g. DesignLoop), 0:No (e.g. only analysis)" Default="0">0</MTOM_Design> + </Modes> + <Mission Desc="Specification of the mission"> + <optimizeMissionProfile Desc="Switch to optimize the mission profile" Unit="-" Default="0">0</optimizeMissionProfile> + </Mission> + <fuelPlanning> + <Standard> + <ContingencyFuel Desc="Relative percentage of Contigency Fuel in total Trip Fuel" Unit="-" Default="0.05">0.03</ContingencyFuel> + </Standard> + </fuelPlanning> + </ProgramSettings> +</ConfigFile> diff --git a/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf_default.xml b/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf_default.xml new file mode 100644 index 0000000..de72592 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/calculatePerformance_conf_default.xml @@ -0,0 +1,139 @@ +<?xml version="1.0" encoding="utf-8" ?> +<ConfigFile Name="calculatePerformance_conf.xml"> + <ControlSettings Desc="general control settings"> + <IOFileName>CSR-02.xml</IOFileName> + <IODir>../projects/CSR/CSR-02/</IODir> + <OwnToolLevel>2</OwnToolLevel> + <ConsoleOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</ConsoleOutputOn> + <LogfileOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</LogfileOutputOn> + <PlotOutputOn CopyPlottingFiles="1" DeletePlottingFilesFromToolFolder="1">1</PlotOutputOn> + <ReportOutputOn>1</ReportOutputOn> + <TexReportOn>0</TexReportOn> + <WriteInfoFiles>1</WriteInfoFiles> + <GnuplotScript>calculatePerformance_plot.plt</GnuplotScript> + <LogFile>calculatePerformance.log</LogFile> + <InkscapePath>DEFAULT</InkscapePath> + <GnuplotPath>DEFAULT</GnuplotPath> + <ProgramSpecific Desc="program-specific control settings"> + <SaveCSVFilesToProjectFolder Desc="CSV files will be stored in the folder csvFilesForPlots" Default="1">1</SaveCSVFilesToProjectFolder> + <DeleteFiles>0</DeleteFiles> + </ProgramSpecific> + </ControlSettings> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR-02.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <ProgramSettings Desc="program settings"> + <ModuleStrategy Desc="Select the strategy level option tool execution" Default="calculatePerformance" >calculatePerformance</ModuleStrategy> + <MuduleFidelityLevel>low</MuduleFidelityLevel> + <PerformanceChecks Desc="Settings that affect different functionalities!"> + <PayloadRangeDiagram Desc="Payload Range Diagram Calculation"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </PayloadRangeDiagram> + <EnginePerformance Desc="Engine power estimation"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </EnginePerformance> + <FlightEnvelopePerformance Desc="Estimation of flight range limits" OverwriteInitialValues="0"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </FlightEnvelopePerformance> + <ClimbPerformance Desc="Climb Performance (so far only for plots)" Default="1"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </ClimbPerformance> + <TOPerformance Desc="Estimation of the starting distance" CalculateBLFLPerformance="1"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </TOPerformance> + <LandingPerformance Desc="Landing distance estimation" > + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </LandingPerformance> + <VnDiagram Desc="Switch for calculation of V-n diagram 1: On, 0: Off"> + <switch Desc="On-Off-Switch for this method: 1:On, 0:Off" Unit="-" Default="1">1</switch> + <fidelityLevel Desc="Fidelity level of calculation">low</fidelityLevel> + </VnDiagram> + </PerformanceChecks> + <ConstantsForPerformanceChecks> + <enginePerformance> + <Ratings> + <nrRatings>4</nrRatings> + <Rating ID="1">Cruise</Rating> + <Rating ID="2">Climb</Rating> + <Rating ID="3">MaxCont</Rating> + <Rating ID="4">TO</Rating> + </Ratings> + </enginePerformance> + <fieldPerformance> + <runwaySlope Desc="Slope / climb of the runway" Unit="deg" Default="0">0</runwaySlope> + <headWind Desc="headwind speed" Unit="m/s" Default="0">0.0</headWind> + </fieldPerformance> + <VnDiagram> + <maxNClean Desc="Maximum load factor in clean configuration (fixed for CS-25 2.5)" Unit="-" Default="2.5">2.5</maxNClean> + <minNClean Desc="Minimum load factor in clean configuration (fixed -1.0 for CS-25)" Unit="-" Default="-1.0">-1.0</minNClean> + <maxNFlaps Desc="Maximum load factor with flaps (fixed for CS-25 2.0)" Unit="-" Default="2.0">2.0</maxNFlaps> + <minNFlaps Desc="Minimum load factor with flaps (fixed at CS-25 0.0)" Unit="-" Default="0.0">0.0</minNFlaps> + </VnDiagram> + </ConstantsForPerformanceChecks> + <Modes Desc="other settings that influence different modes!"> + <FuelPlanning Desc="Fuel estimation switch: 1:On, 0:Off" Unit="-" Default="0">0</FuelPlanning> + <UseStudyMissionForAnalysis Desc="1: use missionStudy.xml, 0: use missionDesign.xml" Default="0">0</UseStudyMissionForAnalysis> + <MTOM_Design Desc="Redetermination of the MTOM: 1:Yes (e.g. DesignLoop), 0:No (e.g. only analysis)" Default="0">0</MTOM_Design> + </Modes> + <Mission Desc="Specification of the mission"> + <optimizeMissionProfile Desc="Switch to optimize the mission profile" Unit="-" Default="0">0</optimizeMissionProfile> + </Mission> + <fuelPlanning> + <Standard> + <ContingencyFuel Desc="Relative percentage of Contigency Fuel in total Trip Fuel" Unit="-" Default="0.05">0.03</ContingencyFuel> + </Standard> + </fuelPlanning> + </ProgramSettings> +</ConfigFile> diff --git a/UnicadoGUI/Backend/xml_configs/calculatePolar_conf.xml b/UnicadoGUI/Backend/xml_configs/calculatePolar_conf.xml new file mode 100644 index 0000000..b7fefec --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/calculatePolar_conf.xml @@ -0,0 +1,592 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="wingDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>new_aircraft.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>false</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>false</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>calculatePolar_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>calculatePolar.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>../inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>../gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings description="programSettings"> + <CLModeAirfoilSelection description="aircraft CL for airfoil selection, 0: CL at ICA, 1: CL at TOC, 2: CL avg cr"> + <value>mode_0</value> + <default>mode_0</default> + </CLModeAirfoilSelection> + <Trim> + <DoTrim description="Method for calculating trimmed aircraft polars with linear interpolation"> + <value>false</value> + <default>true</default> + </DoTrim> + <TrimWithAdditionalCoGPositions description="Do trim method only for design CG or additional for forward and aft position"> + <value>false</value> + <default>false</default> + </TrimWithAdditionalCoGPositions> + <TrimHighLift description="Additionally trim the high lift polars"> + <value>false</value> + <default>false</default> + </TrimHighLift> + <StabAngleGrid description="stab angle gird relative to design angle; mode_0: coarse[-6;6] in 6 deg steps; mode_1: fine [-6;6] in 2 deg steps; mode_2: custom"> + <value>mode_0</value> + <default>mode_0</default> + </StabAngleGrid> + <customStabAngleGrid description="custom stabilizer angles if StabAngleGrid is set to mode_2"> + <value>-1;0;1</value> + <default>-1;0;1</default> + </customStabAngleGrid> + </Trim> + <LiftingLine description="liftingLine"> + <FolderPath description="Path to LIFTING_LINE"> + <value>LiftingLine/</value> + </FolderPath> + <DeleteLiftingLineFiles description="Deletes LL folder from project folder after program execution"> + <value>false</value> + <default>true</default> + </DeleteLiftingLineFiles> + </LiftingLine> + <aeroStrategySelection description="selection of strategy to use"> + <tawStrategies> + <default>tawDefaultStrategy</default> + <value>tawDefaultStrategy</value> + </tawStrategies> + <bwbStrategies> + <default>bwbDefaultStrategy</default> + <value>bwbDefaultStrategy</value> + </bwbStrategies> + </aeroStrategySelection> + <FlightConditions description="Flight State"> + <AdaptMachNumbersToCruiseReq description="0: List below is used, 1: Mach numbers are distributed reasonably with respect to design Mach number."> + <value>mode_0</value> + </AdaptMachNumbersToCruiseReq> + <PolarAttributes description="If AdaptMachNumbersToCruiseReq is on, extrapolation and grid change are set for all polars. Otherwise list below is used."> + <AllowExtrapolation description="AllowExtrapolation"> + <value>true</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>true</value> + </AllowGridChange> + </PolarAttributes> + <DesignAltitude description="Design height for Mach numbers M geq 0.5" Unit="ft" UseAverageCruiseAltitude="0" Default="35000"> + <value>35000</value> + <unit>ft</unit> + </DesignAltitude> + <numberFlightConditions description="Number of flight conditions to be examined"> + <value>11</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </numberFlightConditions> + <FlightCondition ID="0" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.2</default> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <value>0</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="1" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.5</default> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="2" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.6</default> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="3" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.7</default> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="4" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.75</default> + <value>0.73</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="5" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.78</default> + <value>0.76</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="6" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.80</default> + <value>0.77</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="7" Desc="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.81</default> + <value>0.78</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="8" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.82</default> + <value>0.79</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="9" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.83</default> + <value>0.80</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="10" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.84</default> + <value>0.83</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + </FlightConditions> + <LiftingLineForTAW> + <stepWidthCL description="CL steps in for the polars"> + <value>0.001</value> + <default>0.001</default> + <unit>1</unit> + <lower_boundary>0.0001</lower_boundary> + <upper_boundary>0.1</upper_boundary> + </stepWidthCL> + <PitchingMoment description="Parameters for CM correction and calibration"> + <CM_corr_fuselage description="Semi-emp. CMy-correction regarding fuselage influence (concerns CLalpha (TB), CM0 (TB), dCMdCL or CMalpha), 0: no correction, 1: Raymer, 2: Torenbeek"> + <value>mode_1</value> + <default>mode_1</default> + </CM_corr_fuselage> + <CM_corr_nacelle description="Semi-emp. CMy correction for nacelle influence (concerns dCMdCL or CMalpha), 0: no correction, 1: Raymer, 2: Torenbeek" Default="1"> + <value>mode_1</value> + <default>mode_1</default> + </CM_corr_nacelle> + <delta_CM0 description="Optional CM0-Summand (only for calibration!)"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </delta_CM0> + <delta_dCMdCL description="Optional dCMdCL summand (only for calibration!)"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </delta_dCMdCL> + </PitchingMoment> + <InducedDragCorrection> + <indDragCtCorrForCalibration description="indDragCtCorrForCalibration"> + <value>1</value> + <default>0.99</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </indDragCtCorrForCalibration> + <factorIndDragCleanPolar description="factorIndDragCleanPolar"> + <value>1.0</value> + <default>1.0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </factorIndDragCleanPolar> + </InducedDragCorrection> + </LiftingLineForTAW> + <ViscDragRaymer> + <ManualTransition description="false: No manual transition; true: Manual transition relative to chord"> + <value>false</value> + <default>false</default> + <unit>false</unit> + </ManualTransition> + <TransitionLocationWing description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationWing> + <TransitionLocationStabilizer description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationStabilizer> + <TransitionLocationFin description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationFin> + <UseCalibration description="switch for calibration"> + <value>true</value> + <default>true</default> + </UseCalibration> + <CalibrationHighMa description="calibration values for Mach Numbers greater 0.5"> + <CDSum description="description"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CDSum> + <CLFact description="description"> + <value>0.01</value> + <default>0.01</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="description"> + <value>4</value> + <default>4</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + </CalibrationHighMa> + <CalibrationLowMa description="calibration values for Mach Numbers equal and lower 0.5"> + <CDSum description="description"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CDSum> + <CLFact description="description"> + <value>0.002</value> + <default>0.002</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="description"> + <value>2</value> + <default>2</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + </CalibrationLowMa> + </ViscDragRaymer> + <WaveDragMason> + <NumberWingStrips description="Number of wing strips used for the drag calculation"> + <value>50</value> + <default>50</default> + <unit>1</unit> + <lower_boundary>1</lower_boundary> + <upper_boundary>100</upper_boundary> + </NumberWingStrips> + <Ka description="Technology factor of the wing profiles for the mason method"> + <value>0.935</value> + <default>0.94</default> + <unit>1</unit> + <lower_boundary>0.87</lower_boundary> + <upper_boundary>0.95</upper_boundary> + </Ka> + <MaximumSegmentSweep description="Maximum allowed sweep, befor wave drag calculate returns zero"> + <value>50</value> + <default>50</default> + <unit>deg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>90</upper_boundary> + </MaximumSegmentSweep> + <UseCostomReferenceAngleForSweep description="Switch to enable custom position for the sweep line"> + <value>false</value> + <default>fasle</default> + </UseCostomReferenceAngleForSweep> + <CustomSweepAngle description="Custom chord postition where to calculate the sweep line if enabled"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </CustomSweepAngle> + <UseCalibration description="Switch to enable calibration method"> + <value>true</value> + <default>true</default> + </UseCalibration> + <CLFact description="CLFact"> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="CLExp"> + <value>8</value> + <default>8</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + <DoDragCountCorrection description="Flat correction of wave wing drag in drag counts"> + <value>false</value> + <default>false</default> + </DoDragCountCorrection> + <deltaWaveDragWing description="corrections in drag counts"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </deltaWaveDragWing> + </WaveDragMason> + <SemiEmpiricalHighLiftAdaptions> + <deltaTotalDrag description="Reduction of the total high lift drag in drag counts"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-1000</lower_boundary> + <upper_boundary>1000</upper_boundary> + </deltaTotalDrag> + <factorDrag description="Rel. factor for percentage change of total drag"> + <value>1.0</value> + <default>1.0</default> + <unit>1</unit> + <lower_boundary>-1000</lower_boundary> + <upper_boundary>1000</upper_boundary> + </factorDrag> + </SemiEmpiricalHighLiftAdaptions> + <DragCorrection description=""> + <factorDragCleanPolars description=""> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </factorDragCleanPolars> + <factorDragHighliftPolar> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </factorDragHighliftPolar> + <deltaTotalDragHighLift description="Reduction of the total high lift drag in drag counts"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>-60</lower_boundary> + <upper_boundary>60</upper_boundary> + </deltaTotalDragHighLift> + </DragCorrection> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/calculatePolar_conf_default.xml b/UnicadoGUI/Backend/xml_configs/calculatePolar_conf_default.xml new file mode 100644 index 0000000..b7fefec --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/calculatePolar_conf_default.xml @@ -0,0 +1,592 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="wingDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>new_aircraft.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>false</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>false</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>calculatePolar_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>calculatePolar.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>../inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>../gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings description="programSettings"> + <CLModeAirfoilSelection description="aircraft CL for airfoil selection, 0: CL at ICA, 1: CL at TOC, 2: CL avg cr"> + <value>mode_0</value> + <default>mode_0</default> + </CLModeAirfoilSelection> + <Trim> + <DoTrim description="Method for calculating trimmed aircraft polars with linear interpolation"> + <value>false</value> + <default>true</default> + </DoTrim> + <TrimWithAdditionalCoGPositions description="Do trim method only for design CG or additional for forward and aft position"> + <value>false</value> + <default>false</default> + </TrimWithAdditionalCoGPositions> + <TrimHighLift description="Additionally trim the high lift polars"> + <value>false</value> + <default>false</default> + </TrimHighLift> + <StabAngleGrid description="stab angle gird relative to design angle; mode_0: coarse[-6;6] in 6 deg steps; mode_1: fine [-6;6] in 2 deg steps; mode_2: custom"> + <value>mode_0</value> + <default>mode_0</default> + </StabAngleGrid> + <customStabAngleGrid description="custom stabilizer angles if StabAngleGrid is set to mode_2"> + <value>-1;0;1</value> + <default>-1;0;1</default> + </customStabAngleGrid> + </Trim> + <LiftingLine description="liftingLine"> + <FolderPath description="Path to LIFTING_LINE"> + <value>LiftingLine/</value> + </FolderPath> + <DeleteLiftingLineFiles description="Deletes LL folder from project folder after program execution"> + <value>false</value> + <default>true</default> + </DeleteLiftingLineFiles> + </LiftingLine> + <aeroStrategySelection description="selection of strategy to use"> + <tawStrategies> + <default>tawDefaultStrategy</default> + <value>tawDefaultStrategy</value> + </tawStrategies> + <bwbStrategies> + <default>bwbDefaultStrategy</default> + <value>bwbDefaultStrategy</value> + </bwbStrategies> + </aeroStrategySelection> + <FlightConditions description="Flight State"> + <AdaptMachNumbersToCruiseReq description="0: List below is used, 1: Mach numbers are distributed reasonably with respect to design Mach number."> + <value>mode_0</value> + </AdaptMachNumbersToCruiseReq> + <PolarAttributes description="If AdaptMachNumbersToCruiseReq is on, extrapolation and grid change are set for all polars. Otherwise list below is used."> + <AllowExtrapolation description="AllowExtrapolation"> + <value>true</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>true</value> + </AllowGridChange> + </PolarAttributes> + <DesignAltitude description="Design height for Mach numbers M geq 0.5" Unit="ft" UseAverageCruiseAltitude="0" Default="35000"> + <value>35000</value> + <unit>ft</unit> + </DesignAltitude> + <numberFlightConditions description="Number of flight conditions to be examined"> + <value>11</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </numberFlightConditions> + <FlightCondition ID="0" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.2</default> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <value>0</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="1" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.5</default> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="2" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.6</default> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="3" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.7</default> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="4" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.75</default> + <value>0.73</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="5" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.78</default> + <value>0.76</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="6" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.80</default> + <value>0.77</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="7" Desc="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.81</default> + <value>0.78</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="8" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.82</default> + <value>0.79</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="9" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.83</default> + <value>0.80</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + <FlightCondition ID="10" description="Description of the flight condition"> + <AllowExtrapolation description="AllowExtrapolation"> + <value>mode_1</value> + </AllowExtrapolation> + <AllowGridChange description="AllowGridChange"> + <value>mode_1</value> + </AllowGridChange> + <Mach description="Mach number"> + <default>0.84</default> + <value>0.83</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </Mach> + <Altitude description="flight level"> + <default>3500</default> + <value>35000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>42069</upper_boundary> + </Altitude> + </FlightCondition> + </FlightConditions> + <LiftingLineForTAW> + <stepWidthCL description="CL steps in for the polars"> + <value>0.001</value> + <default>0.001</default> + <unit>1</unit> + <lower_boundary>0.0001</lower_boundary> + <upper_boundary>0.1</upper_boundary> + </stepWidthCL> + <PitchingMoment description="Parameters for CM correction and calibration"> + <CM_corr_fuselage description="Semi-emp. CMy-correction regarding fuselage influence (concerns CLalpha (TB), CM0 (TB), dCMdCL or CMalpha), 0: no correction, 1: Raymer, 2: Torenbeek"> + <value>mode_1</value> + <default>mode_1</default> + </CM_corr_fuselage> + <CM_corr_nacelle description="Semi-emp. CMy correction for nacelle influence (concerns dCMdCL or CMalpha), 0: no correction, 1: Raymer, 2: Torenbeek" Default="1"> + <value>mode_1</value> + <default>mode_1</default> + </CM_corr_nacelle> + <delta_CM0 description="Optional CM0-Summand (only for calibration!)"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </delta_CM0> + <delta_dCMdCL description="Optional dCMdCL summand (only for calibration!)"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </delta_dCMdCL> + </PitchingMoment> + <InducedDragCorrection> + <indDragCtCorrForCalibration description="indDragCtCorrForCalibration"> + <value>1</value> + <default>0.99</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </indDragCtCorrForCalibration> + <factorIndDragCleanPolar description="factorIndDragCleanPolar"> + <value>1.0</value> + <default>1.0</default> + <unit>1</unit> + <upper_boundary>inf</upper_boundary> + <lower_boundary>-inf</lower_boundary> + </factorIndDragCleanPolar> + </InducedDragCorrection> + </LiftingLineForTAW> + <ViscDragRaymer> + <ManualTransition description="false: No manual transition; true: Manual transition relative to chord"> + <value>false</value> + <default>false</default> + <unit>false</unit> + </ManualTransition> + <TransitionLocationWing description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationWing> + <TransitionLocationStabilizer description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationStabilizer> + <TransitionLocationFin description="Transition lines relative to local chord of components"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </TransitionLocationFin> + <UseCalibration description="switch for calibration"> + <value>true</value> + <default>true</default> + </UseCalibration> + <CalibrationHighMa description="calibration values for Mach Numbers greater 0.5"> + <CDSum description="description"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CDSum> + <CLFact description="description"> + <value>0.01</value> + <default>0.01</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="description"> + <value>4</value> + <default>4</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + </CalibrationHighMa> + <CalibrationLowMa description="calibration values for Mach Numbers equal and lower 0.5"> + <CDSum description="description"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CDSum> + <CLFact description="description"> + <value>0.002</value> + <default>0.002</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="description"> + <value>2</value> + <default>2</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + </CalibrationLowMa> + </ViscDragRaymer> + <WaveDragMason> + <NumberWingStrips description="Number of wing strips used for the drag calculation"> + <value>50</value> + <default>50</default> + <unit>1</unit> + <lower_boundary>1</lower_boundary> + <upper_boundary>100</upper_boundary> + </NumberWingStrips> + <Ka description="Technology factor of the wing profiles for the mason method"> + <value>0.935</value> + <default>0.94</default> + <unit>1</unit> + <lower_boundary>0.87</lower_boundary> + <upper_boundary>0.95</upper_boundary> + </Ka> + <MaximumSegmentSweep description="Maximum allowed sweep, befor wave drag calculate returns zero"> + <value>50</value> + <default>50</default> + <unit>deg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>90</upper_boundary> + </MaximumSegmentSweep> + <UseCostomReferenceAngleForSweep description="Switch to enable custom position for the sweep line"> + <value>false</value> + <default>fasle</default> + </UseCostomReferenceAngleForSweep> + <CustomSweepAngle description="Custom chord postition where to calculate the sweep line if enabled"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </CustomSweepAngle> + <UseCalibration description="Switch to enable calibration method"> + <value>true</value> + <default>true</default> + </UseCalibration> + <CLFact description="CLFact"> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLFact> + <CLExp description="CLExp"> + <value>8</value> + <default>8</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </CLExp> + <DoDragCountCorrection description="Flat correction of wave wing drag in drag counts"> + <value>false</value> + <default>false</default> + </DoDragCountCorrection> + <deltaWaveDragWing description="corrections in drag counts"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </deltaWaveDragWing> + </WaveDragMason> + <SemiEmpiricalHighLiftAdaptions> + <deltaTotalDrag description="Reduction of the total high lift drag in drag counts"> + <value>0.0</value> + <default>0.0</default> + <unit>1</unit> + <lower_boundary>-1000</lower_boundary> + <upper_boundary>1000</upper_boundary> + </deltaTotalDrag> + <factorDrag description="Rel. factor for percentage change of total drag"> + <value>1.0</value> + <default>1.0</default> + <unit>1</unit> + <lower_boundary>-1000</lower_boundary> + <upper_boundary>1000</upper_boundary> + </factorDrag> + </SemiEmpiricalHighLiftAdaptions> + <DragCorrection description=""> + <factorDragCleanPolars description=""> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </factorDragCleanPolars> + <factorDragHighliftPolar> + <value>1</value> + <default>1</default> + <unit>1</unit> + <lower_boundary>0.5</lower_boundary> + <upper_boundary>1.5</upper_boundary> + </factorDragHighliftPolar> + <deltaTotalDragHighLift description="Reduction of the total high lift drag in drag counts"> + <value>0</value> + <default>0</default> + <unit>1</unit> + <lower_boundary>-60</lower_boundary> + <upper_boundary>60</upper_boundary> + </deltaTotalDragHighLift> + </DragCorrection> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/config.ini b/UnicadoGUI/Backend/xml_configs/config.ini new file mode 100644 index 0000000..a83da65 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/config.ini @@ -0,0 +1,3 @@ +[available_Modules] +modules = calculatePerformance,calculatePolar,createMissionXML,initialSizing,missionAnalysis,propulsionDesign,systemsDesign,weightAndBalanceAnalysis,wingDesign + diff --git a/UnicadoGUI/Backend/xml_configs/convergenceLoop_conf.xml b/UnicadoGUI/Backend/xml_configs/convergenceLoop_conf.xml new file mode 100644 index 0000000..625cf7c --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/convergenceLoop_conf.xml @@ -0,0 +1,192 @@ +<ConfigFile Name="convergenceLoop_conf.xml"> + <ControlSettings Desc="general control settings"> + <IOFileName>CSR-02.xml</IOFileName> + <IODir>../projects/CSR/CSR-02/</IODir> + <OwnToolLevel>1</OwnToolLevel> + <ConsoleOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</ConsoleOutputOn> + <LogfileOutputOn Desc="0: Off, 1: only out/err/warn, 2: 1 + info, 3: 2 + debug">1</LogfileOutputOn> + <PlotOutputOn CopyPlottingFiles="1">1</PlotOutputOn> + <ReportOutputOn>1</ReportOutputOn> + <TexReportOn>1</TexReportOn> + <WriteInfoFiles>0</WriteInfoFiles> + <GnuplotScript>convergenceLoop_plot.plt</GnuplotScript> + <LogFile>convergenceLoop.log</LogFile> + <InkscapePath>DEFAULT</InkscapePath> + <GnuplotPath>DEFAULT</GnuplotPath> + <ProgramSpecific Desc="program-specific control settings"> + <UseControlSettingsForSubPrograms Default="1" Desc="1: Using General Control Settings for All Subprograms">1</UseControlSettingsForSubPrograms> + <ResetConfigsAtExit Default="1" Desc="1: Resetting Config files at the End of the Program">1</ResetConfigsAtExit> + <SaveConfigsToProjectFolder Default="1" Desc="1: Configs of the subprograms are stored in the folder IODir/configFiles/">1</SaveConfigsToProjectFolder> + <SaveLogFilesToProjectFolder Default="1" Desc="1: Logfiles of the subprograms are stored in the folder IODir/configFiles/">1</SaveLogFilesToProjectFolder> + <UseConfigsFromProjectFolder Default="0" Desc="1: Configs are taken from project folders (see above)">0</UseConfigsFromProjectFolder> + <CheckSettingsForDesignLogic ChangeIfNotConsistent="1" Default="1" Desc="Settings of subprograms are checked">1</CheckSettingsForDesignLogic> + <DeletePlotsBeforeRun Default="0" Desc="1: Old plots and reports are deleted from folders (especially useful for studies)">0</DeletePlotsBeforeRun> + <ClearOldLogFilesAtStart Default="1" Desc="Clear all Subtool logfiles at start">1</ClearOldLogFilesAtStart> + <CreatePlotForCalculationHistory Default="0" Desc="0: no plot for calculation history created; 1: plot for calculation history created">0</CreatePlotForCalculationHistory> + <SwitchOffPlots Default="1" Desc="1: Switch Off Plots during Design Iteration">1</SwitchOffPlots> + <SaveAcftXmlAfterIteration Default="1" Desc="1: Acft-XML is buffered after each iteration">1</SaveAcftXmlAfterIteration> + <CheckoutProgramsFromRepository CheckoutDepth="1" Default="1" DeleteSrcDirs="0" Desc="1: If program folder does not exist, automatic checkout from Git server." ExitAfterCheckout="1" PrivateOpenSSHkey="DEFAULT" Timeout="30">1</CheckoutProgramsFromRepository> + <DesignCase> + <Mode Default="0" Desc="0: Standard (no checks in subprograms), 1: Clean Sheet Design, 2: Design with existing geometry">1</Mode> + <Calibration> + <CalibrateToTargetValues Default="0" Desc="1: use target values for MTOM and OME (see below)">0</CalibrateToTargetValues> + <TargetMTOM Desc="Given MTOM">77000</TargetMTOM> + <TargetOME Desc="Given OME (can be skipped, if already calibrated)" Skip="0">42100</TargetOME> + <FreeVariableOMECal Default="1" Desc="1: massEstimation (fuselage)" ResetAtStart="1">1</FreeVariableOMECal> + <FreeVariableMTOMCal Default="1" Desc="1: engineSizing (FuelFlow), 2:calculatePolar (DragReduction)" ResetBothVariablesAtStart="0" ResetUsedVariableAtStart="0">1</FreeVariableMTOMCal> + <NumberOfIterations Default="4" Desc="Number of iterations after which each MTOM calibration is performed">4</NumberOfIterations> + <MaxIterationsBeforeExitOMECal Default="20" Desc="Number of iterations before the OME calibration is canceled by exit(1)">20</MaxIterationsBeforeExitOMECal> + <TruncErrorFactor Default="125" Desc="Termination criterion: As factor regarding convergenceCriteria (see below)">125</TruncErrorFactor> + <Damp_MTOM_Calibration_Lever Default="0" Desc="Switch for damping MTOM calibration lever arm" x_rel_max="2">0</Damp_MTOM_Calibration_Lever> + <Damp_OME_Calibration_Lever Default="0" Desc="Switch for damping OME calibration lever arm" x_rel_max="2">0</Damp_OME_Calibration_Lever> + </Calibration> + <PayloadRangeAnalysis Desc="for determination of points on PL-Range diagram (not suitable for input of values)"> + <ExitIfMTOMLimitReached AllowedRelOvershoot="0." Default="1" Desc="1: Program abort, if TOM ge MTOM (in Study Mode)">1</ExitIfMTOMLimitReached> + <ExitIfFuelLimitReached AllowedRelOvershoot="0." Default="1" Desc="1: Program abort, if fuel estimated ge MFM">1</ExitIfFuelLimitReached> + <DeltaTOMtoMTOM Desc="MTOM - TOM (study mission)" Unit="kg">15797.9102</DeltaTOMtoMTOM> + <DeltaFueltoMFM Desc="MFM - Mission Fuel (study mission)" Unit="kg">25016.84771</DeltaFueltoMFM> + <LeastSquareDelta Desc="sqrt(pow(deltaFuel,2)+pow(deltaTOM,2))" Unit="kg">29587.44051</LeastSquareDelta> + </PayloadRangeAnalysis> + <RangeTypeSpecificFactors Default="0" Des="Adapt aircraft specific factors in all used modules. Mode 0: No adaptation, Mode 1: based on design range, 2: short-range, 3: mid-range, 4: long-range">0</RangeTypeSpecificFactors> + </DesignCase> + <AutomaticTrim Default="1" Desc="Trim is automated">1</AutomaticTrim> + </ProgramSpecific> + <ATLASupportFiles> + <FileName type="OperatingCompany">operating_company.xml</FileName> + <FileName type="Scenario">scenario.xml</FileName> + </ATLASupportFiles> + </ControlSettings> + <ProgramSettings Desc="program settings"> + <convergenceCriteria Default="0.0025" Desc="permitted relative change to achieve convergence" Unit="-">0.0001</convergenceCriteria> + <DampMTOMIteration Default="0" Desc="1: Mean value of the last 2 MTOM values is used to suppress vibrations if necessary.">1</DampMTOMIteration> + <DampOMEIteration Default="0" Desc="1: Mean value of the last 2 OME values is used to suppress vibrations if necessary.">0</DampOMEIteration> + <maxIterationsBeforeExitSizingLoop Default="30" Desc="Number of iterations before the loop is aborted by exit(1)">30</maxIterationsBeforeExitSizingLoop> + <SetupSteps Desc="Programs that are executed once in study mode"> + <NumberPrograms Default="2" Desc="Number of programs before iteration">2</NumberPrograms> + <Program Desc="Path and program name" ID="1" maxRuntime_in_minutes="10"> + <Name Default="initialSizing.exe" Desc="Name">initialSizing</Name> + <Directory Default="../01_initialSizing/" Desc="Path">../01_initialSizing/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="2" maxRuntime_in_minutes="10"> + <Name Default="fuselageDesign.exe" Desc="Name">fuselageDesign</Name> + <Directory Default="../02_fuselageDesign/" Desc="Path">../02_fuselageDesign/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + </SetupSteps> + <SizingLoop Desc="Programs in the Convergence Loop" Iterate="1"> + <NumberPrograms Default="10" Desc="Number of programs in the loop">10</NumberPrograms> + <Program Desc="Path and program name" ID="1" maxRuntime_in_minutes="10"> + <Name Default="createMissionXML.exe" Desc="Name">createMissionXML</Name> + <Directory Default="../10_createMissionXML/" Desc="Pfad">../10_createMissionXML/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="7" maxRuntime_in_minutes="10"> + <Name Default="wingDesign.exe" Desc="Name">wingDesign</Name> + <Directory Default="../11_wingDesign/" Desc="Pfad">../11_wingDesign/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="4" maxRuntime_in_minutes="10"> + <Name Default="empenageSizing.exe" Desc="Name">empennageSizing</Name> + <Directory Default="../12_empennageSizing/" Desc="Path">../12_empennageSizing/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="3" maxRuntime_in_minutes="10"> + <Name Default="engineSizing.exe" Desc="Name">engineSizing</Name> + <Directory Default="../13_engineSizing/" Desc="Path">../13_engineSizing/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="5" maxRuntime_in_minutes="10"> + <Name Default="propulsionIntegration.exe" Desc="Name">propulsionIntegration</Name> + <Directory Default="../14_propulsionIntegration/" Desc="Path">../14_propulsionIntegration/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="2" maxRuntime_in_minutes="10"> + <Name Default="landingGearDesign.exe" Desc="Name">landingGearDesign</Name> + <Directory Default="../15_landingGearDesign/" Desc="Path">../15_landingGearDesign/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="6" maxRuntime_in_minutes="10"> + <Name Default="calculatePolar.exe" Desc="Name">calculatePolar</Name> + <Directory Default="../21_calculatePolar/" Desc="Path">../21_calculatePolar/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="8" maxRuntime_in_minutes="10"> + <Name Default="massEstimation.exe" Desc="Name">massEstimation</Name> + <Directory Default="../22_massEstimation/" Desc="Path">../22_massEstimation/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="9" maxRuntime_in_minutes="10"> + <Name Default="systemsDesign.exe" Desc="Name">systemsDesign</Name> + <Directory Default="../23_systemsDesign/" Desc="Path">../23_systemsDesign/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="10" maxRuntime_in_minutes="10"> + <Name Default="missionAnalysis.exe" Desc="Name">missionAnalysis</Name> + <Directory Default="../31_missionAnalysis/" Desc="Path">../31_missionAnalysis/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + </SizingLoop> + <StudyMission Desc="Analyse for StudyMission" Iterate="1" TruncError="0.001"> + <NumberPrograms Default="3" Desc="Number of programs for StudyMission">3</NumberPrograms> + <Program Desc="Path and program name" ID="1" maxRuntime_in_minutes="10"> + <Name Default="createMissionXML.exe" Desc="Name">createMissionXML</Name> + <Directory Default="../10_createMissionXML/" Desc="Path">../10_createMissionXML/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="2" maxRuntime_in_minutes="10"> + <Name Default="systemsDesign.exe" Desc="Name">systemsDesign</Name> + <Directory Default="../23_systemsDesign/" Desc="Path">../23_systemsDesign/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="3" maxRuntime_in_minutes="10"> + <Name Default="missionAnalysis.exe" Desc="Name">missionAnalysis</Name> + <Directory Default="../31_missionAnalysis/" Desc="Path">../31_missionAnalysis/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + </StudyMission> + <PostprocessingSteps Desc="Programs that are executed once in study mode"> + <NumberPrograms Default="2" Desc="Number of programs in postprocessing">8</NumberPrograms> + <Program Desc="Path and program name" ID="1" maxRuntime_in_minutes="10" type="std"> + <Name Default="calculatePerformance.exe" Desc="Name">calculatePerformance</Name> + <Directory Default="../51_calculatePerformance/" Desc="Path">../51_calculatePerformance/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rAIRCRAFTDESIGN:master</Source> + </Program> + <Program Desc="Path and program name" ID="2" maxRuntime_in_minutes="10" type="std"> + <Name Default="calculateCosts.exe" Desc="Name">calculateCosts</Name> + <Directory Default="../52_calculateCosts/" Desc="Path">../52_calculateCosts/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALTOOLS:master</Source> + </Program> + <Program Desc="Path and program name" ID="3" maxRuntime_in_minutes="10" type="std"> + <Name Default="estimateDOC.exe" Desc="Name">estimateDOC</Name> + <Directory Default="../53_estimateDOC/" Desc="Path">../53_estimateDOC/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALTOOLS:master</Source> + </Program> + <Program Desc="Path and program name" ID="4" maxRuntime_in_minutes="10" type="std"> + <Name Default="calculateCosts.exe" Desc="Name">calculateCosts</Name> + <Directory Default="../52_calculateCosts/" Desc="Path">../52_calculateCosts/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALTOOLS:master</Source> + </Program> + <Program Desc="Path and program name" ID="5" maxRuntime_in_minutes="10" type="std"> + <Name Default="calculateEmissions.exe" Desc="Name">calculateEmissions</Name> + <Directory Default="../54_calculateEmissions/" Desc="Path">../54_calculateEmissions/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALTOOLS:master</Source> + </Program> + <Program Desc="Path and program name" ID="6" maxRuntime_in_minutes="10" type="std"> + <Name Default="reportGenerator.exe" Desc="Name">reportGenerator</Name> + <Directory Default="../91_reportGenerator/" Desc="Path">../91_reportGenerator/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALSOFTWARE:master</Source> + </Program> + <Program Desc="Path and program name" ID="7" maxRuntime_in_minutes="10" type="std"> + <Name Default="cpacsInterface.exe" Desc="Name">cpacsInterface</Name> + <Directory Default="../92_cpacsInterface/" Desc="Path">../92_cpacsInterface/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALSOFTWARE:master</Source> + </Program> + <Program Desc="Path and program name" ID="8" maxRuntime_in_minutes="10" type="std"> + <Name Default="designEvaluator.exe" Desc="Name">designEvaluator</Name> + <Directory Default="../93_designEvaluator/" Desc="Path">../93_designEvaluator/</Directory> + <Source Desc="Source of tool. Repository: local - Set path to local tool directoryDefault; server - Set path to git repository:branch" Repository="server">rADDITIONALSOFTWARE:master</Source> + </Program> + </PostprocessingSteps> + </ProgramSettings> +</ConfigFile> diff --git a/UnicadoGUI/Backend/xml_configs/createMissionXML_conf.xml b/UnicadoGUI/Backend/xml_configs/createMissionXML_conf.xml new file mode 100644 index 0000000..5723202 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/createMissionXML_conf.xml @@ -0,0 +1,255 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="createMissionXML_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR-02.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>create_mission_xml_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>create_mission_xml.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="Program Settings"> + <mission_choice description="Pick a mission (by now only 1 implemented): standard"> + <value>standard</value> + </mission_choice> + <maximum_operating_mach_number description="Specify the maximum operating Mach number by its delta to the initial cruise Mach number"> + <enable description="Switch to enable the specification via initial cruise Mach number + delta ('true': On, 'false': Off-> read from aircraft exchange file)"> + <value>false</value> + </enable> + <delta description="Difference between maximum operating Mach number (MMO) and initial cruise (IC) Mach number: delta = MMO - IC"> + <value>0.04</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </delta> + </maximum_operating_mach_number> + <adapt_climb_speed_schedule description="Second calibrated airspeed (CAS) within climb adapted to crossover altitude"> + <enable description="Switch to enable crossover altitude adaption ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <crossover_altitude description="Crossover altitude to which the second calibrated airspeed (CAS) shall be adapted"> + <value>30000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50000</upper_boundary> + </crossover_altitude> + </adapt_climb_speed_schedule> + <climb_thrust_setting description="Selector to set the thrust rating within climb/acceleration segments to 'mode_0': Takeoff, 'mode_1': Climb, 'mode_2': Maximum continuous, 'mode_3': Cruise"> + <value>mode_1</value> + </climb_thrust_setting> + <maximum_rate_of_climb description="Limit the rate of climb (ROC) to a preset value during Climb segments; values less then 0: Use full thrust as limit"> + <value>-1</value> + <unit>ft/min</unit> + <lower_boundary>-1</lower_boundary> + <upper_boundary>5000</upper_boundary> + </maximum_rate_of_climb> + <write_requirement_mission description="Switch if a mission file for requirement check mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_requirement_mission> + <design_mission> + <write_mission_file description="Switch if a mission file for the design mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_mission_file> + <output_file_name description="Specify the name of the created mission file"> + <value>mission_design.xml</value> + </output_file_name> + <terminal_operation_time description="Specify the time at the terminal for stopovers"> + <value>25</value> + <unit>min</unit> + <lower_boundary>5</lower_boundary> + <upper_boundary>10000</upper_boundary> + </terminal_operation_time> + <takeoff_procedure description="Selector for the takeoff procedure. 'mode_0': standard, 'mode_1': ICAO-A Take-Off Procedure (not implemented yet), 'mode_2': ICAO-A Take-Off Procedure (not implemented yet), 'mode_3': Standard 19 seat commuter"> + <value>mode_0</value> + </takeoff_procedure> + <approach_procedure description="Selector for the approach procedure. 'mode_0': standard, 'mode_1': Continuous descent approach (not implemented yet), 'mode_2': steep Continuous descent approach (not implemented yet), 'mode_3': Standard 19 seat commuter"> + <value>mode_0</value> + </approach_procedure> + <taxi_time_origin description="Time needed for taxiing at origin."> + <value>9</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_origin> + <taxi_time_destination description="Time needed for taxiing at destination."> + <value>5</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_destination> + <auto_select_initial_cruise_altitude description="Switch to activate automatic selection of the initial cruise altitude (ICA) ('true': On [ICA design: FL330, ICA study: FL350], 'false': Off)"> + <value>false</value> + </auto_select_initial_cruise_altitude> + <auto_select_flight_level description="Specify if and how the flight level selection is automated"> + <enable description="Switch to activate automatic selection of the flight level ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <no_steps description="Switch to never change from initial cruise altitude (ICA) -> ICA = altitude for whole cruise ('true': On, 'false': Off)"> + <value>false</value> + </no_steps> + </auto_select_flight_level> + <round_to_regular_flight_level description="Switch to round to flight levels (FL) within 20 FL (= 2000 ft) intervals; e.g. FL 330 or 350 ('true': On, 'false': Off)"> + <value>true</value> + </round_to_regular_flight_level> + <auto_climb_altitude_steps description="Altitude step distance in cruise flight with automatic altitude adjustment"> + <value>2000</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>50000</upper_boundary> + </auto_climb_altitude_steps> + <auto_rate_of_climb_steps description="Rate of climb steps in cruise with automatic altitude adjustment"> + <value>300</value> + <unit>ft/min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000</upper_boundary> + </auto_rate_of_climb_steps> + <alternate_distance description="Distance from destination to alternate aerodrome"> + <value>370400.2</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>926000</upper_boundary> + </alternate_distance> + <engine_warmup_time description="Running time of the engines before take-off"> + <value>0</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>30</upper_boundary> + </engine_warmup_time> + <electric_taxiing_switch description="mode_0: Propulsion Taxiing; mode_1: Electric Taxiing"> + <value>mode_0</value> + </electric_taxiing_switch> + <origin_airport description="ICAO code of origin - leave empty if no specific airport shall be selected"> + <value></value> + </origin_airport> + <destination_airport description="ICAO code of destination - leave empty if no specific airport shall be selected"> + <value></value> + </destination_airport> + </design_mission> + <study_mission> + <write_mission_file description="Switch if a mission file for the study mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_mission_file> + <copy_mach_number description="Switch if the Mach number is copied from the design mission's requirements block ('true': On, 'false': Off; only for parameter studies with Mach number variation)"> + <value>false</value> + </copy_mach_number> + <copy_initial_cruise_altitude description="Switch if the initial cruise altitude (ICA) is copied from the design mission's requirements block ('true': On, 'false': Off; only for parameter studies with ICA variation without altitude optimization)"> + <value>false</value> + </copy_initial_cruise_altitude> + <output_file_name description="Specify the name of the created mission file"> + <value>mission_study.xml</value> + </output_file_name> + <terminal_operation_time description="Specify the time at the terminal for stopovers"> + <value>25</value> + <unit>min</unit> + <lower_boundary>5</lower_boundary> + <upper_boundary>inf</upper_boundary> + </terminal_operation_time> + <takeoff_procedure description="Selector for the takeoff procedure. 'mode_0': standard, 'mode_1': Standard 19 seat commuter"> + <value>mode_0</value> + </takeoff_procedure> + <approach_procedure description="Selector for the approach procedure. 'mode_0': standard, 'mode_1': Standard 19 seat commuter"> + <value>mode_0</value> + </approach_procedure> + <taxi_time_origin description="Time needed for taxiing at origin."> + <value>9</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_origin> + <taxi_time_destination description="Time needed for taxiing at destination."> + <value>5</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_destination> + <auto_select_initial_cruise_altitude description="Switch to activate automatic selection of the initial cruise altitude (ICA) ('true': On [ICA design: FL330, ICA study: FL350], 'false': Off)"> + <value>false</value> + </auto_select_initial_cruise_altitude> + <auto_select_flight_level description="Specify if and how the flight level selection is automated"> + <enable description="Switch to activate automatic selection of the flight level ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <no_steps description="Switch to never change from initial cruise altitude (ICA) -> ICA = altitude for whole cruise ('true': On, 'false': Off)"> + <value>false</value> + </no_steps> + </auto_select_flight_level> + <round_to_regular_flight_level description="Switch to round to flight levels (FL) within 20 FL (= 2000 ft) intervals; e.g. FL 330 or 350 ('true': On, 'false': Off)"> + <value>true</value> + </round_to_regular_flight_level> + <auto_climb_altitude_steps description="Altitude step distance in cruise flight with automatic altitude adjustment"> + <value>2000</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>50000</upper_boundary> + </auto_climb_altitude_steps> + <auto_rate_of_climb_steps description="Rate of climb steps in cruise with automatic altitude adjustment"> + <value>300</value> + <unit>ft/min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000</upper_boundary> + </auto_rate_of_climb_steps> + <alternate_distance description="Distance from destination to alternate aerodrome"> + <value>370400.2</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>926000</upper_boundary> + </alternate_distance> + <engine_warmup_time description="Running time of the engines before take-off"> + <value>0</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>30</upper_boundary> + </engine_warmup_time> + <electric_taxiing_switch description="mode_0: Propulsion Taxiing; mode_1: Electric Taxiing"> + <value>mode_0</value> + </electric_taxiing_switch> + <origin_airport description="ICAO code of origin - leave empty if no specific airport shall be selected"> + <value></value> + </origin_airport> + <destination_airport description="ICAO code of destination - leave empty if no specific airport shall be selected"> + <value></value> + </destination_airport> + </study_mission> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/createMissionXML_conf_default.xml b/UnicadoGUI/Backend/xml_configs/createMissionXML_conf_default.xml new file mode 100644 index 0000000..ef4019e --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/createMissionXML_conf_default.xml @@ -0,0 +1,255 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="createMissionXML_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR-02.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>create_mission_xml_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>create_mission_xml.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="Program Settings"> + <mission_choice description="Pick a mission (by now only 1 implemented): standard"> + <value>standard</value> + </mission_choice> + <maximum_operating_mach_number description="Specify the maximum operating Mach number by its delta to the initial cruise Mach number"> + <enable description="Switch to enable the specification via initial cruise Mach number + delta ('true': On, 'false': Off-> read from aircraft exchange file)"> + <value>false</value> + </enable> + <delta description="Difference between maximum operating Mach number (MMO) and initial cruise (IC) Mach number: delta = MMO - IC"> + <value>0.04</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </delta> + </maximum_operating_mach_number> + <adapt_climb_speed_schedule description="Second calibrated airspeed (CAS) within climb adapted to crossover altitude"> + <enable description="Switch to enable crossover altitude adaption ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <crossover_altitude description="Crossover altitude to which the second calibrated airspeed (CAS) shall be adapted"> + <value>30000</value> + <unit>ft</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50000</upper_boundary> + </crossover_altitude> + </adapt_climb_speed_schedule> + <climb_thrust_setting description="Selector to set the thrust rating within climb/acceleration segments to 'mode_0': Takeoff, 'mode_1': Climb, 'mode_2': Maximum continuous, 'mode_3': Cruise"> + <value>mode_1</value> + </climb_thrust_setting> + <maximum_rate_of_climb description="Limit the rate of climb (ROC) to a preset value during Climb segments; values less then 0: Use full thrust as limit"> + <value>-1</value> + <unit>ft/min</unit> + <lower_boundary>-1</lower_boundary> + <upper_boundary>5000</upper_boundary> + </maximum_rate_of_climb> + <write_requirement_mission description="Switch if a mission file for requirement check mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_requirement_mission> + <design_mission> + <write_mission_file description="Switch if a mission file for the design mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_mission_file> + <output_file_name description="Specify the name of the created mission file"> + <value>mission_design.xml</value> + </output_file_name> + <terminal_operation_time description="Specify the time at the terminal for stopovers"> + <value>25</value> + <unit>min</unit> + <lower_boundary>5</lower_boundary> + <upper_boundary>10000</upper_boundary> + </terminal_operation_time> + <takeoff_procedure description="Selector for the takeoff procedure. 'mode_0': standard, 'mode_1': ICAO-A Take-Off Procedure (not implemented yet), 'mode_2': ICAO-A Take-Off Procedure (not implemented yet), 'mode_3': Standard 19 seat commuter"> + <value>mode_0</value> + </takeoff_procedure> + <approach_procedure description="Selector for the approach procedure. 'mode_0': standard, 'mode_1': Continuous descent approach (not implemented yet), 'mode_2': steep Continuous descent approach (not implemented yet), 'mode_3': Standard 19 seat commuter"> + <value>mode_0</value> + </approach_procedure> + <taxi_time_origin description="Time needed for taxiing at origin."> + <value>9</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_origin> + <taxi_time_destination description="Time needed for taxiing at destination."> + <value>5</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_destination> + <auto_select_initial_cruise_altitude description="Switch to activate automatic selection of the initial cruise altitude (ICA) ('true': On [ICA design: FL330, ICA study: FL350], 'false': Off)"> + <value>false</value> + </auto_select_initial_cruise_altitude> + <auto_select_flight_level description="Specify if and how the flight level selection is automated"> + <enable description="Switch to activate automatic selection of the flight level ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <no_steps description="Switch to never change from initial cruise altitude (ICA) -> ICA = altitude for whole cruise ('true': On, 'false': Off)"> + <value>false</value> + </no_steps> + </auto_select_flight_level> + <round_to_regular_flight_level description="Switch to round to flight levels (FL) within 20 FL (= 2000 ft) intervals; e.g. FL 330 or 350 ('true': On, 'false': Off)"> + <value>true</value> + </round_to_regular_flight_level> + <auto_climb_altitude_steps description="Altitude step distance in cruise flight with automatic altitude adjustment"> + <value>2000</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>50000</upper_boundary> + </auto_climb_altitude_steps> + <auto_rate_of_climb_steps description="Rate of climb steps in cruise with automatic altitude adjustment"> + <value>300</value> + <unit>ft/min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000</upper_boundary> + </auto_rate_of_climb_steps> + <alternate_distance description="Distance from destination to alternate aerodrome"> + <value>370400.2</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>926000</upper_boundary> + </alternate_distance> + <engine_warmup_time description="Running time of the engines before take-off"> + <value>0</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>30</upper_boundary> + </engine_warmup_time> + <electric_taxiing_switch description="mode_0: Propulsion Taxiing; mode_1: Electric Taxiing"> + <value>mode_0</value> + </electric_taxiing_switch> + <origin_airport description="ICAO code of origin - leave empty if no specific airport shall be selected"> + <value></value> + </origin_airport> + <destination_airport description="ICAO code of destination - leave empty if no specific airport shall be selected"> + <value></value> + </destination_airport> + </design_mission> + <study_mission> + <write_mission_file description="Switch if a mission file for the study mission shall be created ('true': On, 'false': Off)"> + <value>true</value> + </write_mission_file> + <copy_mach_number description="Switch if the Mach number is copied from the design mission's requirements block ('true': On, 'false': Off; only for parameter studies with Mach number variation)"> + <value>false</value> + </copy_mach_number> + <copy_initial_cruise_altitude description="Switch if the initial cruise altitude (ICA) is copied from the design mission's requirements block ('true': On, 'false': Off; only for parameter studies with ICA variation without altitude optimization)"> + <value>false</value> + </copy_initial_cruise_altitude> + <output_file_name description="Specify the name of the created mission file"> + <value>mission_study.xml</value> + </output_file_name> + <terminal_operation_time description="Specify the time at the terminal for stopovers"> + <value>25</value> + <unit>min</unit> + <lower_boundary>5</lower_boundary> + <upper_boundary>inf</upper_boundary> + </terminal_operation_time> + <takeoff_procedure description="Selector for the takeoff procedure. 'mode_0': standard, 'mode_1': Standard 19 seat commuter"> + <value>mode_0</value> + </takeoff_procedure> + <approach_procedure description="Selector for the approach procedure. 'mode_0': standard, 'mode_1': Standard 19 seat commuter"> + <value>mode_0</value> + </approach_procedure> + <taxi_time_origin description="Time needed for taxiing at origin."> + <value>9</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_origin> + <taxi_time_destination description="Time needed for taxiing at destination."> + <value>5</value> + <unit>min</unit> + <lower_boundary>0.1</lower_boundary> + <upper_boundary>30</upper_boundary> + </taxi_time_destination> + <auto_select_initial_cruise_altitude description="Switch to activate automatic selection of the initial cruise altitude (ICA) ('true': On [ICA design: FL330, ICA study: FL350], 'false': Off)"> + <value>false</value> + </auto_select_initial_cruise_altitude> + <auto_select_flight_level description="Specify if and how the flight level selection is automated"> + <enable description="Switch to activate automatic selection of the flight level ('true': On, 'false': Off)"> + <value>false</value> + </enable> + <no_steps description="Switch to never change from initial cruise altitude (ICA) -> ICA = altitude for whole cruise ('true': On, 'false': Off)"> + <value>false</value> + </no_steps> + </auto_select_flight_level> + <round_to_regular_flight_level description="Switch to round to flight levels (FL) within 20 FL (= 2000 ft) intervals; e.g. FL 330 or 350 ('true': On, 'false': Off)"> + <value>true</value> + </round_to_regular_flight_level> + <auto_climb_altitude_steps description="Altitude step distance in cruise flight with automatic altitude adjustment"> + <value>2000</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>50000</upper_boundary> + </auto_climb_altitude_steps> + <auto_rate_of_climb_steps description="Rate of climb steps in cruise with automatic altitude adjustment"> + <value>300</value> + <unit>ft/min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000</upper_boundary> + </auto_rate_of_climb_steps> + <alternate_distance description="Distance from destination to alternate aerodrome"> + <value>370400.2</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>926000</upper_boundary> + </alternate_distance> + <engine_warmup_time description="Running time of the engines before take-off"> + <value>0</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>30</upper_boundary> + </engine_warmup_time> + <electric_taxiing_switch description="mode_0: Propulsion Taxiing; mode_1: Electric Taxiing"> + <value>mode_0</value> + </electric_taxiing_switch> + <origin_airport description="ICAO code of origin - leave empty if no specific airport shall be selected"> + <value></value> + </origin_airport> + <destination_airport description="ICAO code of destination - leave empty if no specific airport shall be selected"> + <value></value> + </destination_airport> + </study_mission> + </program_settings> +</module_configuration_file> diff --git a/UnicadoGUI/Backend/xml_configs/initialSizing_conf.xml b/UnicadoGUI/Backend/xml_configs/initialSizing_conf.xml new file mode 100644 index 0000000..3bf81bd --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/initialSizing_conf.xml @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="initialSizing_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>X:/UNICADO/rUNICADO/aircraftReferences/CSR/CSR-02/cleanSheetDesign/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>1</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings Desc="program settings"> + <design_case description="Switch for system sizing. 1: Sizing, 0: ONLY determination of a load profile for a specific mission"> + <value>1</value> + <default>1</default> + </design_case> + <tube_and_wing description="settings for tube and wing (TAW)"> + <approach_selection description="selection of approach level"> + <value>analytical</value> + </approach_selection> + <analytical_approach> + <General> + <OswaldFactor Desc="Oswald factor in clean configuration" Unit="-"> + <value>0.85</value> + <default>0.85</default> + </OswaldFactor> + <AspectRatio Desc="aspect ratio" Unit="count"> + <value>9.5</value> + <default>9.5</default> + </AspectRatio> + <n_pilots Desc="Number of Pilots" Unit="count"> + <value>2</value> + <default>2</default> + </n_pilots> + <n_engines Desc="Number of engines" Unit="count"> + <value>2</value> + <default>2</default> + </n_engines> + <Cf Desc="friction coefficient" Unit="count"> + <value>0.002</value> + <default>0.002</default> + </Cf> + </General> + <Constants> + <SFC_kerosene Desc="Specific Fuel Consumption Factor for Kerosene"> + <value>0.0001389</value> + <default>0.0001389</default> + </SFC_kerosene> + </Constants> + <TOFL Desc="takeoff distance requirement"> + <CLmax_TO Desc="Maximum lift coefficient at takeoff" Unit="-"> + <value>2.28</value> + <default>2.28</default> + </CLmax_TO> + </TOFL> + <LDN Desc="landing distance requirement"> + <CLmax_L Desc="Maximum lift coefficient at landing" Unit="-"> + <value>2.85</value> + <default>2.85</default> + </CLmax_L> + <mlmo Desc="ratio between maximum landing mass and takeoff mass" Unit="-"> + <value>0.82</value> + <default>0.82</default> + </mlmo> + </LDN> + <Climb Desc="climb performance requirement"> + <deltaCD_HL Desc="Delta CD0 with TO-Flaps" Unit="-"> + <value>0.07</value> + <default>0.07</default> + </deltaCD_HL> + </Climb> + <Cruise Desc="maximum cruise speed requirement"> + <mcr_mto Desc="ratio between cruise mass and takeoff mass - default for mid- and short-range: 0.956, default for long range: 0.924"> + <value>0.956</value> + <default>0.956</default> + </mcr_mto> + <optimalCL Desc="maximum CL at initial cruise"> + <value>0.57</value> + <default>0.57</default> + </optimalCL> + </Cruise> + <LiftToDragRatios Desc="initial cruise and loiter lift to drag ratios "> + <LD_initial_cruise Desc="cruise requirements"> + <value>15</value> + <default>15</default> + </LD_initial_cruise> + <LD_initial_loiter Desc="loiter requirements"> + <value>16</value> + <default>16</default> + </LD_initial_loiter> + </LiftToDragRatios> + <Masses Desc="mass estimation methodology"> + <Fractions Desc="mass fractions"> + <mf_warmup Desc="Warmup (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_warmup> + <mf_taxi Desc="Warmup (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_taxi> + <mf_to Desc="Taxi and Takeoff (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.995"> + <value>0.995</value> + <default>0.995</default> + </mf_to> + <mf_climb Desc="Climb (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.98"> + <value>0.98</value> + <default>0.98</default> + </mf_climb> + <mf_descent Desc="Descent (according to Raymer: 0.99(A340)-0.995(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_descent> + <mf_missedandclimb Desc="Landing and Taxi Back (according to Raymer: 0.992(A340)-0.997(A320))" Unit="-" Default="0.988"> + <value>0.988</value> + <default>0.988</default> + </mf_missedandclimb> + <mf_land Desc="Landing and Taxi Back (according to Raymer: 0.992(A340)-0.997(A320))" Unit="-" Default="0.995"> + <value>0.995</value> + <default>0.995</default> + </mf_land> + </Fractions> + </Masses> + </analytical_approach> + </tube_and_wing> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/initialSizing_conf_default.xml b/UnicadoGUI/Backend/xml_configs/initialSizing_conf_default.xml new file mode 100644 index 0000000..fbb78c8 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/initialSizing_conf_default.xml @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="initialSizing_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>X:/UNICADO/rUNICADO/aircraftReferences/CSR/CSR-02/cleanSheetDesign/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>1</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings Desc="program settings"> + <design_case description="Switch for system sizing. 1: Sizing, 0: ONLY determination of a load profile for a specific mission"> + <value>1</value> + <default>1</default> + </design_case> + <tube_and_wing description="settings for tube and wing (TAW)"> + <approach_selection description="selection of approach level"> + <value>analytical</value> + </approach_selection> + <analytical_approach> + <General> + <OswaldFactor Desc="Oswald factor in clean configuration" Unit="-"> + <value>0.85</value> + <default>0.85</default> + </OswaldFactor> + <AspectRatio Desc="aspect ratio" Unit="count"> + <value>9.5</value> + <default>9.5</default> + </AspectRatio> + <n_pilots Desc="Number of Pilots" Unit="count"> + <value>2</value> + <default>2</default> + </n_pilots> + <n_engines Desc="Number of engines" Unit="count"> + <value>2</value> + <default>2</default> + </n_engines> + <Cf Desc="friction coefficient" Unit="count"> + <value>0.002</value> + <default>0.002</default> + </Cf> + </General> + <Constants> + <SFC_kerosene Desc="Specific Fuel Consumption Factor for Kerosene"> + <value>0.0001389</value> + <default>0.0001389</default> + </SFC_kerosene> + </Constants> + <TOFL Desc="takeoff distance requirement"> + <CLmax_TO Desc="Maximum lift coefficient at takeoff" Unit="-"> + <value>2.28</value> + <default>2.28</default> + </CLmax_TO> + </TOFL> + <LDN Desc="landing distance requirement"> + <CLmax_L Desc="Maximum lift coefficient at landing" Unit="-"> + <value>2.85</value> + <default>2.85</default> + </CLmax_L> + <mlmo Desc="ratio between maximum landing mass and takeoff mass" Unit="-"> + <value>0.82</value> + <default>0.82</default> + </mlmo> + </LDN> + <Climb Desc="climb performance requirement"> + <deltaCD_HL Desc="Delta CD0 with TO-Flaps" Unit="-"> + <value>0.07</value> + <default>0.07</default> + </deltaCD_HL> + </Climb> + <Cruise Desc="maximum cruise speed requirement"> + <mcr_mto Desc="ratio between cruise mass and takeoff mass - default for mid- and short-range: 0.956, default for long range: 0.924"> + <value>0.956</value> + <default>0.956</default> + </mcr_mto> + <optimalCL Desc="maximum CL at initial cruise"> + <value>0.57</value> + <default>0.57</default> + </optimalCL> + </Cruise> + <LiftToDragRatios Desc="initial cruise and loiter lift to drag ratios "> + <LD_initial_cruise Desc="cruise requirements"> + <value>15</value> + <default>15</default> + </LD_initial_cruise> + <LD_initial_loiter Desc="loiter requirements"> + <value>16</value> + <default>16</default> + </LD_initial_loiter> + </LiftToDragRatios> + <Masses Desc="mass estimation methodology"> + <Fractions Desc="mass fractions"> + <mf_warmup Desc="Warmup (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_warmup> + <mf_taxi Desc="Warmup (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_taxi> + <mf_to Desc="Taxi and Takeoff (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.995"> + <value>0.995</value> + <default>0.995</default> + </mf_to> + <mf_climb Desc="Climb (according to Raymer: 0.97(A340)-0.99(A320))" Unit="-" Default="0.98"> + <value>0.98</value> + <default>0.98</default> + </mf_climb> + <mf_descent Desc="Descent (according to Raymer: 0.99(A340)-0.995(A320))" Unit="-" Default="0.99"> + <value>0.99</value> + <default>0.99</default> + </mf_descent> + <mf_missedandclimb Desc="Landing and Taxi Back (according to Raymer: 0.992(A340)-0.997(A320))" Unit="-" Default="0.988"> + <value>0.988</value> + <default>0.988</default> + </mf_missedandclimb> + <mf_land Desc="Landing and Taxi Back (according to Raymer: 0.992(A340)-0.997(A320))" Unit="-" Default="0.995"> + <value>0.995</value> + <default>0.995</default> + </mf_land> + </Fractions> + </Masses> + </analytical_approach> + </tube_and_wing> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf.xml b/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf.xml new file mode 100644 index 0000000..9d6114b --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf.xml @@ -0,0 +1,286 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="missionAnalysis_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>true</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>mission_analysis_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>mission_analysis.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>../inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>../gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings description="Program settings"> + <program_specific description="Program specific control settings"> + <specific_air_range_plot description="Switch to generate plots for the specific air range ('true': On, 'false': Off)"> + <value>true</value> + </specific_air_range_plot> + <exit_if_fuel_limit_reached description="Switch to abort program if estimated fuel reaches maximum fuel mass ('true': On, 'false': Off)"> + <enable description="'true': On, 'false': Off"> + <value>false</value> + </enable> + <allowed_relative_overshoot description="Relative overshoot that shall be allowed"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </allowed_relative_overshoot> + </exit_if_fuel_limit_reached> + <exit_if_maximum_takeoff_mass_limit_reached description="Switch to abort program in study mode if takeoff mass (TOM) is greater than/equal to maximum takoff mass (MTOM) ('true': On, 'false': Off)"> + <enable description="'true': On, 'false': Off"> + <value>false</value> + </enable> + <allowed_relative_overshoot description="Relative overshoot that shall be allowed"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </allowed_relative_overshoot> + </exit_if_maximum_takeoff_mass_limit_reached> + </program_specific> + <general description="General parameters"> + <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)"> + <fuel_estimation description="Setup of the fuel estimation"> + <fuel_estimation_switch description="Switch if the fuel estimation method within the aircraft XML shall be used (to be found in the mission requirements' fuel_estimation_selector)"> + <value>false</value> + </fuel_estimation_switch> + <joint_aviation_requirements_parameters description="Parameter for fuel planning according to the Joint Aviation Requirements (JAR)"> + <contingency_fuel description="Relative share of contingency fuel in total trip fuel. Std: 0.05., if en-route allowance: 0.03 (check 'Getting to Grips With Aircraft Performance' p.173)"> + <value>0.03</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </contingency_fuel> + <use_additional_fuel description="Switch if additional fuel shall be added e.g. for flag or supplemental operations ('true': On, 'false': Off)"> + <value>false</value> + </use_additional_fuel> + <extra_fuel description="Extra fuel that shall be carried at the discretion of the captain"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </extra_fuel> + </joint_aviation_requirements_parameters> + <federal_aviation_regulations_parameter description="Parameter for fuel planning according to the Federal Aviation Regulations (FAR)"> + <use_additional_fuel description="Switch if additional fuel shall be added e.g. for flag or supplemental operations ('true': On, 'false': Off)"> + <value>false</value> + </use_additional_fuel> + </federal_aviation_regulations_parameter> + </fuel_estimation> + <fuel_flow_factor_taxiing description="Factor to adapt the (idle) fuel flow during taxiing"> + <value>1.</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </fuel_flow_factor_taxiing> + <holding description="Behavior during holding"> + <holding_mach_number description="Mach number flown during holding"> + <value>0.4</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </holding_mach_number> + <holding_altitude description="Altitude during holding (30.48 m = 100 ft = 1 FL)"> + <value>1500</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>inf</upper_boundary> + </holding_altitude> + <use_economical_speed description="Switch if the economic Mach number shall overwrite the holding Mach number within the value node ('true': On, 'false': Off)"> + <value>true</value> + </use_economical_speed> + </holding> + </fuel_planning> + <landing_gear description="Design specifications for the landing gear"> + <friction_coefficient description="Friction coefficient of tyres and pavement: Raymer p.486 - Table 17.1: 0.03 - 0.05"> + <value>0.03</value> + <unit>1</unit> + <lower_boundary>0.02</lower_boundary> + <upper_boundary>0.08</upper_boundary> + </friction_coefficient> + <braking_coefficient description="Brake coefficient: Raymer p.486 - Table 17.1: 0.3 - 0.5; Torenbeek: jet 0.4-0.5; prop 0.35-0.45; Airbus: Medium Deceleration = 11 ft/s^2 = 0.34189"> + <value>0.34189</value> + <unit>1</unit> + <lower_boundary>0.06</lower_boundary> + <upper_boundary>0.5</upper_boundary> + </braking_coefficient> + </landing_gear> + <increase_engine_rating_during_climb description="Switch to set engine rating to maximum continuous during climb if climb rating is not sufficient ('true': On, 'false': Off)"> + <value>false</value> + </increase_engine_rating_during_climb> + <polar_switch_mission_point description="Definition where and how a polar switch shall take place"> + <polar_switch_selector description="Selector to define the mission point where alternative polars takes place ('mode_0': Off, 'mode_1': Absolute range, 'mode_2': Relative range, 'mode_3'': Absolute remaining flight time, 'mode_4': Relative remaining flight time)"> + <value>mode_0</value> + </polar_switch_selector> + <absolute_range_flown description="Absolute flown range"> + <value>500</value> + <unit>nm</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </absolute_range_flown> + <relative_range_flown description="Range flown relative to total range"> + <value>0.85</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </relative_range_flown> + <absolute_time_passed description="Absolute passed flight time"> + <value>250</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </absolute_time_passed> + <relative_time_passed description="Passed flight time relative to the total flight time"> + <value>0.85</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </relative_time_passed> + </polar_switch_mission_point> + <glideslope_interception_distance description="Buffer distance to hit the glideslope exactly"> + <value>1000.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </glideslope_interception_distance> + <use_breguet_estimation_in_cruise description="Switch to activate fuel estimation using Breguet equation ('true': On, 'false': Off -> fuel mass is calculated from fuel flow of current engine setting"> + <value>false</value> + </use_breguet_estimation_in_cruise> + <iterate_top_of_descent_mass description="Switch for iteration of mass at top of descent ('true': On, 'false': Off)"> + <value>true</value> + </iterate_top_of_descent_mass> + <landing description="Settings for landing calculation"> + <rotation_time description="Time to rotate at touch down from main gear to nose gear"> + <value>3</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </rotation_time> + <thrust_reverser description="Settings for thrust reverser"> + <enable description="Switch to use thrust reverser for deceleration ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <deactivation_speed description="Calibrated airspeed when the thrust reverser is set from Maximum to Idle"> + <value>80</value> + <unit>KCAS</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>650</upper_boundary> + </deactivation_speed> + <efficiency description="Efficiency of the reverse thrust"> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </efficiency> + </thrust_reverser> + <runway_exit_speed description="Speed to slow down until runway can be exited (normal exit A320: max 15 kts = 7.72 m/s; high speed exit A320: max 25 kts = 12.86 m/s)"> + <value>15</value> + <unit>kts</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>650</upper_boundary> + </runway_exit_speed> + </landing> + </general> + <mode description="Program mode"> + <mission_methods> + <design_mission_switch description="Switch to set a study or design mission ('true': design mission, 'false': study mission)"> + <value>true</value> + </design_mission_switch> + <center_of_gravity_method description="Selector to shift the center of gravity ('mode_0': Off, 'mode_1': half-sophisticated with howe for lifting surface tank, 'mode_2': sophisticated method for center of gravity (only payload and fuel) calculation)"> + <value>mode_0</value> + </center_of_gravity_method> + </mission_methods> + <rate_of_climb_switch description="Switch THAT ONLY AFFECTS THE REQUIREMENTS MISSION: Calculate an optimum for the rate of climb ('true': calculate optimum, 'false': skip)"> + <value>false</value> + </rate_of_climb_switch> + <requirement_check description="Settings for the requirement check"> + <enable description="Switch to check the requirements 'time to climb' and 'flight levels' ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <force_requirement_check description="Switch to force this check ('true': On, 'false': Off)"> + <value>true</value> + </force_requirement_check> + <auto_climb_ratings_for_time_to_climb description="Switch to use automated climb ratings for the time to climb (TTC) ('true': On, 'false': Off)"> + <value>true</value> + </auto_climb_ratings_for_time_to_climb> + </requirement_check> + <calculate_emissions_parameters description="Switch if input for detailed emission calculation shall be generated ('true': On, 'false': Off)"> + <value>true</value> + </calculate_emissions_parameters> + <calculate_noise_parameters description="Switch if input for noise calculation shall be generated ('true': On, 'false': Off)"> + <value>true</value> + </calculate_noise_parameters> + </mode> + <precision description="Specify the calculation accuracy"> + <acceleration_increment description="Step size regarding acceleration or deceleration"> + <value>0.5</value> + <unit>m/s</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>340</upper_boundary> + </acceleration_increment> + <mach_acceleration_increment description="Step size regarding acceleration or deceleration as a Mach number"> + <value>0.005</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </mach_acceleration_increment> + <altitude_increment description="Step distance for climb or descent"> + <value>5.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </altitude_increment> + <way_increment description="Step distance in x-direction"> + <value>1000.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </way_increment> + <specific_air_range_check_increment description="Relative step distance in x-direction for automatic Flight level change check"> + <value>0.01</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </specific_air_range_check_increment> + </precision> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf_default.xml b/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf_default.xml new file mode 100644 index 0000000..5955d49 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/missionAnalysis_conf_default.xml @@ -0,0 +1,286 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="missionAnalysis_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>true</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>mission_analysis_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>mission_analysis.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>../inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>../gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings description="Program settings"> + <program_specific description="Program specific control settings"> + <specific_air_range_plot description="Switch to generate plots for the specific air range ('true': On, 'false': Off)"> + <value>true</value> + </specific_air_range_plot> + <exit_if_fuel_limit_reached description="Switch to abort program if estimated fuel reaches maximum fuel mass ('true': On, 'false': Off)"> + <enable description="'true': On, 'false': Off"> + <value>false</value> + </enable> + <allowed_relative_overshoot description="Relative overshoot that shall be allowed"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </allowed_relative_overshoot> + </exit_if_fuel_limit_reached> + <exit_if_maximum_takeoff_mass_limit_reached description="Switch to abort program in study mode if takeoff mass (TOM) is greater than/equal to maximum takoff mass (MTOM) ('true': On, 'false': Off)"> + <enable description="'true': On, 'false': Off"> + <value>false</value> + </enable> + <allowed_relative_overshoot description="Relative overshoot that shall be allowed"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </allowed_relative_overshoot> + </exit_if_maximum_takeoff_mass_limit_reached> + </program_specific> + <general description="General parameters"> + <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)"> + <fuel_estimation description="Setup of the fuel estimation"> + <fuel_estimation_switch description="Switch if the fuel estimation method within the aircraft XML shall be used (to be found in the mission requirements' fuel_estimation_selector)"> + <value>false</value> + </fuel_estimation_switch> + <joint_aviation_requirements_parameters description="Parameter for fuel planning according to the Joint Aviation Requirements (JAR)"> + <contingency_fuel description="Relative share of contingency fuel in total trip fuel. Std: 0.05., if en-route allowance: 0.03 (check 'Getting to Grips With Aircraft Performance' p.173)"> + <value>0.03</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </contingency_fuel> + <use_additional_fuel description="Switch if additional fuel shall be added e.g. for flag or supplemental operations ('true': On, 'false': Off)"> + <value>false</value> + </use_additional_fuel> + <extra_fuel description="Extra fuel that shall be carried at the discretion of the captain"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </extra_fuel> + </joint_aviation_requirements_parameters> + <federal_aviation_regulations_parameter description="Parameter for fuel planning according to the Federal Aviation Regulations (FAR)"> + <use_additional_fuel description="Switch if additional fuel shall be added e.g. for flag or supplemental operations ('true': On, 'false': Off)"> + <value>false</value> + </use_additional_fuel> + </federal_aviation_regulations_parameter> + </fuel_estimation> + <fuel_flow_factor_taxiing description="Factor to adapt the (idle) fuel flow during taxiing"> + <value>1.</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </fuel_flow_factor_taxiing> + <holding description="Behavior during holding"> + <holding_mach_number description="Mach number flown during holding"> + <value>0.4</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </holding_mach_number> + <holding_altitude description="Altitude during holding (30.48 m = 100 ft = 1 FL)"> + <value>1500</value> + <unit>ft</unit> + <lower_boundary>500</lower_boundary> + <upper_boundary>inf</upper_boundary> + </holding_altitude> + <use_economical_speed description="Switch if the economic Mach number shall overwrite the holding Mach number within the value node ('true': On, 'false': Off)"> + <value>true</value> + </use_economical_speed> + </holding> + </fuel_planning> + <landing_gear description="Design specifications for the landing gear"> + <friction_coefficient description="Friction coefficient of tyres and pavement: Raymer p.486 - Table 17.1: 0.03 - 0.05"> + <value>0.03</value> + <unit>1</unit> + <lower_boundary>0.02</lower_boundary> + <upper_boundary>0.08</upper_boundary> + </friction_coefficient> + <braking_coefficient description="Brake coefficient: Raymer p.486 - Table 17.1: 0.3 - 0.5; Torenbeek: jet 0.4-0.5; prop 0.35-0.45; Airbus: Medium Deceleration = 11 ft/s^2 = 0.34189"> + <value>0.34189</value> + <unit>1</unit> + <lower_boundary>0.06</lower_boundary> + <upper_boundary>0.5</upper_boundary> + </braking_coefficient> + </landing_gear> + <increase_engine_rating_during_climb description="Switch to set engine rating to maximum continuous during climb if climb rating is not sufficient ('true': On, 'false': Off)"> + <value>false</value> + </increase_engine_rating_during_climb> + <polar_switch_mission_point description="Definition where and how a polar switch shall take place"> + <polar_switch_selector description="Selector to define the mission point where alternative polars takes place ('mode_0': Off, 'mode_1': Absolute range, 'mode_2': Relative range, 'mode_3'': Absolute remaining flight time, 'mode_4': Relative remaining flight time)"> + <value>mode_0</value> + </polar_switch_selector> + <absolute_range_flown description="Absolute flown range"> + <value>500</value> + <unit>nm</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </absolute_range_flown> + <relative_range_flown description="Range flown relative to total range"> + <value>0.85</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </relative_range_flown> + <absolute_time_passed description="Absolute passed flight time"> + <value>250</value> + <unit>min</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </absolute_time_passed> + <relative_time_passed description="Passed flight time relative to the total flight time"> + <value>0.85</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </relative_time_passed> + </polar_switch_mission_point> + <glideslope_interception_distance description="Buffer distance to hit the glideslope exactly"> + <value>1000.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </glideslope_interception_distance> + <use_breguet_estimation_in_cruise description="Switch to activate fuel estimation using Breguet equation ('true': On, 'false': Off -> fuel mass is calculated from fuel flow of current engine setting"> + <value>false</value> + </use_breguet_estimation_in_cruise> + <iterate_top_of_descent_mass description="Switch for iteration of mass at top of descent ('true': On, 'false': Off)"> + <value>true</value> + </iterate_top_of_descent_mass> + <landing description="Settings for landing calculation"> + <rotation_time description="Time to rotate at touch down from main gear to nose gear"> + <value>3</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </rotation_time> + <thrust_reverser description="Settings for thrust reverser"> + <enable description="Switch to use thrust reverser for deceleration ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <deactivation_speed description="Calibrated airspeed when the thrust reverser is set from Maximum to Idle"> + <value>80</value> + <unit>KCAS</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>650</upper_boundary> + </deactivation_speed> + <efficiency description="Efficiency of the reverse thrust"> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </efficiency> + </thrust_reverser> + <runway_exit_speed description="Speed to slow down until runway can be exited (normal exit A320: max 15 kts = 7.72 m/s; high speed exit A320: max 25 kts = 12.86 m/s)"> + <value>15</value> + <unit>kts</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>650</upper_boundary> + </runway_exit_speed> + </landing> + </general> + <mode description="Program mode"> + <mission_methods> + <design_mission_switch description="Switch to set a study or design mission ('true': design mission, 'false': study mission)"> + <value>true</value> + </design_mission_switch> + <center_of_gravity_method description="Selector to shift the center of gravity ('mode_0': Off, 'mode_1': half-sophisticated with howe for lifting surface tank, 'mode_2': sophisticated method for center of gravity (only payload and fuel) calculation)"> + <value>mode_0</value> + </center_of_gravity_method> + </mission_methods> + <rate_of_climb_switch description="Switch THAT ONLY AFFECTS THE REQUIREMENTS MISSION: Calculate an optimum for the rate of climb ('true': calculate optimum, 'false': skip)"> + <value>false</value> + </rate_of_climb_switch> + <requirement_check description="Settings for the requirement check"> + <enable description="Switch to check the requirements 'time to climb' and 'flight levels' ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <force_requirement_check description="Switch to force this check ('true': On, 'false': Off)"> + <value>true</value> + </force_requirement_check> + <auto_climb_ratings_for_time_to_climb description="Switch to use automated climb ratings for the time to climb (TTC) ('true': On, 'false': Off)"> + <value>true</value> + </auto_climb_ratings_for_time_to_climb> + </requirement_check> + <calculate_emissions_parameters description="Switch if input for detailed emission calculation shall be generated ('true': On, 'false': Off)"> + <value>true</value> + </calculate_emissions_parameters> + <calculate_noise_parameters description="Switch if input for noise calculation shall be generated ('true': On, 'false': Off)"> + <value>true</value> + </calculate_noise_parameters> + </mode> + <precision description="Specify the calculation accuracy"> + <acceleration_increment description="Step size regarding acceleration or deceleration"> + <value>0.5</value> + <unit>m/s</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>340</upper_boundary> + </acceleration_increment> + <mach_acceleration_increment description="Step size regarding acceleration or deceleration as a Mach number"> + <value>0.005</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </mach_acceleration_increment> + <altitude_increment description="Step distance for climb or descent"> + <value>5.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </altitude_increment> + <way_increment description="Step distance in x-direction"> + <value>1000.</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </way_increment> + <specific_air_range_check_increment description="Relative step distance in x-direction for automatic Flight level change check"> + <value>0.01</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </specific_air_range_check_increment> + </precision> + </program_settings> +</module_configuration_file> diff --git a/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf.xml b/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf.xml new file mode 100644 index 0000000..0be5c3a --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="propulsionDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR02-converted.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>/home/obi/TUM_Work/60_UNICADO/Playground/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_0</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>propulsion_design_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>propulsion_design.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="Settings specific to engineSizing."> + <method description="Choose the implementation method of each design domain."> + <engine_designer description="Choose the engine designer: Empirical, Rubber, GasTurb"> + <value>Rubber</value> + </engine_designer> + <nacelle_designer description="Choose the nacelle designer: Default"> + <value>Default</value> + </nacelle_designer> + <pylon_designer description="Choose the pylon designer: Default"> + <value>Default</value> + </pylon_designer> + <propulsion_integrator description="Choose the propulsion integrator: Default"> + <value>Default</value> + </propulsion_integrator> + <mass_analyzer description="Choose the mass analyzer: Default"> + <value>Default</value> + </mass_analyzer> + </method> + <path_engine_database description="The path to the database with existing engine decks."> + <value>/home/obi/TUM_Work/60_UNICADO/Repositories/rUNICADO/engines/</value> + </path_engine_database> + <technology_factors description="Improve or decrease the performance of every engine by this factor."> + <engine_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </engine_mass> + <nacelle_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </nacelle_mass> + <pylon_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </pylon_mass> + <engine_efficiency> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </engine_efficiency> + </technology_factors> + <propulsion ID="Default" description="Define defaults for the clean sheet design. You can add other engines with different ID to override these setting for the propulsion with this ID."> + <engine description="Detailed information of engine design"> + <Empirical description="Settings for empirical engine designer"> + <BPR> + <value></value> + </BPR> + </Empirical> + <Rubber description="Settings for rubber engine designer"> + <engine_model><value>V2527-A5</value></engine_model> + </Rubber> + <GasTurb description="Settings for gasTurb interface engine designer"> + </GasTurb> + </engine> + <nacelle description="Detailed information of nacelle geometry"> + <profile description="Section shape of the nacelle."> + <value>nacelle.dat</value> + </profile> + <duct_type description="Short or long ducted nacelle"> + <value>short</value> + </duct_type> + </nacelle> + <pylon description="Detailed information of pylon geometry"> + <profile description="Section shape of the pylon."> + <value>pylon.dat</value> + </profile> + </pylon> + <integration description="Detailed information of propulsion integraton"> + </integration> + </propulsion> + </program_settings> +</module_configuration_file> diff --git a/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf_default.xml b/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf_default.xml new file mode 100644 index 0000000..0be5c3a --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/propulsionDesign_conf_default.xml @@ -0,0 +1,129 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="propulsionDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>CSR02-converted.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>/home/obi/TUM_Work/60_UNICADO/Playground/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_0</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>propulsion_design_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>propulsion_design.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="Settings specific to engineSizing."> + <method description="Choose the implementation method of each design domain."> + <engine_designer description="Choose the engine designer: Empirical, Rubber, GasTurb"> + <value>Rubber</value> + </engine_designer> + <nacelle_designer description="Choose the nacelle designer: Default"> + <value>Default</value> + </nacelle_designer> + <pylon_designer description="Choose the pylon designer: Default"> + <value>Default</value> + </pylon_designer> + <propulsion_integrator description="Choose the propulsion integrator: Default"> + <value>Default</value> + </propulsion_integrator> + <mass_analyzer description="Choose the mass analyzer: Default"> + <value>Default</value> + </mass_analyzer> + </method> + <path_engine_database description="The path to the database with existing engine decks."> + <value>/home/obi/TUM_Work/60_UNICADO/Repositories/rUNICADO/engines/</value> + </path_engine_database> + <technology_factors description="Improve or decrease the performance of every engine by this factor."> + <engine_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </engine_mass> + <nacelle_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </nacelle_mass> + <pylon_mass> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </pylon_mass> + <engine_efficiency> + <value>1.0</value> + <unit>1</unit> + <upper_boundary>+Inf</upper_boundary> + <lower_boundary>0.0</lower_boundary> + </engine_efficiency> + </technology_factors> + <propulsion ID="Default" description="Define defaults for the clean sheet design. You can add other engines with different ID to override these setting for the propulsion with this ID."> + <engine description="Detailed information of engine design"> + <Empirical description="Settings for empirical engine designer"> + <BPR> + <value></value> + </BPR> + </Empirical> + <Rubber description="Settings for rubber engine designer"> + <engine_model><value>V2527-A5</value></engine_model> + </Rubber> + <GasTurb description="Settings for gasTurb interface engine designer"> + </GasTurb> + </engine> + <nacelle description="Detailed information of nacelle geometry"> + <profile description="Section shape of the nacelle."> + <value>nacelle.dat</value> + </profile> + <duct_type description="Short or long ducted nacelle"> + <value>short</value> + </duct_type> + </nacelle> + <pylon description="Detailed information of pylon geometry"> + <profile description="Section shape of the pylon."> + <value>pylon.dat</value> + </profile> + </pylon> + <integration description="Detailed information of propulsion integraton"> + </integration> + </propulsion> + </program_settings> +</module_configuration_file> diff --git a/UnicadoGUI/Backend/xml_configs/systemsDesign_conf.xml b/UnicadoGUI/Backend/xml_configs/systemsDesign_conf.xml new file mode 100644 index 0000000..8664a81 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/systemsDesign_conf.xml @@ -0,0 +1,2437 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="systemsDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>writing_test.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>X:/UNICADO/AircraftReferences/CSR/CSR-02/cleanSheetDesign/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>1</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings> + <modes description="mode selection, only STANDARD available currently"> + <value>STANDARD</value> + <default>STANDARD</default> + </modes> + <design_case description="Switch for system sizing. 1: Sizing, 0: ONLY determination of a load profile for a specific mission"> + <value>1</value> + <default>1</default> + </design_case> + <offtakes_for_requirement_mission description="Determination of Offtakes for Requirement Mission"> + <value>0</value> + <default>0</default> + </offtakes_for_requirement_mission> + <scaling_factors description="Variable scaling factors to change the calculated masses"> + <systems description="Systems: 1 = full calculated weight"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </systems> + <furnishings description="Furnishings: 1 = on; 0 = off"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </furnishings> + <operator_items description="OperatorItems: 1 = full calculated weight"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </operator_items> + </scaling_factors> + <tex_report_without_masses description="1: TeX report only with approvals, since mass breakdown comes from massEstimation"> + <value>1</value> + <default>1</default> + </tex_report_without_masses> + <control_device_warning description="Warning is issued if no suitable method is available for ControlDevice."> + <value>1</value> + <default>1</default> + </control_device_warning> + <aircraft_systems> + <energy_sinks> + <number_of_sinks description="Number of energy sinks"> + <value>9</value> + <default>20</default> + </number_of_sinks> + <system ID="0"> + <system_description description="Type of furnishing system"> + <value>conventionalFurnishing</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="1"> + <system_description description="Type of fuel system"> + <value>conventionalFuel</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="2"> + <system_description description="Type of system ice and rain protection system (conventional or electrical"> + <value>conventionalIceRainProtection</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="3"> + <system_description description="Type of lighting system"> + <value>conventionalLighting</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="4"> + <system_description description="Type of fire protection system"> + <value>conventionalFireProtection</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="5"> + <system_description description="Type of oxygen system"> + <value>conventionalOxygenSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="6"> + <system_description description="Type of gear system"> + <value>conventionalGear</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="7"> + <system_description description="Type of flight control system"> + <value>conventionalFlightControl</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="8"> + <system_description description="remaining consumer system"> + <value>remainingConsumers</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + </energy_sinks> + <environmental_control_system> + <system_description Unit="-" description="Type of environmental control system (ECS)"> + <value>conventionalECS</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </environmental_control_system> + <energy_sources> + <number_of_sources description="Number of energy sources"> + <value>2</value> + <default>1</default> + </number_of_sources> + <system ID="0"> + <system_description description="Type of propulsion system"> + <value>conventionalPropulsion</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + <system ID="1"> + <system_description description="Type of auxiliary power unit (APU) system (conventionalAPU or fuelCellAPU)"> + <value>conventionalAPU</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + <system ID="2"> + <system_description description="Fuel cell"> + <value>fuelCell</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + </energy_sources> + <energy_conductors> + <number_of_conductors description="Number of energy conductor systems"> + <value>3</value> + <default>3</default> + </number_of_conductors> + <system ID="0"> + <system_description description="Type of system"> + <value>BleedAirSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="1"> + <system_description description="Type of system"> + <value>HydraulicSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="2"> + <system_description description="Type of system"> + <value>ElectricSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + </energy_conductors> + <virtual_systems> + <number_of_virtual_systems description="Number of energy systems"> + <value>0</value> + <default></default> + </number_of_virtual_systems> + <system ID="0"> + <system_description description="Type of virtual system"> + <value>virtualSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <mass description="mass of the system"> + <value>5000.0</value> + <unit>kg</unit> + <default>0.0</default> + </mass> + <center_of_gravity description="position of mass item to global point of reference"> + <x description="Position of reference in x-direction"> + <value>0</value> + <unit>m</unit> + </x> + <y description="Position of reference in y-direction"> + <value>0</value> + <unit>m</unit> + </y> + <z description="Position of reference in z-direction"> + <value>0</value> + <unit>m</unit> + </z> + </center_of_gravity> + <power_demand> + <departure> + <bleed_air description="Bleed air requirement during departure"> + <value>3.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>10000.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>15000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </departure> + <cruise> + <bleed_air description="Bleed air requirement during departure"> + <value>0.5</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>20000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </cruise> + <approach> + <bleed_air description="Bleed air requirement during departure"> + <value>3.5</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>7500.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>18000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </approach> + </power_demand> + </system> + <system ID="0"> + <system_description description="Type of system"> + <value>virtualSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <mass description="mass of the system"> + <value>1000.0</value> + <unit>kg</unit> + <default>0.0</default> + </mass> + <center_of_gravity description="position of mass item to global point of reference"> + <x description="Position of reference in x-direction"> + <value>0</value> + <unit>m</unit> + </x> + <y description="Position of reference in y-direction"> + <value>0</value> + <unit>m</unit> + </y> + <z description="Position of reference in z-direction"> + <value>0</value> + <unit>m</unit> + </z> + </center_of_gravity> + <power_demand> + <departure> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </departure> + <cruise> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </cruise> + <approach> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </approach> + </power_demand> + </system> + </virtual_systems> + </aircraft_systems> + <systems_constants> + <environmental_control_system> + <airflow_per_pax description="Constant air mass flow per passenger"> + <value>0.00567</value> + <unit>kg/S</unit> + <default>0.00567</default> + </airflow_per_pax> + <recirculation description="Percentage of cabin air that is reused (0.0 - 1.0)"> + <value>0.40</value> + <unit>-</unit> + <default>0.40</default> + </recirculation> + <heat_convection description="Heat convection over aircraft skin based on Airbus air conditioning system design"> + <value>-0.56</value> + <unit>W/(m^2*K)</unit> + <default>-0.56</default> + </heat_convection> + <cabin_temperature description="Cabin temperature"> + <value>24</value> + <unit>C</unit> + <default>24</default> + </cabin_temperature> + <heat_sun description="specific heat flow of the sun"> + <value>1300</value> + <unit>W/m2</unit> + <default>1300</default> + </heat_sun> + <window_area description="Window area"> + <value>0.07</value> + <unit>m2</unit> + <default>0.07</default> + </window_area> + <heat_per_pax description="Heat emission per passenger"> + <value>75</value> + <unit>W</unit> + <default>75</default> + </heat_per_pax> + <heat_per_light_length description="Heat emission per light specific cabin length"> + <value>40</value> + <unit>W/m</unit> + <default>40</default> + </heat_per_light_length> + <efficiency_factor description="Efficiency of the ACP"> + <value>0.7</value> + <unit>-</unit> + <default>0.7</default> + </efficiency_factor> + <heat_capacity_air description="Heat capacity of air"> + <value>1005.0</value> + <unit>J/(kg*K)</unit> + <default>1005.0</default> + </heat_capacity_air> + <off_on_take_off description="Switch: Switch off ACP during launch (Airbus Getting Grips on Fuel Savings)"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </off_on_take_off> + <eco_mode description="ECO Mode switch: 25% reduction in bleed air withdrawal (Airbus Getting Grips on Fuel Savings)"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </eco_mode> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </environmental_control_system> + <furnishing> + <galley_load_fraction_takeoff description="Workload relative to design Power consumption during Climb, see DA Buente p. 76"> + <value>0.2</value> + <unit>-</unit> + <default>0.2</default> + </galley_load_fraction_takeoff> + <galley_load_fraction_cruise description="Workload relative to design Power consumption during cruise, see DA Buente p. 76"> + <value>0.6</value> + <unit>-</unit> + <default>0.7</default> + </galley_load_fraction_cruise> + <galley_load_fraction_descent description="Workload relative to design Power consumption during Descent, see DA Buente p. 76"> + <value>0.2</value> + <unit>-</unit> + <default>0.2</default> + </galley_load_fraction_descent> + <non_personal_ife_power description="Basic power consumption of non personnel IFE system per PAX"> + <value>1.25</value> + <unit>W</unit> + <default>1.25</default> + </non_personal_ife_power> + <power_personal_ife description="Power consumption of the personnel IFE system per PAX"> + <value>50</value> + <unit>W</unit> + <default>50</default> + </power_personal_ife> + <personal_ife_load_fraction_climb description="Workload relative to design Power consumption during Climb"> + <value>0.58</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_climb> + <personal_ife_load_fraction_cruise description="Workload relative to design Power consumption during cruise"> + <value>1.0</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_cruise> + <personal_ife_load_fraction_descent description="Workload relative to design Power consumption during Descent"> + <value>0.50</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_descent> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + <location_of_galley description="CoG-location of all galleys: 0: At wing_midCenterline, 1: Behind the cockpit"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </location_of_galley> + </furnishing> + <ice_rain_protection> + <switch_off_wing_anti_icing description="Switch for operation of wing anti icing"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </switch_off_wing_anti_icing> + <top_operating_altitude description="Flight altitude up to which the wings are de-iced"> + <value>3658</value> + <unit>m</unit> + <default>3658</default> + </top_operating_altitude> + <engine_anti_ice description="Hot air anti-icing per engine nacelle"> + <value>0.055</value> + <unit>kg/s</unit> + <default>0.055</default> + </engine_anti_ice> + <elec_power_departure description="Electric consumption during departure, see DA Buente p. 70"> + <value>14026.9</value> + <unit>W</unit> + <default>14026.9</default> + </elec_power_departure> + <elec_power_cruise description="Electric consumption during cruise, see DA Buente p. 70"> + <value>13070.9</value> + <unit>W</unit> + <default>13070.9</default> + </elec_power_cruise> + <elec_power_approach description="Electric consumption during approach, see DA Buente p. 70"> + <value>14026.9</value> + <unit>W</unit> + <default>14026.9</default> + </elec_power_approach> + <elec_power_land description="Electric consumption during Landing, see DA Buente p. 70"> + <value>7192.9</value> + <unit>W</unit> + <default>7192.9</default> + </elec_power_land> + <skin_thickness description="Thickness of the wing skin"> + <value>0.01</value> + <unit>m</unit> + <default>0.01</default> + </skin_thickness> + <rel_span_anti_icing_start description="Relative half span width at the start of de-icing. If DEFAULT, rel. pos of first LE device after kink (with 5% safety margin) is used."> + <value>0.4</value> + <unit>-</unit> + </rel_span_anti_icing_start> + <heat_conductivity_wing description="Thermal conductivity of the wing skin, e.g. aluminum"> + <value>235.0</value> + <unit>W/mK</unit> + <default>235.0</default> + </heat_conductivity_wing> + <drop_diameter description="Water drop diameter, relevant between 15 and 40, default 20 microns (CS-25 Book 1 Appendix C)"> + <value>20</value> + <unit>micro meter</unit> + <default>20</default> + </drop_diameter> + <efficiency_factor_electro_thermic_anti_icing description="Efficiency for electro-thermal de-icing"> + <value>0.8</value> + <unit>-</unit> + <default>0.8</default> + </efficiency_factor_electro_thermic_anti_icing> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + <percentage_of_OME description="Mass of ATA30 is percentage of operating mass empty (OME)"> + <value>0.001</value> + <unit>-</unit> + </percentage_of_OME> + </ice_rain_protection> + <lights> + <navigation_light_power description="Navigation Light (red, green, white tail = 6*50) power consumption, see LTH A320 (not LED)"> + <value>300</value> + <unit>W</unit> + <default>300</default> + </navigation_light_power> + <rotating_beacon_light_power description="Rotating Beacon light power consumption, no ref"> + <value>400</value> + <unit>W</unit> + <default>400</default> + </rotating_beacon_light_power> + <wing_light_power description="Wing light power consumption, DA Steinke"> + <value>500</value> + <unit>W</unit> + <default>400</default> + </wing_light_power> + <rto_light_power description="Runway turn-off light power consumption, see LTH A320 (not LED)"> + <value>150</value> + <unit>W</unit> + <default>150</default> + </rto_light_power> + <taxi_light_power description="Taxi light power consumption, DA Steinke"> + <value>500</value> + <unit>W</unit> + <default>500</default> + </taxi_light_power> + <landing_light_power description="Landing Light power consumption, see Honeywell A320 (not LED)"> + <value>1200</value> + <unit>W</unit> + <default>1200</default> + </landing_light_power> + <logo_light_power description="Landing Light power consumption, see Honeywell A320 (not LED)"> + <value>200</value> + <unit>W</unit> + <default>200</default> + </logo_light_power> + <strobe_light_power description="Strobes Light power consumption, no ref"> + <value>100</value> + <unit>W</unit> + <default>100</default> + </strobe_light_power> + <specific_emergency_light_power description="Emergency light power consumption specific to cabin volume, see DA Buente p. 73"> + <value>1.46</value> + <unit>W/m³</unit> + <default>1.46</default> + </specific_emergency_light_power> + <specific_cabin_light_power description="Cabin light power consumption specific to cabin volume, see DA Buente p. 73"> + <value>18.04</value> + <unit>W/m³</unit> + <default>18.04</default> + </specific_cabin_light_power> + <flight_deck_light_power description="Flight Deck light power consumption, see DA Buente p. 73"> + <value>904.4</value> + <unit>W</unit> + <default>904.4</default> + </flight_deck_light_power> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </lights> + <gear> + <efficiency_factor description="Landing gear efficiency"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor> + <retraction_time description="Time to retract the landing gear"> + <value>10.0</value> + <unit>s</unit> + <default>10.0</default> + </retraction_time> + <extension_time description="Time to extend the landing gear"> + <value>10.0</value> + <unit>s</unit> + <default>10.0</default> + </extension_time> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </gear> + <flight_controls> + <calculate_mission_loads description="Switch for the detailed calculation of the mission loads. Otherwise average values are calculated"> + <value>1</value> + <default>1</default> + </calculate_mission_loads> + <electrical_fc_system description="Switch for electrical flight control system"> + <value>1</value> + <default>1</default> + </electrical_fc_system> + <common_installation_weight_factor description="Percentage of flight control system for common installation weight"> + <value>0.25</value> + <default>0.25</default> + </common_installation_weight_factor> + <default_actuator description="Actuator description for automatic flight control architecture"> + <power_source description="energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + <default>Hydraulic</default> + </type> + <source_ID description="ID of the energy source" Default="1"> + <value>1</value> + <default>1</default> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in active operation (due to rudder deflections)"> + <value>0.</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </default_actuator> + <ailerons> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit></unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_control_surfaces> + <ailerons ID="0" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for Ailerons 2 actuators per control surface) (active/damping mode)"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + <default></default> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </ailerons> + </manual_actuator_architecture> + </ailerons> + <rudders> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>3</value> + <unit></unit> + <default>3</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>60</value> + <unit>deg/s</unit> + <default>60</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_control_surfaces> + <rudder ID="0" description="Control surface parameters"> + <deflection_speed description="deflection speed"> + <value>60</value> + <unit>deg/s</unit> + <default>60</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for Rudder 3 actuators per control surface (all active))"> + <number_of_actuators description="Number of actuator layouts"> + <value>3</value> + <unit>-</unit> + <default>3</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="2" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="3" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>1.</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="4" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>1.</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </rudder> + </manual_actuator_architecture> + </rudders> + <elevators> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <default>1</default> + </number_of_control_surfaces> + <elevator ID="0" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for elevator 2 actuators per control surface (one active, one damping))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </elevator> + <elevator ID="1" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for elevator 2 actuators per control surface (one active, one damping))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </elevator> + </manual_actuator_architecture> + </elevators> + <spoilers> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>10</value> + <default>1</default> + </number_of_control_surfaces> + <spoiler ID="0" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="1" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="2" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="3" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="4" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="5" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="6" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="7" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="8" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="9" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + </manual_actuator_architecture> + </spoilers> + <trimmable_horizontal_stabilizer> + <number_of_trimmable_horizontal_stabilizers description="Number of all trimmable horizontal stabilizers (thsa)"> + <value>1</value> + <default>1</default> + </number_of_trimmable_horizontal_stabilizers> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.5</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>0.5</value> + <unit>deg/s</unit> + <default>0.5</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <default>1</default> + </number_of_control_surfaces> + <thsa ID="0" description="Control surface parameters"> + <deflection_speed description="deflection speed"> + <value>0.5</value> + <unit>deg/s</unit> + <default>0.5</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for THSA 2 actuators (both active))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </thsa> + </manual_actuator_architecture> + </trimmable_horizontal_stabilizer> + <high_lift_system> + <trailing_edge> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>1.0</value> + <unit>-</unit> + <default>2.0</default> + </electric_flight_control_system_weight_factor> + <number_of_devices description="Number of trailing edge systems"> + <value>2</value> + <unit>-</unit> + <default>1</default> + </number_of_devices> + <trailing_edge_device ID="0"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </trailing_edge_device> + <trailing_edge_device ID="1"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </trailing_edge_device> + </trailing_edge> + <leading_edge> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </electric_flight_control_system_weight_factor> + <number_of_devices description="Number of front edge systems"> + <value>0</value> + <unit>-</unit> + <default>1</default> + </number_of_devices> + <leading_edge_device ID="0"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source" default="-"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)" default="-"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source" default="-"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)" default="-"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <unit></unit> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </leading_edge_device> + </leading_edge> + <duration_high_lift_deployment description="Extension time of the high-lift system"> + <value>22.0</value> + <unit>s</unit> + <default>22.0</default> + </duration_high_lift_deployment> + </high_lift_system> + </flight_controls> + <bleed_air> + <temperature_bleed_air description="Temperature of Bleed Air during extraction"> + <value>200</value> + <unit>C</unit> + <default>200</default> + </temperature_bleed_air> + <efficiency_factor_bleed_air_system description="Efficiency of the Bleed Air system, e.g. leakage losses"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_bleed_air_system> + <specific_ducting_mass description="Specific weight of Bleed Air pipes"> + <value>4.5</value> + <unit>kg/m</unit> + <default>4.5</default> + </specific_ducting_mass> + </bleed_air> + <hydraulic_system> + <pressure description="Nominal pressure of the hydraulic system"> + <value>20684000</value> + <unit>Pa</unit> + <default>20684000</default> + </pressure> + <efficiency_factor_hydraulic_system description="Efficiency of the hydraulic system, e.g. leakage losses"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_hydraulic_system> + <rel_max_power description="Ratio of maximum permanent power and maximum required power of all pumps"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </rel_max_power> + <specific_ducting_mass description="Specific weight of hydraulic lines"> + <value>2.5</value> + <unit>kg/m</unit> + <default>2.5</default> + </specific_ducting_mass> + <specific_fluid_mass description="Specific weight of hydraulic fluid"> + <value>0.75</value> + <unit>kg/m</unit> + <default>0.75</default> + </specific_fluid_mass> + <specific_pump_mass description="Specific weight of hydraulic pumps"> + <value>1250</value> + <unit>kg/W</unit> + <default>1250</default> + </specific_pump_mass> + <hydraulic_circuits description="Detailed description of the hydraulic circuits"> + <number_of_circuits description="Number of hydraulic circuits"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_circuits> + <hydraulic_circuit ID="0" description="Hydraulic circuit description"> + <compartment_reference_point description="Reference point of the Hydraulic Compartment (distributor seat, reservoir, etc.)"> + <x description="X-Distance to nose in relation to fuselage length"> + <value>0.4</value> + <unit>-</unit> + <default>0.4</default> + </x> + <y description="Y-Distance to symmetry line in relation to half span"> + <value>0.0</value> + <unit>-</unit> + <default>0.0</default> + </y> + <z description="Z-distance to symmetry line in relation to fuselage height"> + <value>0.0</value> + <unit>-</unit> + <default>0.0</default> + </z> + </compartment_reference_point> + <components description="Components within the circuit"> + <pumps description="Pumps"> + <number_of_pumps description="Number of pumps"> + <value>2</value> + <unit>-</unit> + <default>1</default> + </number_of_pumps> + <pump ID="0" description="Pump description"> + <name description="Name of the pump"> + <value>EDP</value> + </name> + <type description="Type of pump (Currently 3 types: Electric, EngineDriven, RAT)"> + <value>EngineDriven</value> + <default>EngineDriven</default> + </type> + <efficiency description="Pump efficiency"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <operation_factor description="Percentage of total pump power in normal operation (value must be between"> + <value>0.8</value> + <unit></unit> + <default>1</default> + </operation_factor> + <power_source description="Energy source for the pump"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Engine</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </pump> + <pump ID="1" description="Pump description"> + <name description="Name of the pump"> + <value>EMP</value> + </name> + <type description="Type of pump (Currently 3 types: Electric, EngineDriven, RAT)"> + <value>Electric</value> + <default>EngineDriven</default> + </type> + <efficiency description="Pump efficiency"> + <value>0.7</value> + <unit>-</unit> + <default>0.95</default> + </efficiency> + <operation_factor description="Percentage of total pump power in normal operation (value must be between 0 and 1. 0=off, 1=total)"> + <value>0.2</value> + <unit>-</unit> + <default>1</default> + </operation_factor> + <power_source description="Energy source for the pump"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </pump> + </pumps> + <not_specified description="Description of the remaining components in the hydraulic circuit (without lines... are calculated internally!)"> + <mass_factor description="Mass fraction of remaining components in the hydraulic circuit"> + <value>0.</value> + <unit>-</unit> + <default>0.</default> + </mass_factor> + </not_specified> + </components> + </hydraulic_circuit> + </hydraulic_circuits> + <power_transfer_units description="System description of the Power Transfer Units"> + <number_of_power_transfer_units description="Number of PTUs"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </number_of_power_transfer_units> + <power_transfer_unit ID="0" description="System description of the PTU"> + <power_transfer_unit_connection ID="0" description="1. Circuit to which the PTU is connected"> + <value>-</value> + </power_transfer_unit_connection> + <power_transfer_unit_connection ID="1" description="2. Circuit to which the PTU is connected"> + <value>-</value> + </power_transfer_unit_connection> + </power_transfer_unit> + </power_transfer_units> + </hydraulic_system> + <electric_system> + <efficiency_factor_electric_system description="Efficiency of the electrical system, e.g. resistance of the cables"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </efficiency_factor_electric_system> + <rel_max_power description="Ratio of maximum permanent power and maximum required power of all generators"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </rel_max_power> + <specific_cable_mass description="Specific weight of electrical wiring"> + <value>6.5</value> + <unit>kg/m</unit> + <default>6.5</default> + </specific_cable_mass> + <electric_circuits description="Detailed description of the electrical circuits"> + <number_of_circuits description="Number of electric circuits"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_circuits> + <electric_circuit ID="0" description="System description electrical circuit"> + <components description="Components within the cycle"> + <generators description="Generators"> + <number_of_generators description="Number of generators"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_generators> + <generator ID="0" description="System description of the generator"> + <name description="Name of generator"> + <value>IDG1</value> + </name> + <type description="Type of generators"> + <value>IDG</value> + </type> + <generator_efficiency description="Efficiency of the generator including accessory gear box"> + <value>0.665</value> + <unit>-</unit> + <default>0.665</default> + </generator_efficiency> + <operation_factor description="Share of total power in normal operation (value must be between 0 and 1. 0=off, 1=total)"> + <value>1</value> + <default>1</default> + </operation_factor> + <power_source description="Energy source of generator"> + <type description="Type of energy source (hydraulic, electric, engine, APU)"> + <value>Engine</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </generator> + </generators> + <not_specified description="System description of the remaining components in the electrical circuit (without cable/plug... are calculated internally!)"> + <mass_factor description="Mass fraction of the remaining components"> + <value>0.</value> + <unit>-</unit> + <default>0.</default> + </mass_factor> + </not_specified> + </components> + </electric_circuit> + </electric_circuits> + </electric_system> + <propulsion_system> + <percentage_bleed_air description="Percentage of bleed air generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_hydraulic_power> + <efficiency_factor_bleed_air description="Efficiency of Bleed Air withdrawal"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_bleed_air> + </propulsion_system> + <auxiliary_power_unit> + <position_of_auxiliary_power_unit_in_fuselage_length description="Relative position of the APU in reference to the total fuselage length"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </position_of_auxiliary_power_unit_in_fuselage_length> + <percentage_bleed_air description="Percentage of Bleed Air generated by the APU"> + <value>0.00</value> + <unit>-</unit> + <default>0.00</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy generated by the APU"> + <value>0.00</value> + <unit>-</unit> + <default>0.00</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy generated by the APU"> + <value>0.0</value> + <unit>-</unit> + <default>0.00</default> + </percentage_hydraulic_power> + <efficiency_factor_bleed_air description="Efficiency of Bleed Air withdrawal"> + <value>0.90</value> + <unit>-</unit> + <default>0.90</default> + </efficiency_factor_bleed_air> + <installation_factor description="Installation factor for attached parts such as fire protection, noise protection, etc."> + <value>1.5</value> + <unit>-</unit> + <default>1.5</default> + </installation_factor> + <design_loads> + <percentage_bleed_air description="Percentage of Bleed Air for which the APU is designed"> + <value>0.30</value> + <unit>-</unit> + <default>0.30</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy for which the APU is designed"> + <value>0.50</value> + <unit>-</unit> + <default>0.50</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy for which the APU is designed"> + <value>0.50</value> + <unit>-</unit> + <default>0.50</default> + </percentage_hydraulic_power> + </design_loads> + </auxiliary_power_unit> + <avionics description="Components grouped inside ATAXX"> + <location_of_aviationics_bay description="0: Wing root, 1: Nose, 2: Behind cockpit"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </location_of_aviationics_bay> + </avionics> + <remaining_consumers> + <power description="Additional percentages of bleed, electric, and hydraulic power for ATA-XX"> + <percentage_bleed_air description="Percentage of unrecorded performances"> + <value>0.00</value> + <unit>-</unit> + <default>0.0</default> + </percentage_bleed_air> + <percentage_electric description="Percentage of unrecorded performances"> + <value>0.104</value> + <unit>-</unit> + <default>0.104</default> + </percentage_electric> + <percentage_hydraulic description="Percentage of unrecorded performances"> + <value>0.05</value> + <unit>-</unit> + <default>0.05</default> + </percentage_hydraulic> + </power> + <mass> + <scaling_factor description="Scaling of ATA-XX mass"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </scaling_factor> + <distribution description="Distribution of ATA-XX mass to single components"> + <percentage_instrumentation_of_ATAXX description="Percentage of instrumentation in ATA-XX"> + <value>0.08</value> + <unit>-</unit> + <default>0.08</default> + </percentage_instrumentation_of_ATAXX> + <percentage_auto_flight_of_ATAXX description="Percentage of AFS in ATA-XX"> + <value>0.13</value> + <unit>-</unit> + <default>0.13</default> + </percentage_auto_flight_of_ATAXX> + <percentage_navigation_of_ATAXX description="Percentage of the navigation system in ATA-XX"> + <value>0.53</value> + <unit>-</unit> + <default>0.53</default> + </percentage_navigation_of_ATAXX> + <percentage_communication_of_ATAXX description="Percentage of the communication system in ATA-XX"> + <value>0.26</value> + <unit>-</unit> + <default>0.26</default> + </percentage_communication_of_ATAXX> + </distribution> + </mass> + </remaining_consumers> + </systems_constants> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/systemsDesign_conf_default.xml b/UnicadoGUI/Backend/xml_configs/systemsDesign_conf_default.xml new file mode 100644 index 0000000..fd1f7b1 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/systemsDesign_conf_default.xml @@ -0,0 +1,2437 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="systemsDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>writing_test.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>X:/UNICADO/AircraftReferences/CSR/CSR-02/cleanSheetDesign/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>1</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_3</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>TOOLNAME.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/inkscape/</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>C:/Programs/UNICADOworkflow/gnuplot/</value> + </gnuplot_path> + </control_settings> + <program_settings> + <modes description="mode selection, only STANDARD available currently"> + <value>STANDARD</value> + <default>STANDARD</default> + </modes> + <design_case description="Switch for system sizing. 1: Sizing, 0: ONLY determination of a load profile for a specific mission"> + <value>1</value> + <default>1</default> + </design_case> + <offtakes_for_requirement_mission description="Determination of Offtakes for Requirement Mission"> + <value>0</value> + <default>0</default> + </offtakes_for_requirement_mission> + <scaling_factors description="Variable scaling factors to change the calculated masses"> + <systems description="Systems: 1 = full calculated weight"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </systems> + <furnishings description="Furnishings: 1 = on; 0 = off"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </furnishings> + <operator_items description="OperatorItems: 1 = full calculated weight"> + <value>1.0</value> + <unit>-</unit> + <default>1</default> + </operator_items> + </scaling_factors> + <tex_report_without_masses description="1: TeX report only with approvals, since mass breakdown comes from massEstimation"> + <value>1</value> + <default>1</default> + </tex_report_without_masses> + <control_device_warning description="Warning is issued if no suitable method is available for ControlDevice."> + <value>1</value> + <default>1</default> + </control_device_warning> + <aircraft_systems> + <energy_sinks> + <number_of_sinks description="Number of energy sinks"> + <value>9</value> + <default>20</default> + </number_of_sinks> + <system ID="0"> + <system_description description="Type of furnishing system"> + <value>conventionalFurnishing</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="1"> + <system_description description="Type of fuel system"> + <value>conventionalFuel</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="2"> + <system_description description="Type of system ice and rain protection system (conventional or electrical"> + <value>conventionalIceRainProtection</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="3"> + <system_description description="Type of lighting system"> + <value>conventionalLighting</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="4"> + <system_description description="Type of fire protection system"> + <value>conventionalFireProtection</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="5"> + <system_description description="Type of oxygen system"> + <value>conventionalOxygenSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="6"> + <system_description description="Type of gear system"> + <value>conventionalGear</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="7"> + <system_description description="Type of flight control system"> + <value>conventionalFlightControl</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="8"> + <system_description description="remaining consumer system"> + <value>remainingConsumers</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + </energy_sinks> + <environmental_control_system> + <system_description Unit="-" description="Type of environmental control system (ECS)"> + <value>conventionalECS</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </environmental_control_system> + <energy_sources> + <number_of_sources description="Number of energy sources"> + <value>2</value> + <default>1</default> + </number_of_sources> + <system ID="0"> + <system_description description="Type of propulsion system"> + <value>conventionalPropulsion</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + <system ID="1"> + <system_description description="Type of auxiliary power unit (APU) system (conventionalAPU or fuelCellAPU)"> + <value>conventionalAPU</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + <system ID="2"> + <system_description description="Fuel cell"> + <value>fuelCell</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <uses_fuel description="Switch whether the energy source uses fuel. 1:yes, 0:no fuel"> + <value>1</value> + <default>1</default> + </uses_fuel> + </system> + </energy_sources> + <energy_conductors> + <number_of_conductors description="Number of energy conductor systems"> + <value>3</value> + <default>3</default> + </number_of_conductors> + <system ID="0"> + <system_description description="Type of system"> + <value>BleedAirSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="1"> + <system_description description="Type of system"> + <value>HydraulicSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + <system ID="2"> + <system_description description="Type of system"> + <value>ElectricSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + </system> + </energy_conductors> + <virtual_systems> + <number_of_virtual_systems description="Number of energy systems"> + <value>0</value> + <default></default> + </number_of_virtual_systems> + <system ID="0"> + <system_description description="Type of virtual system"> + <value>virtualSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <mass description="mass of the system"> + <value>5000.0</value> + <unit>kg</unit> + <default>0.0</default> + </mass> + <center_of_gravity description="position of mass item to global point of reference"> + <x description="Position of reference in x-direction"> + <value>0</value> + <unit>m</unit> + </x> + <y description="Position of reference in y-direction"> + <value>0</value> + <unit>m</unit> + </y> + <z description="Position of reference in z-direction"> + <value>0</value> + <unit>m</unit> + </z> + </center_of_gravity> + <power_demand> + <departure> + <bleed_air description="Bleed air requirement during departure"> + <value>3.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>10000.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>15000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </departure> + <cruise> + <bleed_air description="Bleed air requirement during departure"> + <value>0.5</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>20000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </cruise> + <approach> + <bleed_air description="Bleed air requirement during departure"> + <value>3.5</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>7500.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>18000.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </approach> + </power_demand> + </system> + <system ID="0"> + <system_description description="Type of system"> + <value>virtualSystem</value> + </system_description> + <operating_switch description="Switch whether the system is operated 1: on, 0: off (the mass is also determined for a switched off system!)"> + <value>1</value> + <default>1</default> + </operating_switch> + <mass description="mass of the system"> + <value>1000.0</value> + <unit>kg</unit> + <default>0.0</default> + </mass> + <center_of_gravity description="position of mass item to global point of reference"> + <x description="Position of reference in x-direction"> + <value>0</value> + <unit>m</unit> + </x> + <y description="Position of reference in y-direction"> + <value>0</value> + <unit>m</unit> + </y> + <z description="Position of reference in z-direction"> + <value>0</value> + <unit>m</unit> + </z> + </center_of_gravity> + <power_demand> + <departure> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </departure> + <cruise> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </cruise> + <approach> + <bleed_air description="Bleed air requirement during departure"> + <value>0.0</value> + <unit>kg/s</unit> + <default>0.0</default> + </bleed_air> + <hydraulic description="Hydraulic requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </hydraulic> + <electric description="Electrical requirements during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </electric> + <heat_load description="Heat emission during departure"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </heat_load> + </approach> + </power_demand> + </system> + </virtual_systems> + </aircraft_systems> + <systems_constants> + <environmental_control_system> + <airflow_per_pax description="Constant air mass flow per passenger"> + <value>0.00567</value> + <unit>kg/S</unit> + <default>0.00567</default> + </airflow_per_pax> + <recirculation description="Percentage of cabin air that is reused (0.0 - 1.0)"> + <value>0.40</value> + <unit>-</unit> + <default>0.40</default> + </recirculation> + <heat_convection description="Heat convection over aircraft skin based on Airbus air conditioning system design"> + <value>-0.56</value> + <unit>W/(m^2*K)</unit> + <default>-0.56</default> + </heat_convection> + <cabin_temperature description="Cabin temperature"> + <value>24</value> + <unit>C</unit> + <default>24</default> + </cabin_temperature> + <heat_sun description="specific heat flow of the sun"> + <value>1300</value> + <unit>W/m2</unit> + <default>1300</default> + </heat_sun> + <window_area description="Window area"> + <value>0.07</value> + <unit>m2</unit> + <default>0.07</default> + </window_area> + <heat_per_pax description="Heat emission per passenger"> + <value>75</value> + <unit>W</unit> + <default>75</default> + </heat_per_pax> + <heat_per_light_length description="Heat emission per light specific cabin length"> + <value>40</value> + <unit>W/m</unit> + <default>40</default> + </heat_per_light_length> + <efficiency_factor description="Efficiency of the ACP"> + <value>0.7</value> + <unit>-</unit> + <default>0.7</default> + </efficiency_factor> + <heat_capacity_air description="Heat capacity of air"> + <value>1005.0</value> + <unit>J/(kg*K)</unit> + <default>1005.0</default> + </heat_capacity_air> + <off_on_take_off description="Switch: Switch off ACP during launch (Airbus Getting Grips on Fuel Savings)"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </off_on_take_off> + <eco_mode description="ECO Mode switch: 25% reduction in bleed air withdrawal (Airbus Getting Grips on Fuel Savings)"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </eco_mode> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </environmental_control_system> + <furnishing> + <galley_load_fraction_takeoff description="Workload relative to design Power consumption during Climb, see DA Buente p. 76"> + <value>0.2</value> + <unit>-</unit> + <default>0.2</default> + </galley_load_fraction_takeoff> + <galley_load_fraction_cruise description="Workload relative to design Power consumption during cruise, see DA Buente p. 76"> + <value>0.6</value> + <unit>-</unit> + <default>0.7</default> + </galley_load_fraction_cruise> + <galley_load_fraction_descent description="Workload relative to design Power consumption during Descent, see DA Buente p. 76"> + <value>0.2</value> + <unit>-</unit> + <default>0.2</default> + </galley_load_fraction_descent> + <non_personal_ife_power description="Basic power consumption of non personnel IFE system per PAX"> + <value>1.25</value> + <unit>W</unit> + <default>1.25</default> + </non_personal_ife_power> + <power_personal_ife description="Power consumption of the personnel IFE system per PAX"> + <value>50</value> + <unit>W</unit> + <default>50</default> + </power_personal_ife> + <personal_ife_load_fraction_climb description="Workload relative to design Power consumption during Climb"> + <value>0.58</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_climb> + <personal_ife_load_fraction_cruise description="Workload relative to design Power consumption during cruise"> + <value>1.0</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_cruise> + <personal_ife_load_fraction_descent description="Workload relative to design Power consumption during Descent"> + <value>0.50</value> + <unit>-</unit> + <default>0.58</default> + </personal_ife_load_fraction_descent> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + <location_of_galley description="CoG-location of all galleys: 0: At wing_midCenterline, 1: Behind the cockpit"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </location_of_galley> + </furnishing> + <ice_rain_protection> + <switch_off_wing_anti_icing description="Switch for operation of wing anti icing"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </switch_off_wing_anti_icing> + <top_operating_altitude description="Flight altitude up to which the wings are de-iced"> + <value>3658</value> + <unit>m</unit> + <default>3658</default> + </top_operating_altitude> + <engine_anti_ice description="Hot air anti-icing per engine nacelle"> + <value>0.055</value> + <unit>kg/s</unit> + <default>0.055</default> + </engine_anti_ice> + <elec_power_departure description="Electric consumption during departure, see DA Buente p. 70"> + <value>14026.9</value> + <unit>W</unit> + <default>14026.9</default> + </elec_power_departure> + <elec_power_cruise description="Electric consumption during cruise, see DA Buente p. 70"> + <value>13070.9</value> + <unit>W</unit> + <default>13070.9</default> + </elec_power_cruise> + <elec_power_approach description="Electric consumption during approach, see DA Buente p. 70"> + <value>14026.9</value> + <unit>W</unit> + <default>14026.9</default> + </elec_power_approach> + <elec_power_land description="Electric consumption during Landing, see DA Buente p. 70"> + <value>7192.9</value> + <unit>W</unit> + <default>7192.9</default> + </elec_power_land> + <skin_thickness description="Thickness of the wing skin"> + <value>0.01</value> + <unit>m</unit> + <default>0.01</default> + </skin_thickness> + <rel_span_anti_icing_start description="Relative half span width at the start of de-icing. If DEFAULT, rel. pos of first LE device after kink (with 5% safety margin) is used."> + <value>0.4</value> + <unit>-</unit> + </rel_span_anti_icing_start> + <heat_conductivity_wing description="Thermal conductivity of the wing skin, e.g. aluminum"> + <value>235.0</value> + <unit>W/mK</unit> + <default>235.0</default> + </heat_conductivity_wing> + <drop_diameter description="Water drop diameter, relevant between 15 and 40, default 20 microns (CS-25 Book 1 Appendix C)"> + <value>20</value> + <unit>micro meter</unit> + <default>20</default> + </drop_diameter> + <efficiency_factor_electro_thermic_anti_icing description="Efficiency for electro-thermal de-icing"> + <value>0.8</value> + <unit>-</unit> + <default>0.8</default> + </efficiency_factor_electro_thermic_anti_icing> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + <percentage_of_OME description="Mass of ATA30 is percentage of operating mass empty (OME)"> + <value>0.001</value> + <unit>-</unit> + </percentage_of_OME> + </ice_rain_protection> + <lights> + <navigation_light_power description="Navigation Light (red, green, white tail = 6*50) power consumption, see LTH A320 (not LED)"> + <value>300</value> + <unit>W</unit> + <default>300</default> + </navigation_light_power> + <rotating_beacon_light_power description="Rotating Beacon light power consumption, no ref"> + <value>400</value> + <unit>W</unit> + <default>400</default> + </rotating_beacon_light_power> + <wing_light_power description="Wing light power consumption, DA Steinke"> + <value>500</value> + <unit>W</unit> + <default>400</default> + </wing_light_power> + <rto_light_power description="Runway turn-off light power consumption, see LTH A320 (not LED)"> + <value>150</value> + <unit>W</unit> + <default>150</default> + </rto_light_power> + <taxi_light_power description="Taxi light power consumption, DA Steinke"> + <value>500</value> + <unit>W</unit> + <default>500</default> + </taxi_light_power> + <landing_light_power description="Landing Light power consumption, see Honeywell A320 (not LED)"> + <value>1200</value> + <unit>W</unit> + <default>1200</default> + </landing_light_power> + <logo_light_power description="Landing Light power consumption, see Honeywell A320 (not LED)"> + <value>200</value> + <unit>W</unit> + <default>200</default> + </logo_light_power> + <strobe_light_power description="Strobes Light power consumption, no ref"> + <value>100</value> + <unit>W</unit> + <default>100</default> + </strobe_light_power> + <specific_emergency_light_power description="Emergency light power consumption specific to cabin volume, see DA Buente p. 73"> + <value>1.46</value> + <unit>W/m³</unit> + <default>1.46</default> + </specific_emergency_light_power> + <specific_cabin_light_power description="Cabin light power consumption specific to cabin volume, see DA Buente p. 73"> + <value>18.04</value> + <unit>W/m³</unit> + <default>18.04</default> + </specific_cabin_light_power> + <flight_deck_light_power description="Flight Deck light power consumption, see DA Buente p. 73"> + <value>904.4</value> + <unit>W</unit> + <default>904.4</default> + </flight_deck_light_power> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </lights> + <gear> + <efficiency_factor description="Landing gear efficiency"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor> + <retraction_time description="Time to retract the landing gear"> + <value>10.0</value> + <unit>s</unit> + <default>10.0</default> + </retraction_time> + <extension_time description="Time to extend the landing gear"> + <value>10.0</value> + <unit>s</unit> + <default>10.0</default> + </extension_time> + <shaft_power_sources description="Sources for possible existing shaft power consumption"> + <number_of_power_sources description="Number of power sources"> + <value>1</value> + </number_of_power_sources> + <power_source ID="0" description="system description of the power source"> + <operation_factor description="Percentage of performance provided by this source"> + <value>1.0</value> + <unit>-</unit> + </operation_factor> + <type description="Type of power source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </shaft_power_sources> + </gear> + <flight_controls> + <calculate_mission_loads description="Switch for the detailed calculation of the mission loads. Otherwise average values are calculated"> + <value>1</value> + <default>1</default> + </calculate_mission_loads> + <electrical_fc_system description="Switch for electrical flight control system"> + <value>1</value> + <default>1</default> + </electrical_fc_system> + <common_installation_weight_factor description="Percentage of flight control system for common installation weight"> + <value>0.25</value> + <default>0.25</default> + </common_installation_weight_factor> + <default_actuator description="Actuator description for automatic flight control architecture"> + <power_source description="energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + <default>Hydraulic</default> + </type> + <source_ID description="ID of the energy source" Default="1"> + <value>1</value> + <default>1</default> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in active operation (due to rudder deflections)"> + <value>0.</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </default_actuator> + <ailerons> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit></unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_control_surfaces> + <ailerons ID="0" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for Ailerons 2 actuators per control surface) (active/damping mode)"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + <default></default> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </ailerons> + </manual_actuator_architecture> + </ailerons> + <rudders> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>3</value> + <unit></unit> + <default>3</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>60</value> + <unit>deg/s</unit> + <default>60</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_control_surfaces> + <rudder ID="0" description="Control surface parameters"> + <deflection_speed description="deflection speed"> + <value>60</value> + <unit>deg/s</unit> + <default>60</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for Rudder 3 actuators per control surface (all active))"> + <number_of_actuators description="Number of actuator layouts"> + <value>3</value> + <unit>-</unit> + <default>3</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="2" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="3" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>1.</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="4" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>1.</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </rudder> + </manual_actuator_architecture> + </rudders> + <elevators> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <default>1</default> + </number_of_control_surfaces> + <elevator ID="0" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for elevator 2 actuators per control surface (one active, one damping))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </elevator> + <elevator ID="1" description="Control surface parameters"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for elevator 2 actuators per control surface (one active, one damping))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>damping</value> + <default>damping</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </elevator> + </manual_actuator_architecture> + </elevators> + <spoilers> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.25</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>10</value> + <default>1</default> + </number_of_control_surfaces> + <spoiler ID="0" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="1" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="2" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="3" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="4" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="5" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="6" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="7" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="8" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + <spoiler ID="9" description="spoiler description"> + <side>right</side> + <deflection_speed description="deflection speed"> + <value>50</value> + <unit>deg/s</unit> + <default>50</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for spoiler 1 actuator per control surface)"> + <number_of_actuators description="Number of actuator layouts"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </spoiler> + </manual_actuator_architecture> + </spoilers> + <trimmable_horizontal_stabilizer> + <number_of_trimmable_horizontal_stabilizers description="Number of all trimmable horizontal stabilizers (thsa)"> + <value>1</value> + <default>1</default> + </number_of_trimmable_horizontal_stabilizers> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>0.5</value> + <unit></unit> + <default>0.5</default> + </electric_flight_control_system_weight_factor> + <default_actuator_architecture_switch description="Enables the default layout for the actuator architecture"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </default_actuator_architecture_switch> + <default_actuator_architecture description="Definition of the default actuator architecture"> + <number_of_actuators_per_control_surface description="Number of actuators per control surface"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators_per_control_surface> + <default_deflection_speed description="Deflection speed"> + <value>0.5</value> + <unit>deg/s</unit> + <default>0.5</default> + </default_deflection_speed> + </default_actuator_architecture> + <manual_actuator_architecture description="Definition of the manual actuator architecture"> + <number_of_control_surfaces description="Number of control surfaces to be initialized"> + <value>2</value> + <default>1</default> + </number_of_control_surfaces> + <thsa ID="0" description="Control surface parameters"> + <deflection_speed description="deflection speed"> + <value>0.5</value> + <unit>deg/s</unit> + <default>0.5</default> + </deflection_speed> + <actuator_layout description="Actuator layouts (standard for THSA 2 actuators (both active))"> + <number_of_actuators description="Number of actuator layouts"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_actuators> + <actuator ID="0" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + <actuator ID="1" description="Actuator description"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <efficiency description="Actuator efficiency in average operation"> + <value>0.85</value> + <unit>-</unit> + <default>1.</default> + </efficiency> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </actuator> + </actuator_layout> + </thsa> + </manual_actuator_architecture> + </trimmable_horizontal_stabilizer> + <high_lift_system> + <trailing_edge> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>1.0</value> + <unit>-</unit> + <default>2.0</default> + </electric_flight_control_system_weight_factor> + <number_of_devices description="Number of trailing edge systems"> + <value>2</value> + <unit>-</unit> + <default>1</default> + </number_of_devices> + <trailing_edge_device ID="0"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </trailing_edge_device> + <trailing_edge_device ID="1"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </trailing_edge_device> + </trailing_edge> + <leading_edge> + <electric_flight_control_system_weight_factor description="Weight factor for electrical Flight Control system"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </electric_flight_control_system_weight_factor> + <number_of_devices description="Number of front edge systems"> + <value>0</value> + <unit>-</unit> + <default>1</default> + </number_of_devices> + <leading_edge_device ID="0"> + <power_control_unit> + <number_of_power_control_unit_motors description="Number of PCU motors"> + <value>2</value> + <unit>-</unit> + <default>2</default> + </number_of_power_control_unit_motors> + <power_control_unit_motor ID="0"> + <power_source description="Energy source" default="-"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)" default="-"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </power_control_unit_motor> + <power_control_unit_motor ID="1"> + <power_source description="Energy source" default="-"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)" default="-"> + <value>Hydraulic</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + <operation_mode description="Activity of the actuator during normal operation (active, standby, damping)"> + <value>active</value> + <unit></unit> + <default>active</default> + </operation_mode> + <standby_power description="Average basic power in standby operation (e.g. due to leakage)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </standby_power> + <active_power description="Average basic power in Active operation (due to rudder deflections)"> + <value>0.0</value> + <unit>W</unit> + <default>0.0</default> + </active_power> + </power_control_unit_motor> + </power_control_unit> + </leading_edge_device> + </leading_edge> + <duration_high_lift_deployment description="Extension time of the high-lift system"> + <value>22.0</value> + <unit>s</unit> + <default>22.0</default> + </duration_high_lift_deployment> + </high_lift_system> + </flight_controls> + <bleed_air> + <temperature_bleed_air description="Temperature of Bleed Air during extraction"> + <value>200</value> + <unit>C</unit> + <default>200</default> + </temperature_bleed_air> + <efficiency_factor_bleed_air_system description="Efficiency of the Bleed Air system, e.g. leakage losses"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_bleed_air_system> + <specific_ducting_mass description="Specific weight of Bleed Air pipes"> + <value>4.5</value> + <unit>kg/m</unit> + <default>4.5</default> + </specific_ducting_mass> + </bleed_air> + <hydraulic_system> + <pressure description="Nominal pressure of the hydraulic system"> + <value>20684000</value> + <unit>Pa</unit> + <default>20684000</default> + </pressure> + <efficiency_factor_hydraulic_system description="Efficiency of the hydraulic system, e.g. leakage losses"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_hydraulic_system> + <rel_max_power description="Ratio of maximum permanent power and maximum required power of all pumps"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </rel_max_power> + <specific_ducting_mass description="Specific weight of hydraulic lines"> + <value>2.5</value> + <unit>kg/m</unit> + <default>2.5</default> + </specific_ducting_mass> + <specific_fluid_mass description="Specific weight of hydraulic fluid"> + <value>0.75</value> + <unit>kg/m</unit> + <default>0.75</default> + </specific_fluid_mass> + <specific_pump_mass description="Specific weight of hydraulic pumps"> + <value>1250</value> + <unit>kg/W</unit> + <default>1250</default> + </specific_pump_mass> + <hydraulic_circuits description="Detailed description of the hydraulic circuits"> + <number_of_circuits description="Number of hydraulic circuits"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_circuits> + <hydraulic_circuit ID="0" description="Hydraulic circuit description"> + <compartment_reference_point description="Reference point of the Hydraulic Compartment (distributor seat, reservoir, etc.)"> + <x description="X-Distance to nose in relation to fuselage length"> + <value>0.4</value> + <unit>-</unit> + <default>0.4</default> + </x> + <y description="Y-Distance to symmetry line in relation to half span"> + <value>0.0</value> + <unit>-</unit> + <default>0.0</default> + </y> + <z description="Z-distance to symmetry line in relation to fuselage height"> + <value>0.0</value> + <unit>-</unit> + <default>0.0</default> + </z> + </compartment_reference_point> + <components description="Components within the circuit"> + <pumps description="Pumps"> + <number_of_pumps description="Number of pumps"> + <value>2</value> + <unit>-</unit> + <default>1</default> + </number_of_pumps> + <pump ID="0" description="Pump description"> + <name description="Name of the pump"> + <value>EDP</value> + </name> + <type description="Type of pump (Currently 3 types: Electric, EngineDriven, RAT)"> + <value>EngineDriven</value> + <default>EngineDriven</default> + </type> + <efficiency description="Pump efficiency"> + <value>0.85</value> + <unit>-</unit> + <default>0.85</default> + </efficiency> + <operation_factor description="Percentage of total pump power in normal operation (value must be between"> + <value>0.8</value> + <unit></unit> + <default>1</default> + </operation_factor> + <power_source description="Energy source for the pump"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Engine</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </pump> + <pump ID="1" description="Pump description"> + <name description="Name of the pump"> + <value>EMP</value> + </name> + <type description="Type of pump (Currently 3 types: Electric, EngineDriven, RAT)"> + <value>Electric</value> + <default>EngineDriven</default> + </type> + <efficiency description="Pump efficiency"> + <value>0.7</value> + <unit>-</unit> + <default>0.95</default> + </efficiency> + <operation_factor description="Percentage of total pump power in normal operation (value must be between 0 and 1. 0=off, 1=total)"> + <value>0.2</value> + <unit>-</unit> + <default>1</default> + </operation_factor> + <power_source description="Energy source for the pump"> + <type description="Type of energy source (Hydraulic, Electric, Engine, APU)"> + <value>Electric</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </pump> + </pumps> + <not_specified description="Description of the remaining components in the hydraulic circuit (without lines... are calculated internally!)"> + <mass_factor description="Mass fraction of remaining components in the hydraulic circuit"> + <value>0.</value> + <unit>-</unit> + <default>0.</default> + </mass_factor> + </not_specified> + </components> + </hydraulic_circuit> + </hydraulic_circuits> + <power_transfer_units description="System description of the Power Transfer Units"> + <number_of_power_transfer_units description="Number of PTUs"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </number_of_power_transfer_units> + <power_transfer_unit ID="0" description="System description of the PTU"> + <power_transfer_unit_connection ID="0" description="1. Circuit to which the PTU is connected"> + <value>-</value> + </power_transfer_unit_connection> + <power_transfer_unit_connection ID="1" description="2. Circuit to which the PTU is connected"> + <value>-</value> + </power_transfer_unit_connection> + </power_transfer_unit> + </power_transfer_units> + </hydraulic_system> + <electric_system> + <efficiency_factor_electric_system description="Efficiency of the electrical system, e.g. resistance of the cables"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </efficiency_factor_electric_system> + <rel_max_power description="Ratio of maximum permanent power and maximum required power of all generators"> + <value>1.0</value> + <unit>-</unit> + <default>1.0</default> + </rel_max_power> + <specific_cable_mass description="Specific weight of electrical wiring"> + <value>6.5</value> + <unit>kg/m</unit> + <default>6.5</default> + </specific_cable_mass> + <electric_circuits description="Detailed description of the electrical circuits"> + <number_of_circuits description="Number of electric circuits"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_circuits> + <electric_circuit ID="0" description="System description electrical circuit"> + <components description="Components within the cycle"> + <generators description="Generators"> + <number_of_generators description="Number of generators"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </number_of_generators> + <generator ID="0" description="System description of the generator"> + <name description="Name of generator"> + <value>IDG1</value> + </name> + <type description="Type of generators"> + <value>IDG</value> + </type> + <generator_efficiency description="Efficiency of the generator including accessory gear box"> + <value>0.665</value> + <unit>-</unit> + <default>0.665</default> + </generator_efficiency> + <operation_factor description="Share of total power in normal operation (value must be between 0 and 1. 0=off, 1=total)"> + <value>1</value> + <default>1</default> + </operation_factor> + <power_source description="Energy source of generator"> + <type description="Type of energy source (hydraulic, electric, engine, APU)"> + <value>Engine</value> + </type> + <source_ID description="ID of the energy source"> + <value>1</value> + </source_ID> + </power_source> + </generator> + </generators> + <not_specified description="System description of the remaining components in the electrical circuit (without cable/plug... are calculated internally!)"> + <mass_factor description="Mass fraction of the remaining components"> + <value>0.</value> + <unit>-</unit> + <default>0.</default> + </mass_factor> + </not_specified> + </components> + </electric_circuit> + </electric_circuits> + </electric_system> + <propulsion_system> + <percentage_bleed_air description="Percentage of bleed air generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy generated by the engine"> + <value>1.00</value> + <unit>-</unit> + <default>1.00</default> + </percentage_hydraulic_power> + <efficiency_factor_bleed_air description="Efficiency of Bleed Air withdrawal"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </efficiency_factor_bleed_air> + </propulsion_system> + <auxiliary_power_unit> + <position_of_auxiliary_power_unit_in_fuselage_length description="Relative position of the APU in reference to the total fuselage length"> + <value>0.95</value> + <unit>-</unit> + <default>0.95</default> + </position_of_auxiliary_power_unit_in_fuselage_length> + <percentage_bleed_air description="Percentage of Bleed Air generated by the APU"> + <value>0.00</value> + <unit>-</unit> + <default>0.00</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy generated by the APU"> + <value>0.00</value> + <unit>-</unit> + <default>0.00</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy generated by the APU"> + <value>0.0</value> + <unit>-</unit> + <default>0.00</default> + </percentage_hydraulic_power> + <efficiency_factor_bleed_air description="Efficiency of Bleed Air withdrawal"> + <value>0.90</value> + <unit>-</unit> + <default>0.90</default> + </efficiency_factor_bleed_air> + <installation_factor description="Installation factor for attached parts such as fire protection, noise protection, etc."> + <value>1.5</value> + <unit>-</unit> + <default>1.5</default> + </installation_factor> + <design_loads> + <percentage_bleed_air description="Percentage of Bleed Air for which the APU is designed"> + <value>0.30</value> + <unit>-</unit> + <default>0.30</default> + </percentage_bleed_air> + <percentage_electrical_power description="Percentage of electrical energy for which the APU is designed"> + <value>0.50</value> + <unit>-</unit> + <default>0.50</default> + </percentage_electrical_power> + <percentage_hydraulic_power description="Percentage of hydraulic energy for which the APU is designed"> + <value>0.50</value> + <unit>-</unit> + <default>0.50</default> + </percentage_hydraulic_power> + </design_loads> + </auxiliary_power_unit> + <avionics description="Components grouped inside ATAXX"> + <location_of_aviationics_bay description="0: Wing root, 1: Nose, 2: Behind cockpit"> + <value>0</value> + <unit>-</unit> + <default>0</default> + </location_of_aviationics_bay> + </avionics> + <remaining_consumers> + <power description="Additional percentages of bleed, electric, and hydraulic power for ATA-XX"> + <percentage_bleed_air description="Percentage of unrecorded performances"> + <value>0.00</value> + <unit>-</unit> + <default>0.0</default> + </percentage_bleed_air> + <percentage_electric description="Percentage of unrecorded performances"> + <value>0.104</value> + <unit>-</unit> + <default>0.104</default> + </percentage_electric> + <percentage_hydraulic description="Percentage of unrecorded performances"> + <value>0.05</value> + <unit>-</unit> + <default>0.05</default> + </percentage_hydraulic> + </power> + <mass> + <scaling_factor description="Scaling of ATA-XX mass"> + <value>1</value> + <unit>-</unit> + <default>1</default> + </scaling_factor> + <distribution description="Distribution of ATA-XX mass to single components"> + <percentage_instrumentation_of_ATAXX description="Percentage of instrumentation in ATA-XX"> + <value>0.08</value> + <unit>-</unit> + <default>0.08</default> + </percentage_instrumentation_of_ATAXX> + <percentage_auto_flight_of_ATAXX description="Percentage of AFS in ATA-XX"> + <value>0.13</value> + <unit>-</unit> + <default>0.13</default> + </percentage_auto_flight_of_ATAXX> + <percentage_navigation_of_ATAXX description="Percentage of the navigation system in ATA-XX"> + <value>0.53</value> + <unit>-</unit> + <default>0.53</default> + </percentage_navigation_of_ATAXX> + <percentage_communication_of_ATAXX description="Percentage of the communication system in ATA-XX"> + <value>0.26</value> + <unit>-</unit> + <default>0.26</default> + </percentage_communication_of_ATAXX> + </distribution> + </mass> + </remaining_consumers> + </systems_constants> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/template.xml b/UnicadoGUI/Backend/xml_configs/template.xml new file mode 100644 index 0000000..6111745 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/template.xml @@ -0,0 +1,5001 @@ +<aircraft_exchange_file> + <requirements_and_specifications description="Requirements and specifications"> + <general description="General aircraft information"> + <type description="Aircraft type"> + <value>CeRAS</value> + </type> + <model description="Model - Version"> + <value>SMR-2020</value> + </model> + </general> + <mission_files description="Name of xml files which are located in the missionData directory and contain the flight phase data" tool_level="0"> + <design_mission_file description="Name of the design mission xml"> + <value>design_mission.xml</value> + </design_mission_file> + <study_mission_file description="Name of the study mission xml"> + <value>study_mission.xml</value> + </study_mission_file> + <requirements_mission_file description="Name of the requirements mission xml"> + <value>requirements_mission.xml</value> + </requirements_mission_file> + </mission_files> + <design_specification description="Design specification"> + <configuration description="Configuration information"> + <configuration_type description="aircraft configuration: tube_and_wing / blended_wing_body"> + <value>tube_and_wing</value> + </configuration_type> + <fuselage_definition description="Design description of the fuselage."> + <fuselage_type description="Fuselage type: single_aisle / weight_body"> + <value>single_aisle</value> + </fuselage_type> + </fuselage_definition> + <wing_defintion description="Definitions for wing design"> + <mounting description="wing mounting for tube_and_wing configuration (ignored at blended_wing_body) - low / mid / high"> + <value>low</value> + </mounting> + </wing_defintion> + <empennage_definition description="Definitions for empennage design"> + <empennage_type description="tube_and_wing configuration: conventional - blended_wing_body: vertical_tails"> + <value>conventional</value> + </empennage_type> + </empennage_definition> + <undercarriage_definition description="Design description of the undercarriage."> + <main_gear_mounting description="Mounting position of the main landing gear: wing_mounted / fuselage_mounted."> + <value>wing_mounted</value> + </main_gear_mounting> + <undercarriage_retractability description="Switch to set retractability of landing gear: retractable / non_retractable."> + <value>retractable</value> + </undercarriage_retractability> + </undercarriage_definition> + <loads description="Loads information"> + <design_load_factor description="design load factor n"> + <maximum description="maximum design load factor n"> + <value>2.5</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>4</upper_boundary> + </maximum> + <minimum description="maximum design load factor n"> + <value>-1.0</value> + <unit>1</unit> + <lower_boundary>-2.0</lower_boundary> + <upper_boundary>0.0</upper_boundary> + </minimum> + <maneuver description="standard maneuver load factor for e.g. flare"> + <value>1.1</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>2.0</upper_boundary> + </maneuver> + </design_load_factor> + </loads> + </configuration> + <transport_task> + <passenger_definition description="Define the masses of the passengers"> + <total_number_passengers description="Design number of passengers"> + <value>150</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </total_number_passengers> + <mass_per_passenger description="Design mass of a single passenger WITHOUT luggage"> + <value>80</value> + <unit>kg</unit> + <lower_boundary>50</lower_boundary> + <upper_boundary>200</upper_boundary> + </mass_per_passenger> + <luggage_mass_per_passenger description="Design mass of a the luggage for a single passenger"> + <value>17</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>25</upper_boundary> + </luggage_mass_per_passenger> + </passenger_definition> + <passenger_class_definition> + <class_distribution description="Relative passenger distribution for the classes: President Class/First Class/Business Class/Premium Economy/Economy. Sum must be equal to 1!"> + <value>0/0/0/0.1/0.9</value> + </class_distribution> + </passenger_class_definition> + <cargo_definition description="Definition of cargo which does not belong to passengers"> + <additional_cargo_mass description="Mass of cargo which does not belong to passengers"> + <value>500</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </additional_cargo_mass> + <cargo_density description="Density of cargo which does not belong to passengers"> + <value>165</value> + <unit>kg/m^3</unit> + <lower_boundary>150</lower_boundary> + <upper_boundary>200</upper_boundary> + </cargo_density> + </cargo_definition> + </transport_task> + <energy_carriers description="Energy carriers information"> + <energy_carrier ID="0" description="Energy type: kerosene / liquid_hydrogen / battery / saf (for multifuel engine create new ID)"> + <value>0</value> + </energy_carrier> + </energy_carriers> + <propulsion description="Propulsion information"> + <propulsor ID="0" description="Information for specific propulsor"> + <powertrain description="Way the power is generated from the source: turbo, electric, fuel_cell"> + <value>turbo</value> + </powertrain> + <type description="Type of main thrust generator: fan or prop"> + <value>fan</value> + </type> + <position description="propulsor position (arrangement order acc to ID order)"> + <parent_component description="position on component: wing, fuselage, empennage"> + <value>wing</value> + </parent_component> + <x description="x-position (aircraft coordinate system): front or back"> + <value>front</value> + </x> + <y description="y position (aircraft coordinate system): left or right"> + <value>left</value> + </y> + <z description="z position (aircraft coordinate system): over, mid, under, in"> + <value>in</value> + </z> + </position> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + <thrust_share description="Share of this thrust in relation to required aircraft thrust"> + <value>1</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </thrust_share> + </propulsor> + </propulsion> + <systems description="Systems information"> + <energy_provider description="source where energy is coming from per segment"> + <ground description="source where energy is coming from in the ground mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </ground> + <taxi description="source where energy is coming from in the taxi mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </taxi> + <takeoff description="source where energy is coming from in the takeoff mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </takeoff> + <climb description="source where energy is coming from in the climb mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </climb> + <cruise description="source where energy is coming from in the cruise mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </cruise> + <descent description="source where energy is coming from in the descent mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </descent> + <landing description="source where energy is coming from in the landing mission segment"> + <powertrain description="Way the power is generated from the source: propulsor, turbo, electric, fuel_cell"> + <value>propulsor</value> + </powertrain> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </landing> + </energy_provider> + </systems> + <skinning description="Skinning Information"> + <material description="Material of skinning"> + <value>aluminium2024</value> + </material> + <thickness description="Thickness of skinning"> + <value>0.003</value> + <unit>m</unit> + <lower_boundary>0.0001</lower_boundary> + <upper_boundary>0.1</upper_boundary> + </thickness> + </skinning> + <technology> + <variable_camber description="Switch if variable camber is used"> + <value>false</value> + </variable_camber> + </technology> + <tank_configuration description="Energy tanks information"> + <tank ID="0" description="One Tank"> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + <location description="Component where the tank is located: fuselage, wing, horizontal_stabilizer"> + <value>0</value> + </location> + <position description="Position of tank in location: tailcone, rear, front, top, bottom, center, inner_left, outer_left, inner_right, outer_right, total"> + <value>0</value> + </position> + </tank> + </tank_configuration> + </design_specification> + <requirements description="Aircraft design requirements"> + <top_level_aircraft_requirements description="Top level aircraft requirements (TLAR)"> + <maximum_structrual_payload_mass description="Maximum structual payload mass which can be carried by the aircraft (e.g. for short trips)"> + <value>30000</value> + <unit>kg</unit> + <lower_boundary>100</lower_boundary> + <upper_boundary>150000</upper_boundary> + </maximum_structrual_payload_mass> + <takeoff_distance description="Design takeoff distance (Balanced Field Length) at Sea Level with maximum takeoff mass (MTOM) and (ISA + deltaISA)-Conditions"> + <value>2122</value> + <unit>m</unit> + <lower_boundary>600</lower_boundary> + <upper_boundary>5000</upper_boundary> + </takeoff_distance> + <landing_field_length description="Needed runway length at Sea Level with maximum landiung mass (MLM) and (ISA + deltaISA)-Conditions (Safety-Landing Distance according to FAR 121.195: landing_field_required/0.6)"> + <value>2387</value> + <unit>m</unit> + <lower_boundary>600</lower_boundary> + <upper_boundary>5000</upper_boundary> + </landing_field_length> + <icao_aerodrome_reference_code description="ICAO reference code - code_number 1-4 (field length) + code_letter A-F (wing span limits) + faa ADG code number I-VI (wing span limits + tail height limits) + Aircraft Approach Category letter A-D"> + <value>3CIIIB</value> + </icao_aerodrome_reference_code> + <flight_envelope description="Maxima of design flight envelope"> + <maximum_operating_mach_number description="Maximum operating mach number"> + <value>0.85</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </maximum_operating_mach_number> + <maximum_operating_velocity description="Maximum operating speed (maximum dynamic pressure)"> + <value>180</value> + <unit>m/s</unit> + <lower_boundary>50</lower_boundary> + <upper_boundary>250</upper_boundary> + </maximum_operating_velocity> + <maximum_approach_speed description="Maximum allowed approach speed."> + <value>71</value> + <unit>m/s</unit> + <lower_boundary>50</lower_boundary> + <upper_boundary>90</upper_boundary> + </maximum_approach_speed> + <maximum_operating_altitude description="Maximum operating altitude"> + <value>12500</value> + <unit>m</unit> + <lower_boundary>4500</lower_boundary> + <upper_boundary>20000</upper_boundary> + </maximum_operating_altitude> + <maximum_one_engine_operating_altitude description="Maximum operating altitude with one engine inoperative"> + <value>4500</value> + <unit>m</unit> + <lower_boundary>1500</lower_boundary> + <upper_boundary>12000</upper_boundary> + </maximum_one_engine_operating_altitude> + </flight_envelope> + <pavement_classification_number description="Runway pavment classification number (PCN) - limits the maximum allowed aircraft classification number of undercarriage."> + <value>55</value> + <unit>1</unit> + <lower_boundary>5</lower_boundary> + <upper_boundary>120</upper_boundary> + </pavement_classification_number> + <design_mission description="Requirements regarding the design mission"> + <delta_ISA description="Temperature offset to the International Standard Atmosphere (ISA)"> + <value>0</value> + <unit>K</unit> + <lower_boundary>100</lower_boundary> + <upper_boundary>-288.15</upper_boundary> + </delta_ISA> + <range description="Target range for the specified mission"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>20000000</upper_boundary> + </range> + <initial_cruise_mach_number description="Initial cruise Mach number at top of descent. May be altered during cruise."> + <value>0.78</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </initial_cruise_mach_number> + <initial_cruise_altitude description="Initial cruise altitude (ICA) at top of descent. May be altered during cruise."> + <value>11000</value> + <unit>m</unit> + <lower_boundary>1000</lower_boundary> + <upper_boundary>20000</upper_boundary> + </initial_cruise_altitude> + <climb_speed_schedule description="Climb speed for different altitudes"> + <climb_speed_below_FL100 description="Calibrated airspeed in climb below FL100 (FL100 = 3048 m)"> + <value>50</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </climb_speed_below_FL100> + <climb_speed_above_FL100 description="Calibrated airspeed in climb above FL100 (FL100 = 3048 m)"> + <value>100</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </climb_speed_above_FL100> + <delta_mach_climb_cruise description="Difference between crossover altitude Mach number and cruise Mach number"> + <value>-0.02</value> + <unit>1</unit> + <lower_boundary>-0.3</lower_boundary> + <upper_boundary>0.01</upper_boundary> + </delta_mach_climb_cruise> + </climb_speed_schedule> + <descent_speed_schedule description="Descent speed for different altitudes"> + <descent_speed_below_FL100 description="Calibrated airspeed in descent below FL100 (FL100 = 3048 m)"> + <value>50</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </descent_speed_below_FL100> + <descent_speed_above_FL100 description="Calibrated airspeed in descent above FL100 (FL100 = 3048 m)"> + <value>100</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </descent_speed_above_FL100> + </descent_speed_schedule> + <time_to_climb description="Time the aircraft takes to climb to cruise altitude"> + <value>2100</value> + <unit>s</unit> + <lower_boundary>600</lower_boundary> + <upper_boundary>3600</upper_boundary> + </time_to_climb> + <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)"> + <fuel_estimation_selector description="'mode_0': Fuel planning according to JAR, 'mode_1': Domestic fuel planning according to FAR, 'mode_2': Flag or supplemental fuel planning according to FAR"> + <value>mode_0</value> + </fuel_estimation_selector> + </fuel_planning> + </design_mission> + <study_mission description="Requirements regarding the study mission"> + <delta_ISA description="Temperature offset to the International Standard Atmosphere (ISA)"> + <value>0</value> + <unit>K</unit> + <lower_boundary>100</lower_boundary> + <upper_boundary>-288.15</upper_boundary> + </delta_ISA> + <range description="Target range for the specified mission"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>20000000</upper_boundary> + </range> + <initial_cruise_mach_number description="Initial cruise Mach number at top of descent. May be altered during cruise."> + <value>0.78</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </initial_cruise_mach_number> + <initial_cruise_altitude description="Initial cruise altitude at top of descent. May be altered during cruise."> + <value>11000</value> + <unit>m</unit> + <lower_boundary>1000</lower_boundary> + <upper_boundary>20000</upper_boundary> + </initial_cruise_altitude> + <climb_speed_schedule description="Climb speed for different altitudes"> + <climb_speed_below_FL100 description="Calibrated airspeed in climb below FL100 (FL100 = 3048 m)"> + <value>50</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </climb_speed_below_FL100> + <climb_speed_above_FL100 description="Calibrated airspeed in climb above FL100 (FL100 = 3048 m)"> + <value>100</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </climb_speed_above_FL100> + <delta_mach_climb_cruise description="Difference between crossover altitude Mach number and cruise Mach number"> + <value>-0.02</value> + <unit>1</unit> + <lower_boundary>-0.3</lower_boundary> + <upper_boundary>0.01</upper_boundary> + </delta_mach_climb_cruise> + </climb_speed_schedule> + <descent_speed_schedule description="Descent speed for different altitudes"> + <descent_speed_below_FL100 description="Calibrated airspeed in descent below FL100 (FL100 = 3048 m)"> + <value>50</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </descent_speed_below_FL100> + <descent_speed_above_FL100 description="Calibrated airspeed in descent above FL100 (FL100 = 3048 m)"> + <value>100</value> + <unit>m/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>250</upper_boundary> + </descent_speed_above_FL100> + </descent_speed_schedule> + <fuel_planning description="Fuel planning according to the Joint Aviation Requirements (JAR) or the Federal Aviation Regulations (FAR)"> + <fuel_estimation_selector description="'mode_0': Fuel planning according to JAR, 'mode_1': Domestic fuel planning according to FAR, 'mode_2': Flag or supplemental fuel planning according to FAR"> + <value>mode_0</value> + </fuel_estimation_selector> + </fuel_planning> + <payload_fractions description="Set the fraction of different design payload values for the study mission"> + <cargo_fraction description="Fraction of the design cargo mass which is used for the study mission"> + <value>0.75</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </cargo_fraction> + <passenger_mass_fraction description="Fraction of the design passenger mass which is used for the study mission"> + <value>0.75</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </passenger_mass_fraction> + </payload_fractions> + </study_mission> + </top_level_aircraft_requirements> + <additional_requirements description="Additional requirements"></additional_requirements> + </requirements> + <assessment_scenario description="Scenario for ecological and economical assessment"> + <flights_per_year description="Number of flights per year"> + <value>2227</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>4000</upper_boundary> + </flights_per_year> + </assessment_scenario> + </requirements_and_specifications> + <sizing_point> + <wing_loading description="Maximum takeoff mass (MTOM) divided by wing area (Sref)" tool_level="1"> + <value>0</value> + <unit>kg/m^2</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </wing_loading> + <thrust_to_weight description="Total thrust (kN) divided by maximum aircraft weight (kN)" tool_level="1"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </thrust_to_weight> + </sizing_point> + <component_design> + <global_reference_point> + <reference_component description="Gobal reference point of aircraft geometry"> + <value></value> + </reference_component> + <x description="X coordinate of the global reference point"> + <value></value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="Y coordinate of the global reference point"> + <value></value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="Z coordinate of the global reference point"> + <value></value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </global_reference_point> + <wing description="wing component" tool_level="0"> + <position description="position of wing (most forward position of part composition at y = 0)"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </position> + <mass_properties description="mass_properties of component wing"> + <mass description="component mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="component inertia refered to center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="component center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>17.1682343</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <geometry> + <aerodynamic_surface ID="0" description="aerodynamic surface"> + <name description="name of aerodynamic surface"> + <value>main_wing</value> + </name> + <position description="reference position in global coordinates"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </position> + <parameters description="aerodynamic surface parameters"> + <direction description="unit vector according to global coordinate system for direction applied at position"> + <x description="x direction of unit vector"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </x> + <y description="y direction of unit vector"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </y> + <z description="z direction of unit vector"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </z> + </direction> + <symmetric description="symmetric to x-z plane (global) aerodynamic surface"> + <value>true</value> + </symmetric> + <sections description="sections"> + <section ID="0" description="section"> + <chord_origin description="origin of chord (local)"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </chord_origin> + <chord_length description="length of chord"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </chord_length> + <geometric_twist description="geometric twist at leading edge"> + <value>0.0</value> + <unit>rad</unit> + <lower_boundary>-180</lower_boundary> + <upper_boundary>180</upper_boundary> + </geometric_twist> + <scale_thickness description="scale the thickness defined by the profile with this factor"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </scale_thickness> + <profile description="profile (data normalized on chord)"> + <name> + <value>naca0012</value> + </name> + </profile> + </section> + </sections> + <spars description="spars"> + <spar ID="0" description="front spar"> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + <spar ID="1" description="rear spar"> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + </spars> + <control_devices description="control devices"> + <control_device ID="0" description="control device"> + <type> + <value>aileron</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + </control_devices> + </parameters> + <mass_properties description="mass_properties of aerodynamic surface"> + <mass description="component mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="component inertia refered to center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="component center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </aerodynamic_surface> + </geometry> + </specific> + </wing> + <fuselage description="Geometric description of the aircraft fuselages" tool_level="0"> + <position description="Position of the fuselages with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (fuselage nose point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>10</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (fuselage nose point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of the fuselages."> + <mass description="Mass of the total fuselages."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="Inertia of the total fuselages with regard to the total center of gravity."> + <j_xx description="Inertia of the total fuselages in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of the total fuselages in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of the total fuselages in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of the total fuselages in xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of the total fuselages in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of the total fuselages in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of the total fuselages in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of the total fuselages in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of the total fuselages in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of the total fuselages."> + <x description="Center of gravity in x-direction with regard to the global reference point. (total fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (total fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (total fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <geometry> + <fuselage ID="0" description="Geometrical description of one entire fuselage."> + <name description="Name of the fuselage."> + <value>center_fuselage</value> + </name> + <position description="Position of one entire fuselage with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (fuselage nose point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>10</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (fuselage nose point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <direction description="unit vector according to global coordinate system for direction applied at position"> + <x description="Distance in x direction with regard to the global reference point. (fuselage nose point)"> + <value>1</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (fuselage nose point)"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </z> + </direction> + <mass_properties description="Mass properties of one entire fuselage."> + <mass description="Mass of one entire fuslege."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <inertia description="Inertia of one entire fuselage with regard to his center of gravity."> + <j_xx description="Inertia of one entire fuselage in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of one entire fuselage in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of one entire fuselage in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of one entire fuselage in xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of one entire fuselage in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of one entire fuselage in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of one entire fuselage in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of one entire fuselage in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of one entire fuselage in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <sections description="Geometrical description of the fuselage sections of one entire fuselage"> + <section ID="0" description="Geometrical description of one fuselage section."> + <name description="Name of the fuselage section."> + <value>section_1</value> + </name> + <section_shape dedication="Contains a String with path to *.dat file or the key word 'elipse'"> + <value>geometryData/fuselage/section_0.dat</value> + </section_shape> + <origin description="Origin of fuselage section (local)."> + <x description="Distance in x direction with regard to the global reference point. (cgal convention local: x ist die breite/2 in y!)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>75</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (cgal convention local: y ist die höhe/2 in z!)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (cgal convention local: z ist die position in x!)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </origin> + <upper_height description="Height of the upper half of the fuselage section."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </upper_height> + <lower_height description="Height of the lower half of the fuselage section."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </lower_height> + <width description="Width of the fuselage section."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </width> + </section> + </sections> + <fuselage_accommodation> + <position description="Position of the payload tubes with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (center payload tube starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>10</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (center payload tube starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of the payload tubes of one entire fuselage."> + <mass description="Mass of the payload tubes of one entire fuslege."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <center_of_gravity description="Center of gravity of the payload tubes of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <payload_tube ID="0" description="Geometrical description of one payload tube of the fuselage."> + <mass_properties> + <mass description="Mass of the payload tubes of one entire fuslege."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <center_of_gravity description="Center of gravity of the payload tubes of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <operator_items> + <mass_properties> + <mass description="Mass of the payload tubes of one entire fuslege."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <center_of_gravity description="Center of gravity of the payload tubes of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </operator_items> + <furnishing_and_equipment> + <mass_properties> + <mass description="Mass of the payload tubes of one entire fuslege."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <center_of_gravity description="Center of gravity of the payload tubes of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </furnishing_and_equipment> + <name description="Name of the payload tube."> + <value>center_payload_tube</value> + </name> + <payload_tube_reference_points description="Payload tube center reference points in x, y and z-direction refered to fuselage nose point."> + <front_reference_points description="Reference points in the front of payload tube."> + <x description="Payload tube reference point in x-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="Payload tube reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="Payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + <upper_z description="Upper payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </upper_z> + <lower_z description="Lower payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </lower_z> + </front_reference_points> + <aft_reference_points description="Reference points in the aft of payload tube."> + <x description="Payload tube reference point in x-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="Payload tube reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="Payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + <upper_z description="Upper payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </upper_z> + <lower_z description="Lower payload tube reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </lower_z> + </aft_reference_points> + </payload_tube_reference_points> + <payload_tube_wall_reference_points description="Payload tube wall reference points in x, y and z-direction refered to fuselage nose point."> + <front_reference_points description="Wall reference points in the front of payload tube."> + <x description="Wall reference point in x-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <left_y description="Left wall reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </left_y> + <right_y description="Right wall reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </right_y> + <z description="Wall reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </front_reference_points> + <aft_reference_points description="Wall reference points in the aft of payload tube."> + <x description="Wall reference point in x-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <left_y description="Left wall reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </left_y> + <right_y description="Right wall reference point in y-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </right_y> + <z description="Wall reference point in z-direction"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </aft_reference_points> + </payload_tube_wall_reference_points> + <payload_tube_structural_wall_thickness description="Structural wall thickness of the paylaod tube."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </payload_tube_structural_wall_thickness> + <payload_tube_water_volume description="Total water volume of one entire paylaod tube."> + <value>0</value> + <unit>m^3</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>infr</upper_boundary> + </payload_tube_water_volume> + <payload_deck ID="0" description="Geometrical description of the payload decks in one payload tube."> + <name description="Name of the payload deck."> + <value>passenger_deck</value> + </name> + <position description="Position of the payload deck with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (payload deck starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>10</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (payload deck starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance to fuselage center line)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of the payload deck of one entire payload tube."> + <mass description="Mass of the payload deck of one entire paylaod tube."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <center_of_gravity description="Center of gravity of the payload tubes of one entire fuselage."> + <x description="Center of gravity in x-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (all payload tubes of one entire fuselage)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <payload_tube_structural_floor_thickness description="Structural floor thickness of current paylaod deck."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </payload_tube_structural_floor_thickness> + <payload_deck_area description="Total floor area of the paylaod deck."> + <value>0</value> + <unit>m^2</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </payload_deck_area> + <payload_deck_water_volume description="Total water volume of the paylaod deck."> + <value>0</value> + <unit>m^3</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </payload_deck_water_volume> + <payload_deck_length description="Total length of the paylaod deck."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </payload_deck_length> + <payload_deck_height description="Maximum standing height of the paylaod deck."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>3</upper_boundary> + </payload_deck_height> + <payload_deck_top_width description="Width on the top of the paylaod deck."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </payload_deck_top_width> + <payload_deck_bottom_width description="Width on the bottom of the paylaod deck."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </payload_deck_bottom_width> + <payload_deck_required_galley_power description="Required power of the payload deck."> + <value>0</value> + <unit>W</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </payload_deck_required_galley_power> + <payload_compartment ID="0" description="Geometrical description of the payload compartment of one payload deck."> + <name description="Name of the payload compartment of the payload deck."> + <value>front_compartment</value> + </name> + <position description="Position of the payload compartment with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (payload compartment starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (payload compartment starting point)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (distance compartment fuselage center line)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <payload_compartment_area description="Total floor area of the payload compartment."> + <value>0</value> + <unit>m^2</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </payload_compartment_area> + <payload_compartment_water_volume description="Total water volume of the paylaod compartment."> + <value>0</value> + <unit>m^3</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </payload_compartment_water_volume> + <payload_compartment_length description="Total length of the paylaod compartment."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </payload_compartment_length> + </payload_compartment> + </payload_deck> + </payload_tube> + </fuselage_accommodation> + </fuselage> + </geometry> + </specific> + </fuselage> + <tank description="Description of aircraft tanks." tool_level="0"> + <position description="Position of the tanks with regard to the global reference point."> + <x description="Distance between the foremost tank end and the global reference point in x-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </x> + <y description="Distance between the foremost tank end and the global reference point in y-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-40</lower_boundary> + <upper_boundary>40</upper_boundary> + </y> + <z description="Distance between the foremost tank end and the global reference point in z-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of all tanks."> + <mass description="Total tank mass."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <inertia description="Inertia of all tanks with regard to the total center of gravity."> + <j_xx description="Inertia of all tanks in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of all tanks in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of all tanks in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of all tanks in xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of all tanks in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of all tanks in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of all tanks in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of all tanks in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of all tanks in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of all tanks."> + <x description="Center of gravity in x-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-40</lower_boundary> + <upper_boundary>40</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <tank ID="0" description="Description of one tank."> + <name description="Designator of the tank (right/left hand inner/outer wing tank, center tank, trim tank, cylindrical/conical tail cone tank, ...)."> + <value>right hand inner wing tank</value> + </name> + <position description="Position of one tank with regard to the global reference point."> + <x description="Distance between the foremost tank end of one tank and the global reference point in x-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </x> + <y description="Distance between the foremost tank end of one tank and the global reference point in y-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-40</lower_boundary> + <upper_boundary>40</upper_boundary> + </y> + <z description="Distance between the foremost tank end of one tank and the global reference point in z-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of one tank."> + <mass description="Total dry mass of one tank."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </mass> + <inertia description="Inertia of one tank with regard to its center of gravity."> + <j_xx description="Inertia of one tank in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of one tank in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of one tank in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of one tank in xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of one tank in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of one tank in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of one tank in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of one tank in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of one tank in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of one tank."> + <x description="Center of gravity in x-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-40</lower_boundary> + <upper_boundary>40</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <volume description="Total usable volume of one tank."> + <value>0</value> + <unit>m^3</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100000</upper_boundary> + </volume> + <geometry description="Geometrical description of one tank."> + <cross_section ID="0" description="Geometrical description of one tank cross section."> + <name description="Designator of tank cross section."> + <value>first cross section</value> + </name> + <position description="Position of tank cross section with regard to the global reference point."> + <x description="Distance between the tank cross section and the global reference point in x-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </x> + <y description="Distance between the tank cross section and the global reference point in y-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-40</lower_boundary> + <upper_boundary>40</upper_boundary> + </y> + <z description="Distance between the tank cross section and the global reference point in z-direction."> + <value>0</value> + <unit>m</unit> + <lower_boundary>-5</lower_boundary> + <upper_boundary>5</upper_boundary> + </z> + </position> + <shape description="Description of the shape of the cross section (circular, rectangular, elliptical)."> + <value>rectangular</value> + </shape> + <height description="Height of the cross section."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </height> + <width description="Width of the cross section."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </width> + <length description="Length of the cross section (if length > 0: curved cross section, e.g., dashed tank endcap)."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </length> + </cross_section> + </geometry> + </tank> + </specific> + </tank> + <empennage description="empennage component" tool_level="0"> + <position description="position of empennage (most forward position of part composition)"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </position> + <mass_properties description="mass_properties of component empennage"> + <mass description="component mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="component inertia refered to center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="component center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <geometry> + <aerodynamic_surface ID="0" description="aerodynamic surface"> + <name description="name of aerodynamic surface"> + <value>fin</value> + </name> + <position description="reference position in global coordinates"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </position> + <parameters description="aerodynamic surface parameters"> + <direction description="unit vector according to global coordinate system for direction applied at position"> + <x description="x direction of unit vector"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </x> + <y description="y direction of unit vector"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </y> + <z description="z direction of unit vector"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>-1.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </z> + </direction> + <symmetric description="symmetric to x-z plane (global) aerodynamic surface"> + <value>true</value> + </symmetric> + <sections description="sections"> + <section ID="0" description="section"> + <chord_origin description="origin of chord (local)"> + <x description="x position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z position"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </chord_origin> + <chord_length description="length of chord"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </chord_length> + <geometric_twist description="geometric twist at leading edge"> + <value>0.0</value> + <unit>rad</unit> + <lower_boundary>-180</lower_boundary> + <upper_boundary>180</upper_boundary> + </geometric_twist> + <profile description="profile (data normalized on chord)"> + <name> + <value>naca0012</value> + </name> + </profile> + </section> + </sections> + <spars description="spars"> + <spar ID="0" description="front spar"> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + <spar ID="1" description="rear spar"> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + </spars> + <control_devices description="control devices"> + <control_device ID="0" description="control device"> + <type> + <value>aileron</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + </control_devices> + </parameters> + <mass_properties description="mass_properties of aerodynamic surface"> + <mass description="component mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="component inertia refered to center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="component center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </aerodynamic_surface> + </geometry> + </specific> + </empennage> + <landing_gear description="Geometric description of the aircraft undercarriage." tool_level="0"> + <position description="Position of the total undercarriage arrangment with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of the total undercarriage arrangment."> + <mass description="Mass of the total undercarriage arrangment."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="Inertia of the total undercarriage arrangment with regard to the total center of gravity."> + <j_xx description="Inertia of the total undercarriage arrangment in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of the total undercarriage arrangment in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of the total undercarriage arrangment in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of the total undercarriage arrangment in xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of the total undercarriage arrangment in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of the total undercarriage arrangment in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of the total undercarriage arrangment in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of the total undercarriage arrangment in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of the total undercarriage arrangment in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of the total undercarriage arrangment."> + <x description="Center of gravity in x-direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (total undercarriage arrangment)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <aircraft_classification_number description="Aircraft classification number for the total undercarriage arrangment."> + <value>return_string</value> + </aircraft_classification_number> + <aircraft_classification_rating description="Aircraft classification rating for the total undercarriage arrangment."> + <value>return_string</value> + </aircraft_classification_rating> + <geometry> + <landing_gear_assembly ID="0" description="Geometrical description of one entire landing gear leg."> + <name description="Name of the landing gear leg."> + <value>nose_gear</value> + </name> + <position description="Position of one entire landing gear leg with regard to the global reference point."> + <x description="Distance in x direction with regard to the global reference point. (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-15</lower_boundary> + <upper_boundary>15</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (z coordinate refers to the mounting point of the landing gear leg.)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of one entire landing gear leg."> + <mass description="Mass of one entire landing gear leg."> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10000</upper_boundary> + </mass> + <inertia description="Inertia of one entire landing gear leg with regard to his center of gravity."> + <j_xx description="Inertia of one entire landing gear leg in x."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="Inertia of one entire landing gear leg in y."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="Inertia of one entire landing gear leg in z."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="Inertia of one entire landing gear leg xy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="Inertia of one entire landing gear leg in xz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="Inertia of one entire landing gear leg in yx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="Inertia of one entire landing gear leg in yz."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="Inertia of one entire landing gear leg in zx."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="Inertia of one entire landing gear leg in zy."> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Center of gravity of one entire landing gear leg."> + <x description="Center of gravity in x-direction with regard to the global reference point. (entire landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </x> + <y description="Center of gravity in y-direction with regard to the global reference point. (entire landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>0</upper_boundary> + </y> + <z description="Center of gravity in z-direction with regard to the global reference point. (entire landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <assambly_components> + <strut_diameter description="Diameter of the landing gear strut."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </strut_diameter> + <strut_length description="Length of the landing gear strut."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10</upper_boundary> + </strut_length> + <wheel_group_position description="Position of wheel group of one entire landing gear leg."> + <x description="Distance in x direction with regard to the global reference point (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-15</lower_boundary> + <upper_boundary>15</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point (z coordinate refers to the end point of the landing gear leg.)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-20</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </wheel_group_position> + <tire_description ID="0" description="Description of one tire of the wheel group"> + <position description="Position of one tire of current landing gear strut."> + <x description="Distance in x direction with regard to the global reference point. (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="Distance in y direction with regard to the global reference point. (center line of the landing gear leg)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-15</lower_boundary> + <upper_boundary>15</upper_boundary> + </y> + <z description="Distance in z direction with regard to the global reference point. (z coordinate refers to the mounting point of the landing gear leg.)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-10</lower_boundary> + <upper_boundary>0</upper_boundary> + </z> + </position> + <tire_diameter description="Diameter of the wheel group tires."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>2</upper_boundary> + </tire_diameter> + <tire_width description="Width of the wheel group tires."> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </tire_width> + <tire_rated_load> + <value>0</value> + <unit>N</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000</upper_boundary> + </tire_rated_load> + <tire_pressure description="Tire pressure of the wheel group tires."> + <value>0</value> + <unit>Pa</unit> + <lower_boundary>1000000</lower_boundary> + <upper_boundary>2000000</upper_boundary> + </tire_pressure> + <maximum_tire_speed description="Maximum permissible tire speed of the wheel group tires."> + <value>0</value> + <unit>m/s</unit> + <lower_boundary>50</lower_boundary> + <upper_boundary>125</upper_boundary> + </maximum_tire_speed> + </tire_description> + </assambly_components> + </landing_gear_assembly> + </geometry> + </specific> + </landing_gear> + <propulsion description="Propulsion components" tool_level="0"> + <position description="Reference position of the propulsion assembly"> + <x description="x position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="y position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-50</lower_boundary> + <upper_boundary>50</upper_boundary> + </y> + <z description="z position"> + <unit>m</unit> + <value>0</value> + <lower_boundary>-20</lower_boundary> + <upper_boundary>40</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of the total propulsion assembly"> + <mass description="Total propulsion mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10000</upper_boundary> + </mass> + <inertia description="Inertia of total propulsion system refered to its center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Propulsion center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <propulsion ID="0" description="Description of one propulsion unit"> + <nacelle ID="0" description="Description "> + <origin description="Origin of the nacelle in the global aircraft coordinate system"> + <x description="x coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </x> + <y description="y coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </y> + <z description="z coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </z> + </origin> + <normal description="Normal direction of the nacelle in the global aircraft coordinate system"> + <x description="x direction of unit vector"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </x> + <y description="y direction of unit vector"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </y> + <z description="z direction of unit vector"> + <value>1</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </z> + </normal> + <mass_properties description="Mass properties of propulsion assembly"> + <mass description="Total propulsion mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10000</upper_boundary> + </mass> + <inertia description="Inertia of propulsion referred to its center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Propulsion center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <sections description="Geometrical description of the nacelle sections"> + <section ID="0"> + <origin description="Origin of the section (local)"> + <x description="x coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </x> + <y description="y coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </y> + <z description="z coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </z> + </origin> + <width description="width of the section"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </width> + <height description="Height of the section"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </height> + <profile description="The profile name of the section"> + <value>circle</value> + </profile> + </section> + </sections> + </nacelle> + <pylon description="Description of pylon"> + <position description="Reference position of the pylon"> + <x description="x position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="y position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-50</lower_boundary> + <upper_boundary>50</upper_boundary> + </y> + <z description="z position"> + <unit>m</unit> + <value>0</value> + <lower_boundary>-20</lower_boundary> + <upper_boundary>40</upper_boundary> + </z> + </position> + <normal description="Unit vector according to global coordinate system for direction applied at position"> + <x description="x direction of unit vector"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </x> + <y description="y direction of unit vector"> + <value>-1</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </y> + <z description="z direction of unit vector"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </z> + </normal> + <mass_properties description="Mass properties of the nacelle"> + <mass description="Total propulsion mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10000</upper_boundary> + </mass> + <inertia description="Inertia of propulsion refered to its center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Propulsion center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <sections description="sections"> + <section ID="0"> + <origin description="origin of chord (local)"> + <x description="x coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </x> + <y description="y coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </y> + <z description="z coordinate of point"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </z> + </origin> + <chord_length description="chord length of the section"> + <value>2</value> + <unit>m</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </chord_length> + <geometric_twist description="geometric twist of the section around leading edge"> + <value>0</value> + <unit>rad</unit> + <lower_boundary>-1.797693135e+308</lower_boundary> + <upper_boundary>1.797693135e+308</upper_boundary> + </geometric_twist> + <profile description="profile (data normalized to chord length)"> + <value>n0012</value> + </profile> + </section> + </sections> + </pylon> + <engine description="Description of engine"> + <engine_model description="Name of selected engine model"> + <value>0.0</value> + </engine_model> + <position description="Reference position of the engine"> + <x description="x position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>100</upper_boundary> + </x> + <y description="y position"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-50</lower_boundary> + <upper_boundary>50</upper_boundary> + </y> + <z description="z position"> + <unit>m</unit> + <value>0</value> + <lower_boundary>-20</lower_boundary> + <upper_boundary>40</upper_boundary> + </z> + </position> + <mass_properties description="Mass properties of one propulsion unit"> + <mass description="Mass of engine"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>10000</upper_boundary> + </mass> + <inertia description="Inertia of propulsion refered to its center of gravity"> + <j_xx description="inertia component in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia component in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia component in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia component in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia component in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia component in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia component in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia component in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia component in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="Propulsion center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <scale_factor description="Scale factor for this engine"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </scale_factor> + </engine> + </propulsion> + </specific> + </propulsion> + <systems tool_level="0"> + <position></position> + <mass_properties description="mass_properties of component systems"> + <mass description="component mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia></inertia> + <center_of_gravity description="component center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + <specific> + <geometry> + <mass_properties> + <auxiliary_power_unit description="Airbus Chapter 30, ATA49"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </auxiliary_power_unit> + <hydraulic_generation description="Airbus Chapter 31, ATA 29"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </hydraulic_generation> + <hydraulic_distribution description="Airbus Chapter 32, ATA 29"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </hydraulic_distribution> + <air_conditioning description="Airbus Chapter 33, ATA21"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </air_conditioning> + <de_icing description="Airbus Chapter 34, ATA30"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </de_icing> + <fire_protection description="Airbus Chapter 35, ATA26"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </fire_protection> + <flight_controls description="Airbus Chapter 36, ATA27"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </flight_controls> + <instruments description="Airbus Chapter 37, ATA31"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </instruments> + <automatic_flight_system description="Airbus Chapter 38, ATA 22"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </automatic_flight_system> + <navigation description="Airbus Chapter 39, ATA34"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </navigation> + <communication description="Airbus Chapter 40, ATA23"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </communication> + <electrical_generation description="Airbus Chapter 41, ATA24, generation"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </electrical_generation> + <electrical_distribution description="Airbus Chapter 42, ATA24, distribution"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </electrical_distribution> + <bleed_air_system description="Airbus Chapter 21, ATA36"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </bleed_air_system> + <fuel_system description="Airbus Chapter 25, ATA28"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </fuel_system> + </mass_properties> + </geometry> + <maximium_power_demand description="maximum power (hydraulic + electric) demand"> + <value></value> + <unit>W</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </maximium_power_demand> + <maximium_bleed_air_demand description="maximum bleed air demand"> + <value></value> + <unit>kg/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </maximium_bleed_air_demand> + <average_power_demand description="average power (hydraulic + electric) demand"> + <value></value> + <unit>W</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </average_power_demand> + <average_bleed_air_demand description="average bleed air demand"> <!-- average needed by mission?!--> + <value></value> + <unit>kg/s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </average_bleed_air_demand> + <inflight_entertainment> + <number> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </number> + <mass> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + </inflight_entertainment> + </specific> + </systems> + </component_design> + <analysis> + <masses_cg_inertia description="masses, cgs, inertias." tool_level="0"> + <manufacturer_mass_empty description="MME"> + <mass_properties description="manufacturer mass empty properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </manufacturer_mass_empty> + <operating_mass_empty description="OME"> + <mass_properties description="operating mass empty properties"> + <mass description="mass"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>300000</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </operating_mass_empty> + <maximum_zero_fuel_mass description="MZFM"> + <mass_properties description="maximum zero fuel mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </maximum_zero_fuel_mass> + <maximum_landing_mass description="MLM"> + <mass_properties description="maximum landing mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </maximum_landing_mass> + <maximum_takeoff_mass description="MTOM"> + <mass_properties description="maximum takeoff mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </maximum_takeoff_mass> + <maximum_payload_mass description="maximum payload mass"> + <mass_properties description="maximum payload mass properties"> + <mass description="mass"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </maximum_payload_mass> + <maximum_fuel_mass description="maximum fuel mass"> + <mass_properties description="maximum fuel mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </maximum_fuel_mass> + <most_forward_mass description="mass for most forward cg position"> + <mass_properties description="maximum fuel mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </most_forward_mass> + <design_mass description="design mass "> + <mass_properties description="design mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </design_mass> + <most_afterward_mass description="mass for most afterward cg position"> + <mass_properties description="most afterward mass properties"> + <mass description="mass"> + <value>0.0</value> + <unit>kg</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </mass> + <inertia description="inertia refered to center of gravity"> + <j_xx description="inertia in x"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xx> + <j_yy description="inertia in y"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yy> + <j_zz description="inertia in z"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zz> + <j_xy description="inertia in xy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xy> + <j_xz description="inertia in xz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_xz> + <j_yx description="inertia in yx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yx> + <j_yz description="inertia in yz"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_yz> + <j_zx description="inertia in zx"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zx> + <j_zy description="inertia in zy"> + <value>0.0</value> + <unit>kgm^2</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </j_zy> + </inertia> + <center_of_gravity description="center of gravity with respect to global coordinate system"> + <x description="x component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </x> + <y description="y component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </y> + <z description="z component"> + <value>0.0</value> + <unit>m</unit> + <lower_boundary>-inf</lower_boundary> + <upper_boundary>inf</upper_boundary> + </z> + </center_of_gravity> + </mass_properties> + </most_afterward_mass> + </masses_cg_inertia> + <aerodynamics description="Aerodynamical analysis." level="0"> + <reference_values> + <b description="Total wing span" tool_level="0"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>80</upper_boundary> + </b> + <MAC description="Mean aerodynamic chord" tool_level="0"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>50</upper_boundary> + </MAC> + <S_ref description="Wing reference area" tool_level="0"> + <value>126.5</value> + <unit>m^2</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </S_ref> + </reference_values> + <lift_coefficients> + <C_LmaxLanding description="Maximum lift coefficient in landing configuration" tool_level="0"> + <value>2.8</value> + <lower_boundary>0.001</lower_boundary> + <upper_boundary>4</upper_boundary> + </C_LmaxLanding> + <C_LmaxT-O description="Maximum lift coefficient in take off configuration" tool_level="0"> + <value>2.4</value> + <lower_boundary>0.001</lower_boundary> + <upper_boundary>4</upper_boundary> + </C_LmaxT-O> + <C_LoptimumCruise description="Lift coefficient at L/D_optimum at M_initial_cruise" tool_level="0"> + <value>0.528</value> + <lower_boundary>0.001</lower_boundary> + <upper_boundary>2</upper_boundary> + </C_LoptimumCruise> + <C_LgroundRoll description="Lift coefficient on ground for ground roll calculation" tool_level="0"> + <value>0.4</value> + <lower_boundary>0.001</lower_boundary> + <upper_boundary>2</upper_boundary> + </C_LgroundRoll> + </lift_coefficients> + <polar> + <polar_file description="Name of polar file" tool_level="0"> + <value>/aeroData/CSR-02_polar.xml</value> + </polar_file> + <configurations description="Number of configurations in the polar file" tool_level="0"> + <value>0</value> + </configurations> + <configuration ID="0" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Cruise</value> + </type> + <name> + <value>Clean</value> + </name> + </configuration> + <configuration ID="1" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Cruise</value> + </type> + <name> + <value>Clean</value> + </name> + <type>Departure</type> + <value>TakeOff</value> + </configuration> + <configuration ID="2" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Departure</value> + </type> + <name> + <value>TakeOffLGRetracted</value> + </name> + </configuration> + <configuration ID="3" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Departure</value> + </type> + <name> + <value>Climb</value> + </name> + </configuration> + <configuration ID="4" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Approach</value> + </type> + <name> + <value>Approach</value> + </name> + </configuration> + <configuration ID="5" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Approach</value> + </type> + <name> + <value>ApproachLG</value> + </name> + </configuration> + <configuration ID="6" description="Configuration in polar file marked with ID - name can vary" tool_level="0"> + <type> + <value>Approach</value> + </type> + <name> + <value>Landing</value> + </name> + </configuration> + </polar> + <max_spoiler_factor description="Factor for maximum drag increase trough spoilers" tool_level="0"> + <value>2.5</value> + <lower_boundary>0.001</lower_boundary> + <upper_boundary>4</upper_boundary> + </max_spoiler_factor> + </aerodynamics> + <mission description="Mission data." tool_level="0"> + <design_mission description="Data of design mission"> + <range description="Range for the whole mission"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000000</upper_boundary> + </range> + <block_time description="Block time for the whole mission: Time from break release to end of taxiing after landing"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>45000</upper_boundary> + </block_time> + <flight_time description="Flight time for the whole mission"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>44500</upper_boundary> + </flight_time> + <taxi_energy ID="0" description="Amount of energy needed for taxi segment specified energy carrier"> + <consumed_energy description="Energy amount"> + <value>0</value> + <unit>J</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1e12</upper_boundary> + </consumed_energy> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </taxi_energy> + <mission_energy ID="0" description="Amount of energy needed for all segments of the whole mission (including reserves) for specified energy carrier"> + <consumed_energy description="Energy amount"> + <value>0</value> + <unit>J</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1e12</upper_boundary> + </consumed_energy> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </mission_energy> + <trip_energy ID="0" description="Amount of energy needed for trip segments (all segments from takeoff to landing) for specified energy carrier"> + <consumed_energy description="Energy amount"> + <value>0</value> + <unit>J</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1e12</upper_boundary> + </consumed_energy> + <energy_carrier_ID description="see energy carrier specification node"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5</upper_boundary> + </energy_carrier_ID> + </trip_energy> + <payload_mass description="Total payload carried by the aircraft"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </payload_mass> + <number_of_pax description="Number of passengers for the mission"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </number_of_pax> + <cargo_mass description="Cargo mass"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </cargo_mass> + <takeoff_engine_derate description="Engine power demand"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </takeoff_engine_derate> + <cruise description="Characteristics of the cruise segment"> + <cruise_steps description="Cruise step information"> + <cruise_step ID="0" description="Data of a cruise step"> + <relative_end_of_cruise_step description="End of cruise step relative to total cruise length"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </relative_end_of_cruise_step> + <altitude description="Altitude of cruise step"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>15000</upper_boundary> + </altitude> + </cruise_step> + </cruise_steps> + <top_of_climb_mass description="Total aircraft mass at top of climb (= start of initial cruise altitude (ICA))"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </top_of_climb_mass> + <top_of_climb_range description="Flown range from takeoff to top of climb (= start of initial cruise altitude (ICA))"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>500000</upper_boundary> + </top_of_climb_range> + <top_of_descent_mass description="Total aircraft mass at top of descent (TOD)"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </top_of_descent_mass> + <top_of_descent_range description="Flown range from takeoff to top of descent"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>5000000</upper_boundary> + </top_of_descent_range> + <average_lift_coefficient description="Lift coefficient CL_avg: Arithmetic mean over the entire cruise flight"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </average_lift_coefficient> + <minimum_lift_coefficient description="Minimum cruise flight lift coefficient CL_min"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </minimum_lift_coefficient> + <maximum_lift_coefficient description="Maximum cruise flight lift coefficient CL_max"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </maximum_lift_coefficient> + </cruise> + </design_mission> + <study_mission description="Data of study mission"> + <range description="Range for the whole mission"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000000</upper_boundary> + </range> + <block_time description="Block time for the whole mission: Time from break release to end of taxiing after landing"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>45000</upper_boundary> + </block_time> + <flight_time description="Flight time for the whole mission"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>44500</upper_boundary> + </flight_time> + <taxi_energy ID="0" description="Amount of energy needed for taxi segment for energy carrier ID 0"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </taxi_energy> + <taxi_energy ID="1" description="Amount of energy needed for taxi segment for energy carrier ID 1"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </taxi_energy> + <mission_energy ID="0" description="Amount of energy needed for Wsole mission (including reserves) for energy carrier ID 0"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </mission_energy> + <mission_energy ID="1" description="Amount of energy needed for Wsole mission (including reserves) for energy carrier ID 1"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </mission_energy> + <trip_energy ID="0" description="Amount of energy needed for trip segment (from takeoff to landing) for energy carrier ID 0"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </trip_energy> + <trip_energy ID="1" description="Amount of energy needed for trip segment (from takeoff to landing) for energy carrier ID 1"> + <value>0</value> + <unit>Ws</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000000000000</upper_boundary> + </trip_energy> + <payload_mass description="Total payload carried by the aircraft"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </payload_mass> + <number_of_pax description="Number of passengers for the mission"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1000</upper_boundary> + </number_of_pax> + <cargo_mass description="Cargo mass of for the mission"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </cargo_mass> + <takeoff_engine_derate description="Engine power demand"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </takeoff_engine_derate> + <takeoff_mass description="Takeoff mass"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </takeoff_mass> + <cruise description="Characteristics of the cruise segment"> + <cruise_steps description="Cruise step information"> + <cruise_step ID="0" description="Data of a cruise step"> + <relative_end_of_cruise_step description="End of cruise step relative to total cruise length"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </relative_end_of_cruise_step> + <altitude description="Altitude of cruise step"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>15000</upper_boundary> + </altitude> + </cruise_step> + </cruise_steps> + <top_of_climb_mass description="Total aircraft mass at top of climb (= start of initial cruise altitude (ICA))"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </top_of_climb_mass> + <top_of_climb_range description="Flown range from takeoff to top of climb (= start of initial cruise altitude (ICA))"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>250000</upper_boundary> + </top_of_climb_range> + <top_of_descent_mass description="Total aircraft mass at top of descent (TOD)"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>150000</upper_boundary> + </top_of_descent_mass> + <top_of_descent_range description="Flown range from takeoff to top of descent"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>5000000</upper_boundary> + </top_of_descent_range> + <average_lift_coefficient description="Lift coefficient CL_avg: Arithmetic mean over the entire cruise flight"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </average_lift_coefficient> + <minimum_lift_coefficient description="Minimum cruise flight lift coefficient CL_min"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </minimum_lift_coefficient> + <maximum_lift_coefficient description="Maximum cruise flight lift coefficient CL_max"> + <value>0</value> + <unit>1</unit> + <lower_boundary>-0.01</lower_boundary> + <upper_boundary>1</upper_boundary> + </maximum_lift_coefficient> + </cruise> + </study_mission> + </mission> + </analysis> + <assessment> + <performance description="Assessment of performance values"> + <speed tool_level="0"> + <maximum_operating_mach_number description="Maximum operating mach number"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1</upper_boundary> + </maximum_operating_mach_number> + <maximum_operating_velocity description="Maximum operating speed (maximum dynamic pressure)"> + <value>0</value> + <unit>m/s</unit> + <lower_boundary>50</lower_boundary> + <upper_boundary>250</upper_boundary> + </maximum_operating_velocity> + <dive_mach_number description="Diving mach number"> + <value>0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </dive_mach_number> + <dive_velocity description="Diving speed"> + <value>0</value> + <unit>m/s</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>500.0</upper_boundary> + </dive_velocity> + <one_g_stall_speed_velocity description="One g stall speed in clean configuration"> + <value>0</value> + <unit>m/s</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </one_g_stall_speed_velocity> + </speed> + <takeoff tool_level="0"> + <takeoff_distance_normal_safety description="Takeoff distance at Sea Level for MTOM and (ISA + deltaISA)-Conditions(calculated by missionAnalysis using missionDesign.xml settings) with all engines operating (AEO)"> + <value>0</value> + <unit>m</unit> + </takeoff_distance_normal_safety> + <lift_off_speed_velocity description="Lift-off speed in take-off configuration"> + <value>0</value> + <unit>m/s</unit> + </lift_off_speed_velocity> + <decision_speed description="Decision speed"> + <value>0</value> + <unit>m/s</unit> + </decision_speed> + <takeoff_safety_speed description="Speed at screen height (35 ft)"> + <value>0</value> + <unit>m/s</unit> + </takeoff_safety_speed> + <final_takeoff_speed description="Speed at final takeoff segment (1500 ft)"> + <value>0</value> + <unit>m/s</unit> + </final_takeoff_speed> + <time_to_screen_height description="Time to screen height"> + <value>0</value> + <unit>s</unit> + </time_to_screen_height> + <climb_or_descend_segment_climb_gradient description="Climb gradient in second takeoff segment"> + <value>0</value> + <unit>1</unit> + </climb_or_descend_segment_climb_gradient> + <final_segment_climb_gradient description="Climb gradient in final takeoff segment"> + <value>0</value> + <unit>1</unit> + </final_segment_climb_gradient> + <balanced_field_length description="Balanced field length"> + <value>0</value> + <unit>m</unit> + </balanced_field_length> + </takeoff> + <climb> + <design_time_to_climb description="Time needed to climb from 1500ft to ICA (ISA + deltaISA)"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>7200</upper_boundary> + </design_time_to_climb> + <time_to_1500ft_ISA description="Time needed to climb from break release to 1500ft (ISA + deltaISA)"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>7200</upper_boundary> + </time_to_1500ft_ISA> + <time_to_ICA_ISA description="Time needed to climb from break release to ICA (ISA + deltaISA)"> + <value>0</value> + <unit>s</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>7200</upper_boundary> + </time_to_ICA_ISA> + <range_to_ICA_ISA description="Range needed to climb from break release to ICA (ISA + deltaISA)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>45000</upper_boundary> + </range_to_ICA_ISA> + <fuel_to_ICA_ISA description="Fuel mass needed to climb from break release to ICA (ISA + deltaISA)"> + <value>0</value> + <unit>kg</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>5000</upper_boundary> + </fuel_to_ICA_ISA> + </climb> + <landing tool_level="0"> + <needed_runway_length description="Needed runway length with all engines operating and maximum landing mass"> + <value>0</value> + <unit>m</unit> + </needed_runway_length> + <approach_speed description="Final approach speed in landing configuration and maximum landing mass"> + <value>0</value> + <unit>m/s</unit> + </approach_speed> + </landing> + <range tool_level="0"> + <range_max_payload_at_maximum_takeoff_mass description="Range at maximum payload and fuel mass till maximum take off mass limit"> + <value>0</value> + <unit>m</unit> + </range_max_payload_at_maximum_takeoff_mass> + <range_max_fuel_at_maximum_takeoff_mass description="Range at full tanks and payload till maximum take off mass limit"> + <value>0</value> + <unit>m</unit> + </range_max_fuel_at_maximum_takeoff_mass> + <payload_maximum_fuel_at_maximum_takeoff_mass description="Payload at full tanks and payload till maximum take off mass limit"> + <value>0</value> + <unit>kg</unit> + </payload_maximum_fuel_at_maximum_takeoff_mass> + <range_maximum_fuel_empty description="Range for no payload and full tanks"> + <value>0</value> + <unit>m</unit> + </range_maximum_fuel_empty> + </range> + <altitude> + <maximum_operating_altitude description="Maximum operating altitude (100 ft/min rate of climb)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>4500</lower_boundary> + <upper_boundary>20000</upper_boundary> + </maximum_operating_altitude> + <maximum_ceiling_altitude description="Maximum operating altitude (50 ft/min rate of climb)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>4500</lower_boundary> + <upper_boundary>20000</upper_boundary> + </maximum_ceiling_altitude> + <maximum_one_engine_operating_altitude description="Maximum operating altitude with one engine inoperative (100 ft/min rate of climb)"> + <value>0</value> + <unit>m</unit> + <lower_boundary>1500</lower_boundary> + <upper_boundary>12000</upper_boundary> + </maximum_one_engine_operating_altitude> + </altitude> + </performance> + <direct_operating_cost description="Direct operating cost (sum of route independent and route dependent cost)"> + <route_independent_cost_annual description="Route independent (fixed) cost per year"> + <value>0</value> + <unit>EUR/a</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </route_independent_cost_annual> + <route_dependent_cost_annual description="Route dependent (variable) cost per year"> + <value>0</value> + <unit>EUR/a</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </route_dependent_cost_annual> + <direct_operating_cost_annual description="Direct operating cost (DOC) per year"> + <value>0</value> + <unit>EUR/a</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>inf</upper_boundary> + </direct_operating_cost_annual> + </direct_operating_cost> + <average_temperature_response description="Integrated temperature change per year caused by aircraft operation divided by operating lifetime" tool_level="2"> + <value>0</value> + <unit>K</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1e-5</upper_boundary> + </average_temperature_response> + </assessment> + <requirement_compliance> + <top_level_aircraft_requirements tool_level="0"> + <design_takeoff_distance description="Switch indicating if design takeoff distance can be maintained."> + <maintainable description="Value shows if design takeoff distance can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </design_takeoff_distance> + <design_landing_field_length description="Switch indicating if landing field length can be maintained."> + <maintainable description="Value shows if design landing field length can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </design_landing_field_length> + <design_approach_speed description="Switch indicating if approach speed can be maintained."> + <maintainable description="Value shows if design approach speed can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </design_approach_speed> + <initial_cruise_altitude description="Switch indicating if initial cruise design altitude can be maintained."> + <maintainable description="Value shows if initial cruise design altitude can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </initial_cruise_altitude> + <maximum_operating_altitude description="Switch indicating if the maximum operating altitude can be maintained."> + <maintainable description="Value shows if maximum operating altitude can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </maximum_operating_altitude> + <maximum_one_engine_operating_altitude description="Switch indicating if the maximum one engine operating altitude can be maintained."> + <maintainable description="Value shows if maximum one engine operating altitude can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </maximum_one_engine_operating_altitude> + <initial_cruise_mach_number description="Switch indicating if cruise design Mach number can be maintained."> + <maintainable description="Value shows if cruise design Mach number can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </initial_cruise_mach_number> + <design_time_to_climb description="Switch indicating if the design time to climb can be maintained."> + <maintainable description="Value shows if design time to climb can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </design_time_to_climb> + </top_level_aircraft_requirements> + <certification tool_level="0"> + <climb_gradient_of_second_takeoff_segment description="Switch if climb gradient of second takeoff segment can be maintained"> + <maintainable description="Value shows if climb gradient of second takeoff segment can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </climb_gradient_of_second_takeoff_segment> + <climb_gradient_of_final_takeoff_segment description="Switch if climb gradient of final takeoff segment can be maintained"> + <maintainable description="Value shows if climb gradient of final takeoff segment can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </climb_gradient_of_final_takeoff_segment> + <climb_gradient_approach_one_engine_inoperative description="Switch if climb gradient approach one engine inoperative can be maintained"> + <maintainable description="Value shows if climb gradient approach one engine inoperative can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </climb_gradient_approach_one_engine_inoperative> + <climb_gradient_all_engines_operative description="Switch if climb gradient all engines operative can be maintained"> + <maintainable description="Value shows if climb gradient all engines operative can be maintained."> + <value>false</value> + </maintainable> + <checked description="Indicates if the value has been checked against the requirement."> + <value>false</value> + </checked> + </climb_gradient_all_engines_operative> + </certification> + </requirement_compliance> +</aircraft_exchange_file> diff --git a/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf.xml b/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf.xml new file mode 100644 index 0000000..5d27e7e --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file Name="Weight and Balance Configuration"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>2</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <html_output description="Switch to generate a HTML report ('true': On, 'false': Off)"> + <value>true</value> + </html_output> + <xml_output description="Switch to export module specific data to XML ('true': On, 'false': Off)"> + <value>false</value> + </xml_output> + <tex_output description="Switch to generate a TeX report ('true': On, 'false': Off)"> + <value>false</value> + </tex_output> + <info_file_output description="Switch to generate info files containing inputs, outputs and gui settings (False: Off, True: On)"> + <value>false</value> + </info_file_output> + <gnuplot_script_name description="Specify the name of the plot file"> + <value>weightAndBalanceAnalysis_plot.plt</value> + </gnuplot_script_name> + <log_file_name description="Specify the name of the log file"> + <value>weightAndBalanceAnalysis.log</value> + </log_file_name> + <inkscape_path description="Path to the inkscape application (DEFAULT: Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application (DEFAULT: Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="program settings"> + <tube_and_wing description="weight and balance for tube and wing"> + <category description="selector for category: standard, ..."> + <value>standard</value> + </category> + <standard description="standard weight and balance"> + <method description="selector for method: basic, ..."> + <value>basic</value> + </method> + <basic description="Basic configuration"> + <calculation_methods description="calculation methods for basic configuration"> + <inertia description="selector mode_0: by_lth_table, mode_1: by_components"> + <method description="selected method"> + <value>mode_0</value> + </method> + </inertia> + <maximum_landing_mass description="selector mode_0: by_default_method (OME-Payload-Reserve_fuel), mode_1: by_regression_rwth"> + <method description="selected method"> + <value>mode_1</value> + </method> + </maximum_landing_mass> + <refueling_mode description="selector mode_0: by_default_method (design mission), mode_1: ferry range"> + <method description="selected method"> + <value>mode_0</value> + </method> + </refueling_mode> + <defueling_mode description="selector mode_0: by_default_method (design mission), mode_1: active"> + <method description="selected method"> + <value>mode_1</value> + </method> + </defueling_mode> + <passengers_boarding_mode description="selector mode_0: by_default_method (each row at a time), mode_1: window to aisle"> + <method description="selected method"> + <value>mode_0</value> + </method> + </passengers_boarding_mode> + </calculation_methods> + </basic> + </standard> + </tube_and_wing> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf_default.xml b/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf_default.xml new file mode 100644 index 0000000..b5dfd2b --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/weightAndBalanceAnalysis_conf_default.xml @@ -0,0 +1,96 @@ +<?xml version="1.0" encoding="UTF-8" ?> + <module_configuration_file Name="Weight and Balance Configuration"> <!-- Change naming according to module name --> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>template.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../projects/CSR/CSR-02/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>2</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <html_output description="Switch to generate a HTML report ('true': On, 'false': Off)"> + <value>true</value> + </html_output> + <xml_output description="Switch to export module specific data to XML ('true': On, 'false': Off)"> + <value>false</value> + </xml_output> + <tex_output description="Switch to generate a TeX report ('true': On, 'false': Off)"> + <value>false</value> + </tex_output> + <info_file_output description="Switch to generate info files containing inputs, outputs and gui settings (False: Off, True: On)"> + <value>false</value> + </info_file_output> + <gnuplot_script_name description="Specify the name of the plot file"> + <value>weightAndBalanceAnalysis_plot.plt</value> + </gnuplot_script_name> + <log_file_name description="Specify the name of the log file"> + <value>weightAndBalanceAnalysis.log</value> + </log_file_name> + <inkscape_path description="Path to the inkscape application (DEFAULT: Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application (DEFAULT: Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings description="program settings"> + <tube_and_wing description="weight and balance for tube and wing"> + <category description="selector for category: standard, ..."> + <value>standard</value> + </category> + <standard description="standard weight and balance"> + <method description="selector for method: basic, ..."> + <value>basic</value> + </method> + <basic description="Basic configuration"> + <calculation_methods description="calculation methods for basic configuration"> + <inertia description="selector mode_0: by_lth_table, mode_1: by_components"> + <method description="selected method"> + <value>mode_0</value> + </method> + </inertia> + <maximum_landing_mass description="selector mode_0: by_default_method (OME-Payload-Reserve_fuel), mode_1: by_regression_rwth"> + <method description="selected method"> + <value>mode_1</value> + </method> + </maximum_landing_mass> + <refueling_mode description="selector mode_0: by_default_method (design mission), mode_1: ferry range"> + <method description="selected method"> + <value>mode_0</value> + </method> + </refueling_mode> + <defueling_mode description="selector mode_0: by_default_method (design mission), mode_1: active"> + <method description="selected method"> + <value>mode_1</value> + </method> + </defueling_mode> + <passengers_boarding_mode description="selector mode_0: by_default_method (each row at a time), mode_1: window to aisle"> + <method description="selected method"> + <value>mode_0</value> + </method> + </passengers_boarding_mode> + </calculation_methods> + </basic> + </standard> + </tube_and_wing> + </program_settings> + </module_configuration_file> diff --git a/UnicadoGUI/Backend/xml_configs/wingDesign_conf.xml b/UnicadoGUI/Backend/xml_configs/wingDesign_conf.xml new file mode 100644 index 0000000..a413da7 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/wingDesign_conf.xml @@ -0,0 +1,731 @@ +<?xml version="1.0" encoding="utf-8"?> +<module_configuration_file name="wingDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>csmr-2020.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../../rAIRCRAFTREFERENCES/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>wing_design.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings> + <modes description="mode selection"> + <design_mode description="selector mode_0: design, mode_1: redesign (axml must hold a wing)"> + <value>mode_0</value> + </design_mode> + </modes> + <tube_and_wing description="settings for tube and wing (TAW)"> + <wing_configuration description="selector mode_0: cantilever"> + <value>mode_0</value> + </wing_configuration> + <cantilever description="cantilever design information"> + <calculation_methods description="calculation methods for specific parameter"> + <wing_area description="wing area calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_loading_and_mtom"> + <value>mode_1</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <wing_area description="wing area"> + <value>126.34</value> + <unit>m^2</unit> + <lower_boundary>50.0</lower_boundary> + <upper_boundary>5000.0</upper_boundary> + </wing_area> + </mode_0> + </parameters> + </wing_area> + <sweep description="sweep calculation method"> + <method description="selector mode_0: user_defined, mode_1: drag_divergence"> + <value>mode_0</value> + </method> + <parameters description="sweep method parameters"> + <mode_0 description="user_defined"> + <sweep_angle description="sweep angle at quarter chord"> + <value>25</value> + <unit>deg</unit> + <lower_boundary>-60</lower_boundary> + <upper_boundary>60</upper_boundary> + </sweep_angle> + </mode_0> + <mode_1 description="drag_divergence"> + <korn_technology_factor description="technology factor"> + <value>0.96</value> + <unit>1</unit> + <lower_boundary>0.85</lower_boundary> + <upper_boundary>0.96</upper_boundary> + </korn_technology_factor> + <delta_drag_divergence_to_mach_design description="offset between mach design and drag divergence"> + <value>0.02</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>0.03</upper_boundary> + </delta_drag_divergence_to_mach_design> + </mode_1> + </parameters> + </sweep> + <taper_ratio description="taper ratio calculation method"> + <method description="selector mode_0: user_defined, mode_1: howe"> + <value>mode_1</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <taper_ratio description="taper ratio of overall wing"> + <value>0.17</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </taper_ratio> + </mode_0> + </parameters> + </taper_ratio> + <dihedral description="dihedral calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_wing_position_and_quarter_chord_sweep"> + <value>mode_1</value> + </method> + <parameters description="parameters for methods"> + <mode_0 description="user_defined"> + <dihedral_angle description="dihedral angle"> + <value>4</value> + <unit>deg</unit> + <lower_boundary>-20</lower_boundary> + <upper_boundary>20</upper_boundary> + </dihedral_angle> + </mode_0> + <mode_1 description="by_wing_position_and_quarter_chord_sweep"> + <dihedral_limitation description="selector mode_0: raymer, mode_1: howe"> + <value>mode_0</value> + </dihedral_limitation> + </mode_1> + </parameters> + </dihedral> + <aspect_ratio description="aspect ratio calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_pitch_up_limit_function"> + <value>mode_1</value> + </method> + <parameters description="Mode parameters"> + <mode_0 description="user_defined"> + <aspect_ratio description="user aspect ratio"> + <value>11.0</value> + <unit>1</unit> + <lower_boundary>6</lower_boundary> + <upper_boundary>15</upper_boundary> + </aspect_ratio> + </mode_0> + </parameters> + </aspect_ratio> + <relative_kink_position description="relative kink position method"> + <method description="selector mode_0: user_defined, mode_1: based_on_landing_gear_track"> + <value>mode_0</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <relative_kink_position description="relative to half span - only used if low wing and wing mounted landing gear"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.25</lower_boundary> + <upper_boundary>0.38</upper_boundary> + </relative_kink_position> + <maximum_inner_trailing_edge_sweep description="maximum inner trailing edge sweep - sets maximum possible inner trailing edge sweep"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>20.0</upper_boundary> + </maximum_inner_trailing_edge_sweep> + </mode_0> + <mode_1> + <initial_relative_kink_position description="relative to half span - only used if low wing and wing mounted landing gear - initial value -> will change over iteration"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.25</lower_boundary> + <upper_boundary>0.38</upper_boundary> + </initial_relative_kink_position> + <maximum_inner_trailing_edge_sweep description="maximum inner trailing edge sweep - sets maximum possible inner trailing edge sweep"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>20.0</upper_boundary> + </maximum_inner_trailing_edge_sweep> + </mode_1> + </parameters> + </relative_kink_position> + <wing_profile_and_thickness_distribution description="wing profile calculation methods"> + <method description="selector mode_0: user_defined, mode_1: torenbeek_jenkinson"> + <value>mode_1</value> + </method> + <parameters description="wing profile parameters"> + <mode_0 description="user_defined - thickness to chord ratio's must be from root to tip - linear interpolation"> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="0"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.16</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="1"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.13</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="2"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.12</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.45</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="3"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.11</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + </mode_0> + <mode_1 description="torenbeek_jenkinson"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <max_thickness_to_chord_ratio description="maximum thickness to chord ratio - will be applied at root inner wing"> + <value>0.15</value> + <unit>1</unit> + <lower_boundary>0.10</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </max_thickness_to_chord_ratio> + <airfoil_critical_factor description="factor to describe technology factor of airfoil - conventional 1.0, high speed 1960-1970 technology (peaky) airfoils 1.05, supercritical airfoils 1.12 - 1.15"> + <value>1.12</value> + <unit>1</unit> + <lower_boundary>1.0</lower_boundary> + <upper_boundary>1.15</upper_boundary> + </airfoil_critical_factor> + </mode_1> + </parameters> + </wing_profile_and_thickness_distribution> + <mass description="mass calculation methods"> + <method description="selector mode_0: flops, mode_1: chiozzotto_wer"> + <value>mode_0</value> + </method> + <parameters> + <mode_0 description="flops"> + <fstrt description="wing strut bracing factor from 0.0 (no strut) to 1.0 (full benefit from strut bracing)"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </fstrt> + <faert description="aeroelastic tailoring factor from 0.0 (no tailoring) to 1.0 (maximum tailoring)"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </faert> + <fcomp description="composite utilization factor from 0.0 (no composites) to 1.0 (maximum use of composites)"> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </fcomp> + </mode_0> + <mode_1 description="chiozzotto_wer"> + <technology_factor description="technology factor for wing mass: factor below 1 -> higher technology level (less weight), factor above 1 lower technology level (higher weight)"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.7</lower_boundary> + <upper_boundary>1.3</upper_boundary> + </technology_factor> + <material description="material options: AL (Aluminium), CFRP (Carbon fiber reinforced plastic)"> + <value>AL</value> + </material> + </mode_1> + </parameters> + </mass> + <control_devices description="control devices calculation method"> + <method description="selector mode_0: user_defined, mode_1: empirical"> + <value>mode_1</value> + </method> + <parameters description="control device method parameters"> + <mode_0 description="user_defined parameters"> + <control_device ID="0" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>aileron</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.95</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="1" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>slat</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.9</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="2" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>fowler</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="3" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>spoiler</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.65</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.65</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + </mode_0> + <mode_1 description="empirical parameters"> + <high_lift_device_type_leading_edge description="slat, krueger, droop_nose, morphing_droop_nose"> + <value>slat</value> + </high_lift_device_type_leading_edge> + <high_lift_device_type_trailing_edge description="flaperon, droop_aileron, flap_plain, flap_fowler, flap_fowler_double_slotted, flap_fowler_triple_slotted"> + <value>flap_fowler</value> + </high_lift_device_type_trailing_edge> + </mode_1> + </parameters> + </control_devices> + <spars description="spars calculation method"> + <method description="selector mode_0: user_defined"> + <value>mode_0</value> + </method> + <parameters description="spars method parameters"> + <mode_0 description="user_defined parameters"> + <spar ID="0" description="component spar"> + <name description="name of spar"> + <value>front_spar</value> + </name> + <position description="chord relative position of spar"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>1.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + <spar ID="1" description="component spar"> + <name description="name of spar"> + <value>rear_spar</value> + </name> + <position description="chord relative position of spar"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>1</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + </mode_0> + </parameters> + </spars> + </calculation_methods> + </cantilever> + </tube_and_wing> + <blended_wing_body> + <fidelity_selection description="selection of fidelity level"> + <value>low</value> + </fidelity_selection> + <low_fidelity></low_fidelity> + </blended_wing_body> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Backend/xml_configs/wingDesign_conf_default.xml b/UnicadoGUI/Backend/xml_configs/wingDesign_conf_default.xml new file mode 100644 index 0000000..0e42f60 --- /dev/null +++ b/UnicadoGUI/Backend/xml_configs/wingDesign_conf_default.xml @@ -0,0 +1,732 @@ +<?xml version="1.0" encoding="utf-8" ?> +<module_configuration_file name="wingDesign_conf.xml"> + <control_settings description="General control settings for this tool"> + <aircraft_exchange_file_name description="Specify the name of the exchange file"> + <value>csmr-2020.xml</value> + </aircraft_exchange_file_name> + <aircraft_exchange_file_directory description="Specify the direction in which the aircraft exchange file can be found"> + <value>../../rAIRCRAFTREFERENCES/</value> + </aircraft_exchange_file_directory> + <own_tool_level description="Specify the tool level of this tool"> + <value>3</value> + </own_tool_level> + <console_output description="Selector to specify the console output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </console_output> + <log_file_output description="Selector to specify the log file output ('mode_0': Off, 'mode_1': only out/err/warn, 'mode_2': 1 + info, 'mode_3': 2 + debug)"> + <value>mode_1</value> + </log_file_output> + <plot_output description="Specify the way plotting shall be handled"> + <enable description="Switch to enable plotting ('true': On, 'false': Off)"> + <value>true</value> + </enable> + <copy_plotting_files description="Switch if plotting files shall be copied ('true': On, 'false': Off)"> + <value>true</value> + </copy_plotting_files> + <delete_plotting_files_from_tool_folder description="Switch if plotting files shall be deleted from folder ('true': On, 'false': Off)"> + <value>true</value> + </delete_plotting_files_from_tool_folder> + </plot_output> + <report_output description="Switch to generate an HTML report ('true': On, 'false': Off)"> + <value>true</value> + </report_output> + <tex_report description="Switch to generate a Tex report ('true': On, 'false': Off)"> + <value>true</value> + </tex_report> + <write_info_files description="Switch to generate info files ('true': On, 'false': Off)"> + <value>false</value> + </write_info_files> + <gnuplot_script description="Specify the name of the plot file"> + <value>TOOLNAME_plot.plt</value> + </gnuplot_script> + <log_file description="Specify the name of the log file"> + <value>wing_design.log</value> + </log_file> + <inkscape_path description="Path to the inkscape application ('DEFAULT': Use inkscape from the UNICADO repo structure)"> + <value>DEFAULT</value> + </inkscape_path> + <gnuplot_path description="Path to the gnuplot application ('DEFAULT': Use gnuplot from the UNICADO repo structure)"> + <value>DEFAULT</value> + </gnuplot_path> + </control_settings> + <program_settings> + <modes description="mode selection"> + <design_mode description="selector mode_0: design, mode_1: redesign (axml must hold a wing)"> + <value>mode_0</value> + </design_mode> + </modes> + <tube_and_wing description="settings for tube and wing (TAW)"> + <wing_configuration description="selector mode_0: cantilever"> + <value>mode_0</value> + </wing_configuration> + <cantilever description="cantilever design information"> + <calculation_methods description="calculation methods for specific parameter"> + <wing_area description="wing area calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_loading_and_mtom"> + <value>mode_1</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <wing_area description="wing area"> + <value>126.34</value> + <unit>m^2</unit> + <lower_boundary>50.0</lower_boundary> + <upper_boundary>5000.0</upper_boundary> + </wing_area> + </mode_0> + </parameters> + </wing_area> + <sweep description="sweep calculation method"> + <method description="selector mode_0: user_defined, mode_1: drag_divergence"> + <value>mode_0</value> + </method> + <parameters description="sweep method parameters"> + <mode_0 description="user_defined"> + <sweep_angle description="sweep angle at quarter chord"> + <value>25</value> + <unit>deg</unit> + <lower_boundary>-60</lower_boundary> + <upper_boundary>60</upper_boundary> + </sweep_angle> + </mode_0> + <mode_1 description="drag_divergence"> + <korn_technology_factor description="technology factor"> + <value>0.96</value> + <unit>1</unit> + <lower_boundary>0.85</lower_boundary> + <upper_boundary>0.96</upper_boundary> + </korn_technology_factor> + <delta_drag_divergence_to_mach_design description="offset between mach design and drag divergence"> + <value>0.02</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>0.03</upper_boundary> + </delta_drag_divergence_to_mach_design> + </mode_1> + </parameters> + </sweep> + <taper_ratio description="taper ratio calculation method"> + <method description="selector mode_0: user_defined, mode_1: howe"> + <value>mode_1</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <taper_ratio description="taper ratio of overall wing"> + <value>0.17</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </taper_ratio> + </mode_0> + </parameters> + </taper_ratio> + <dihedral description="dihedral calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_wing_position_and_quarter_chord_sweep"> + <value>mode_1</value> + </method> + <parameters description="parameters for methods"> + <mode_0 description="user_defined"> + <dihedral_angle description="dihedral angle"> + <value>4</value> + <unit>deg</unit> + <lower_boundary>-20</lower_boundary> + <upper_boundary>20</upper_boundary> + </dihedral_angle> + </mode_0> + <mode_1 description="by_wing_position_and_quarter_chord_sweep"> + <dihedral_limitation description="selector mode_0: raymer, mode_1: howe"> + <value>mode_0</value> + </dihedral_limitation> + </mode_1> + </parameters> + </dihedral> + <aspect_ratio description="aspect ratio calculation method"> + <method description="selector mode_0: user_defined, mode_1: by_pitch_up_limit_function"> + <value>mode_1</value> + </method> + <parameters description="Mode parameters"> + <mode_0 description="user_defined"> + <aspect_ratio description="user aspect ratio"> + <value>11.0</value> + <unit>1</unit> + <lower_boundary>6</lower_boundary> + <upper_boundary>15</upper_boundary> + </aspect_ratio> + </mode_0> + </parameters> + </aspect_ratio> + <relative_kink_position description="relative kink position method"> + <method description="selector mode_0: user_defined, mode_1: based_on_landing_gear_track"> + <value>mode_0</value> + </method> + <parameters> + <mode_0 description="user_defined"> + <relative_kink_position description="relative to half span - only used if low wing and wing mounted landing gear"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.25</lower_boundary> + <upper_boundary>0.38</upper_boundary> + </relative_kink_position> + <maximum_inner_trailing_edge_sweep description="maximum inner trailing edge sweep - sets maximum possible inner trailing edge sweep"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>20.0</upper_boundary> + </maximum_inner_trailing_edge_sweep> + </mode_0> + <mode_1> + <initial_relative_kink_position description="relative to half span - only used if low wing and wing mounted landing gear - initial value -> will change over iteration"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.25</lower_boundary> + <upper_boundary>0.38</upper_boundary> + </initial_relative_kink_position> + <maximum_inner_trailing_edge_sweep description="maximum inner trailing edge sweep - sets maximum possible inner trailing edge sweep"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>20.0</upper_boundary> + </maximum_inner_trailing_edge_sweep> + </mode_1> + </parameters> + </relative_kink_position> + <wing_profile_and_thickness_distribution description="wing profile calculation methods"> + <method description="selector mode_0: user_defined, mode_1: torenbeek_jenkinson"> + <value>mode_1</value> + </method> + <parameters description="wing profile parameters"> + <mode_0 description="user_defined - thickness to chord ratio's must be from root to tip - linear interpolation"> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="0"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.16</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="1"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.13</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.3</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="2"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.12</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>0.45</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + <wing_profile_and_thickness description="wing profile and thickness at half span" ID="3"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <thickness_to_chord description="Thickness to chord ratio"> + <ratio description="thickness to chord ratio value"> + <value>0.11</value> + <unit>1</unit> + <lower_boundary>0.05</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </ratio> + <at_half_span description="thickness to chord ratio value at half span"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </at_half_span> + </thickness_to_chord> + </wing_profile_and_thickness> + </mode_0> + <mode_1 description="torenbeek_jenkinson"> + <wing_profile description="wing profile"> + <value>F15</value> + </wing_profile> + <max_thickness_to_chord_ratio description="maximum thickness to chord ratio - will be applied at root inner wing"> + <value>0.15</value> + <unit>1</unit> + <lower_boundary>0.10</lower_boundary> + <upper_boundary>0.40</upper_boundary> + </max_thickness_to_chord_ratio> + <airfoil_critical_factor description="factor to describe technology factor of airfoil - conventional 1.0, high speed 1960-1970 technology (peaky) airfoils 1.05, supercritical airfoils 1.12 - 1.15"> + <value>1.12</value> + <unit>1</unit> + <lower_boundary>1.0</lower_boundary> + <upper_boundary>1.15</upper_boundary> + </airfoil_critical_factor> + </mode_1> + </parameters> + </wing_profile_and_thickness_distribution> + <mass description="mass calculation methods"> + <method description="selector mode_0: flops, mode_1: chiozzotto_wer"> + <value>mode_0</value> + </method> + <parameters> + <mode_0 description="flops"> + <fstrt description="wing strut bracing factor from 0.0 (no strut) to 1.0 (full benefit from strut bracing)"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </fstrt> + <faert description="aeroelastic tailoring factor from 0.0 (no tailoring) to 1.0 (maximum tailoring)"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </faert> + <fcomp description="composite utilization factor from 0.0 (no composites) to 1.0 (maximum use of composites)"> + <value>0.5</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </fcomp> + </mode_0> + <mode_1 description="chiozzotto_wer"> + <technology_factor description="technology factor for wing mass: factor below 1 -> higher technology level (less weight), factor above 1 lower technology level (higher weight)"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.7</lower_boundary> + <upper_boundary>1.3</upper_boundary> + </technology_factor> + <material description="material options: AL (Aluminium), CFRP (Carbon fiber reinforced plastic)"> + <value>AL</value> + </material> + </mode_1> + </parameters> + </mass> + <control_devices description="control devices calculation method"> + <method description="selector mode_0: user_defined, mode_1: empirical"> + <value>mode_1</value> + </method> + <parameters description="control device method parameters"> + <mode_0 description="user_defined parameters"> + <control_device ID="0" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>aileron</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.95</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="1" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>slat</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>-25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.9</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="2" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>fowler</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>25.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.7</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>1.0</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + <control_device ID="3" description="control device"> + <type description="control device type - aileron, rudder, elevator, slat, ..."> + <value>spoiler</value> + </type> + <deflection description="maximum positive and negative deflection of control device"> + <full_negative_deflection description="full negative deflection"> + <value>0.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_negative_deflection> + <full_positive_deflection description="full positive deflection"> + <value>10.0</value> + <unit>deg</unit> + <lower_boundary>-25</lower_boundary> + <upper_boundary>25</upper_boundary> + </full_positive_deflection> + </deflection> + <position description="chord relative position of control device"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>0.65</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.65</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.8</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </control_device> + </mode_0> + <mode_1 description="empirical parameters"> + <high_lift_device_type_leading_edge description="slat, krueger, droop_nose, morphing_droop_nose"> + <value>slat</value> + </high_lift_device_type_leading_edge> + <high_lift_device_type_trailing_edge description="flaperon, droop_aileron, flap_plain, flap_fowler, flap_fowler_double_slotted, flap_fowler_triple_slotted"> + <value>flap_fowler</value> + </high_lift_device_type_trailing_edge> + </mode_1> + </parameters> + </control_devices> + <spars description="spars calculation method"> + <method description="selector mode_0: user_defined"> + <value>mode_0</value> + </method> + <parameters description="spars method parameters"> + <mode_0 description="user_defined parameters"> + <spar ID="0" description="component spar"> + <name description="name of spar"> + <value>front_spar</value> + </name> + <position description="chord relative position of spar"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>1.</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.2</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + <spar ID="1" description="component spar"> + <name description="name of spar"> + <value>rear_spar</value> + </name> + <position description="chord relative position of spar"> + <inner_position description="relative inner position"> + <spanwise description="relative spanwise position"> + <value>0.0</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </inner_position> + <outer_position description="relative outer position"> + <spanwise description="relative spanwise position"> + <value>1</value> + <unit>1</unit> + <lower_boundary>0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </spanwise> + <chord description="control device chord position"> + <from description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </from> + <to description="relative chord position"> + <value>0.6</value> + <unit>1</unit> + <lower_boundary>0.0</lower_boundary> + <upper_boundary>1.0</upper_boundary> + </to> + </chord> + </outer_position> + </position> + </spar> + </mode_0> + </parameters> + </spars> + </calculation_methods> + </cantilever> + </tube_and_wing> + <blended_wing_body> + <fidelity_selection description="selection of fidelity level"> + <value>low</value> + </fidelity_selection> + <low_fidelity> + </low_fidelity> + </blended_wing_body> + </program_settings> +</module_configuration_file> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/.npmrc b/UnicadoGUI/Frontend/.npmrc new file mode 100644 index 0000000..b6f27f1 --- /dev/null +++ b/UnicadoGUI/Frontend/.npmrc @@ -0,0 +1 @@ +engine-strict=true diff --git a/UnicadoGUI/Frontend/README.md b/UnicadoGUI/Frontend/README.md new file mode 100644 index 0000000..5ce6766 --- /dev/null +++ b/UnicadoGUI/Frontend/README.md @@ -0,0 +1,38 @@ +# create-svelte + +Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/main/packages/create-svelte). + +## Creating a project + +If you're seeing this, you've probably already done this step. Congrats! + +```bash +# create a new project in the current directory +npm create svelte@latest + +# create a new project in my-app +npm create svelte@latest my-app +``` + +## Developing + +Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server: + +```bash +npm run dev + +# or start the server and open the app in a new browser tab +npm run dev -- --open +``` + +## Building + +To create a production version of your app: + +```bash +npm run build +``` + +You can preview the production build with `npm run preview`. + +> To deploy your app, you may need to install an [adapter](https://kit.svelte.dev/docs/adapters) for your target environment. diff --git a/UnicadoGUI/Frontend/package-lock.json b/UnicadoGUI/Frontend/package-lock.json new file mode 100644 index 0000000..b61a62d --- /dev/null +++ b/UnicadoGUI/Frontend/package-lock.json @@ -0,0 +1,2244 @@ +{ + "name": "unicadowebapp", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "unicadowebapp", + "version": "0.0.1", + "dependencies": { + "@rollup/plugin-dsv": "^3.0.2", + "@sveltestrap/sveltestrap": "^6.2.4", + "layercake": "^8.0.2", + "svelte-chartjs": "^3.1.5", + "svelte-drag-and-drop-actions": "^1.0.2", + "svelte-drag-drop-touch": "^0.1.9", + "svelte-sortable-flat-list-view": "^1.0.0" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.2.10", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.22.tgz", + "integrity": "sha512-Wf963MzWtA2sjrNt+g18IAln9lKnlRp+K2eH4jjIoF1wYeq3aMREpG09xhlhdzS0EjwU7qmUJYangWa+151vZw==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "peer": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@polka/url": { + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", + "dev": true + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/plugin-dsv": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@rollup/plugin-dsv/-/plugin-dsv-3.0.4.tgz", + "integrity": "sha512-F7XgBf/kAFvdiheh5EE8uPzn8hxYpAy+688tTy5eUAbJMJraS5ftPjRFPlZuzsrhN3YAeRnC8Fnd2WYbg3Bvvw==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/d3-dsv": "^3.0.0", + "d3-dsv": "2.0.0", + "tosource": "^2.0.0-alpha.3" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.10.0.tgz", + "integrity": "sha512-/MeDQmcD96nVoRumKUljsYOLqfv1YFJps+0pTrb2Z9Nl/w5qNUysMaWQsrd1mvAlNT4yza1iVyIu4Q4AgF6V3A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.10.0.tgz", + "integrity": "sha512-lvu0jK97mZDJdpZKDnZI93I0Om8lSDaiPx3OiCk0RXn3E8CMPJNS/wxjAvSJJzhhZpfjXsjLWL8LnS6qET4VNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.10.0.tgz", + "integrity": "sha512-uFpayx8I8tyOvDkD7X6n0PriDRWxcqEjqgtlxnUA/G9oS93ur9aZ8c8BEpzFmsed1TH5WZNG5IONB8IiW90TQg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.10.0.tgz", + "integrity": "sha512-nIdCX03qFKoR/MwQegQBK+qZoSpO3LESurVAC6s6jazLA1Mpmgzo3Nj3H1vydXp/JM29bkCiuF7tDuToj4+U9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.10.0.tgz", + "integrity": "sha512-Fz7a+y5sYhYZMQFRkOyCs4PLhICAnxRX/GnWYReaAoruUzuRtcf+Qnw+T0CoAWbHCuz2gBUwmWnUgQ67fb3FYw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.10.0.tgz", + "integrity": "sha512-yPtF9jIix88orwfTi0lJiqINnlWo6p93MtZEoaehZnmCzEmLL0eqjA3eGVeyQhMtxdV+Mlsgfwhh0+M/k1/V7Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.10.0.tgz", + "integrity": "sha512-9GW9yA30ib+vfFiwjX+N7PnjTnCMiUffhWj4vkG4ukYv1kJ4T9gHNg8zw+ChsOccM27G9yXrEtMScf1LaCuoWQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.10.0.tgz", + "integrity": "sha512-X1ES+V4bMq2ws5fF4zHornxebNxMXye0ZZjUrzOrf7UMx1d6wMQtfcchZ8SqUnQPPHdOyOLW6fTcUiFgHFadRA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.10.0.tgz", + "integrity": "sha512-w/5OpT2EnI/Xvypw4FIhV34jmNqU5PZjZue2l2Y3ty1Ootm3SqhI+AmfhlUYGBTd9JnpneZCDnt3uNOiOBkMyw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.10.0.tgz", + "integrity": "sha512-q/meftEe3QlwQiGYxD9rWwB21DoKQ9Q8wA40of/of6yGHhZuGfZO0c3WYkN9dNlopHlNT3mf5BPsUSxoPuVQaw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.10.0.tgz", + "integrity": "sha512-NrR6667wlUfP0BHaEIKgYM/2va+Oj+RjZSASbBMnszM9k+1AmliRjHc3lJIiOehtSSjqYiO7R6KLNrWOX+YNSQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.10.0.tgz", + "integrity": "sha512-FV0Tpt84LPYDduIDcXvEC7HKtyXxdvhdAOvOeWMWbQNulxViH2O07QXkT/FffX4FqEI02jEbCJbr+YcuKdyyMg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.10.0.tgz", + "integrity": "sha512-OZoJd+o5TaTSQeFFQ6WjFCiltiYVjIdsXxwu/XZ8qRpsvMQr4UsVrE5UyT9RIvsnuF47DqkJKhhVZ2Q9YW9IpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@sveltejs/adapter-auto": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-3.1.1.tgz", + "integrity": "sha512-6LeZft2Fo/4HfmLBi5CucMYmgRxgcETweQl/yQoZo/895K3S9YWYN4Sfm/IhwlIpbJp3QNvhKmwCHbsqQNYQpw==", + "dev": true, + "dependencies": { + "import-meta-resolve": "^4.0.0" + }, + "peerDependencies": { + "@sveltejs/kit": "^2.0.0" + } + }, + "node_modules/@sveltejs/kit": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.5.0.tgz", + "integrity": "sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^0.6.0", + "devalue": "^4.3.2", + "esm-env": "^1.0.0", + "import-meta-resolve": "^4.0.0", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "mrmime": "^2.0.0", + "sade": "^1.8.1", + "set-cookie-parser": "^2.6.0", + "sirv": "^2.0.4", + "tiny-glob": "^0.2.9" + }, + "bin": { + "svelte-kit": "svelte-kit.js" + }, + "engines": { + "node": ">=18.13" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.3" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-3.0.2.tgz", + "integrity": "sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==", + "dev": true, + "dependencies": { + "@sveltejs/vite-plugin-svelte-inspector": "^2.0.0", + "debug": "^4.3.4", + "deepmerge": "^4.3.1", + "kleur": "^4.1.5", + "magic-string": "^0.30.5", + "svelte-hmr": "^0.15.3", + "vitefu": "^0.2.5" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltejs/vite-plugin-svelte-inspector": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte-inspector/-/vite-plugin-svelte-inspector-2.0.0.tgz", + "integrity": "sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.0.0 || >=20" + }, + "peerDependencies": { + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.0.0 || ^5.0.0-next.0", + "vite": "^5.0.0" + } + }, + "node_modules/@sveltestrap/sveltestrap": { + "version": "6.2.4", + "resolved": "https://registry.npmjs.org/@sveltestrap/sveltestrap/-/sveltestrap-6.2.4.tgz", + "integrity": "sha512-yjb4pF1lgMU4f5bkOOdPL56Hp9YgNOZks6NdQsPAKAxsR48GAAmNDvj1batxkmwbiofG80zWYG8pxAAcu6QKog==", + "dependencies": { + "@popperjs/core": "^2.11.8" + }, + "peerDependencies": { + "svelte": "^4.0.0 || ^5.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "dev": true + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/pug": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz", + "integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chart.js": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.2.tgz", + "integrity": "sha512-6GD7iKwFpP5kbSD4MeRRRlTnQvxfQREy36uEtm1hzHzcOqwWx0YEHuspuoNlslu+nciLIB7fjjsHkUv/FzFcOg==", + "peer": true, + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/code-red": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", + "integrity": "sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15", + "@types/estree": "^1.0.1", + "acorn": "^8.10.0", + "estree-walker": "^3.0.3", + "periscopic": "^3.1.0" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-2.0.0.tgz", + "integrity": "sha512-E+Pn8UJYx9mViuIUkoc93gJGGYut6mSDKy2+XaPwccwkRGlR+LO97L2VCCRjQivTwLHkSnAJG7yo00BWY6QM+w==", + "dependencies": { + "commander": "2", + "iconv-lite": "0.4", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json", + "csv2tsv": "bin/dsv2dsv", + "dsv2dsv": "bin/dsv2dsv", + "dsv2json": "bin/dsv2json", + "json2csv": "bin/json2dsv", + "json2dsv": "bin/json2dsv", + "json2tsv": "bin/json2dsv", + "tsv2csv": "bin/dsv2dsv", + "tsv2json": "bin/dsv2json" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.1.0.tgz", + "integrity": "sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/devalue": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.2.tgz", + "integrity": "sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==", + "dev": true + }, + "node_modules/dragdroptouch-bug-fixed": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/dragdroptouch-bug-fixed/-/dragdroptouch-bug-fixed-1.0.8.tgz", + "integrity": "sha512-moNgBeWMeUk4zhV3B+a4TZUPmHVJz+cvjWEXENLEU3toVnm3lpS+ZkSwVbBxArDUQ8HSm1qA0UmKWWy1y7nvng==" + }, + "node_modules/es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/esm-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", + "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", + "dev": true + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", + "dev": true + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", + "dev": true + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.0.0.tgz", + "integrity": "sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-reference": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz", + "integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/javascript-interface-library": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/javascript-interface-library/-/javascript-interface-library-0.1.14.tgz", + "integrity": "sha512-TSdQbLKqq6PcFk9M9Qk+l45rjqWfTMhSkvZVcByy1tKsDYDH+kblKu/FcVk4lWkeYXvcczX8NtPGdeyrZYEBrw==" + }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/layercake": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/layercake/-/layercake-8.0.2.tgz", + "integrity": "sha512-rkXJCXNev6kRxD0VCIDs9vnT2F91dtewqBlaK4K/njvgfyQj5NDHfyYmgqj6Y4wnbaNCMVUqhD1bq1NGzb6xfA==", + "dependencies": { + "d3-array": "^3.2.4", + "d3-color": "^3.1.0", + "d3-scale": "^4.0.2", + "d3-shape": "^3.2.0" + }, + "peerDependencies": { + "svelte": "3 - 4", + "typescript": "^5.0.2" + } + }, + "node_modules/locally-unique-id-generator": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/locally-unique-id-generator/-/locally-unique-id-generator-0.1.5.tgz", + "integrity": "sha512-cdISIqzCk2IiO9GIfL0oPyvOhz0tOetKOOasYWLfKHD7W/23EpWb12GymG0xCy8nhG+TMon5x+SS9PLaDd+avg==" + }, + "node_modules/locate-character": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", + "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" + }, + "node_modules/magic-string": { + "version": "0.30.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.7.tgz", + "integrity": "sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/rollup": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.10.0.tgz", + "integrity": "sha512-t2v9G2AKxcQ8yrG+WGxctBes1AomT0M4ND7jTFBCVPXQ/WFTvNSefIrNSmLKhIKBrvN8SG+CZslimJcT3W2u2g==", + "devOptional": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.10.0", + "@rollup/rollup-android-arm64": "4.10.0", + "@rollup/rollup-darwin-arm64": "4.10.0", + "@rollup/rollup-darwin-x64": "4.10.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.10.0", + "@rollup/rollup-linux-arm64-gnu": "4.10.0", + "@rollup/rollup-linux-arm64-musl": "4.10.0", + "@rollup/rollup-linux-riscv64-gnu": "4.10.0", + "@rollup/rollup-linux-x64-gnu": "4.10.0", + "@rollup/rollup-linux-x64-musl": "4.10.0", + "@rollup/rollup-win32-arm64-msvc": "4.10.0", + "@rollup/rollup-win32-ia32-msvc": "4.10.0", + "@rollup/rollup-win32-x64-msvc": "4.10.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dev": true, + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sander": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/sander/-/sander-0.5.1.tgz", + "integrity": "sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==", + "dev": true, + "dependencies": { + "es6-promise": "^3.1.2", + "graceful-fs": "^4.1.3", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.2" + } + }, + "node_modules/set-cookie-parser": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", + "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", + "dev": true + }, + "node_modules/sirv": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", + "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", + "dev": true, + "dependencies": { + "@polka/url": "^1.0.0-next.24", + "mrmime": "^2.0.0", + "totalist": "^3.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sorcery": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/sorcery/-/sorcery-0.11.0.tgz", + "integrity": "sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.14", + "buffer-crc32": "^0.2.5", + "minimist": "^1.2.0", + "sander": "^0.5.0" + }, + "bin": { + "sorcery": "bin/sorcery" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/svelte": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.10.tgz", + "integrity": "sha512-Ep06yCaCdgG1Mafb/Rx8sJ1QS3RW2I2BxGp2Ui9LBHSZ2/tO/aGLc5WqPjgiAP6KAnLJGaIr/zzwQlOo1b8MxA==", + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/estree": "^1.0.1", + "acorn": "^8.9.0", + "aria-query": "^5.3.0", + "axobject-query": "^4.0.0", + "code-red": "^1.0.3", + "css-tree": "^2.3.1", + "estree-walker": "^3.0.3", + "is-reference": "^3.0.1", + "locate-character": "^3.0.0", + "magic-string": "^0.30.4", + "periscopic": "^3.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/svelte-chartjs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/svelte-chartjs/-/svelte-chartjs-3.1.5.tgz", + "integrity": "sha512-ka2zh7v5FiwfAX1oMflZ0HkNkgjHjFqANgRyC+vNYXfxtx2ku68Zo+2KgbKeBH2nS1ThDqkIACPzGxy4T0UaoA==", + "peerDependencies": { + "chart.js": "^3.5.0 || ^4.0.0", + "svelte": "^4.0.0" + } + }, + "node_modules/svelte-check": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.4.tgz", + "integrity": "sha512-mY/dqucqm46p72M8yZmn81WPZx9mN6uuw8UVfR3ZKQeLxQg5HDGO3HHm5AZuWZPYNMLJ+TRMn+TeN53HfQ/vsw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.17", + "chokidar": "^3.4.1", + "fast-glob": "^3.2.7", + "import-fresh": "^3.2.1", + "picocolors": "^1.0.0", + "sade": "^1.7.4", + "svelte-preprocess": "^5.1.0", + "typescript": "^5.0.3" + }, + "bin": { + "svelte-check": "bin/svelte-check" + }, + "peerDependencies": { + "svelte": "^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0" + } + }, + "node_modules/svelte-coordinate-conversion": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/svelte-coordinate-conversion/-/svelte-coordinate-conversion-0.1.9.tgz", + "integrity": "sha512-9BBAoZ7U5psGxgYKd61DEFxou3MmWrW9xIGvgG1n+Jtg47ll/jpNYsiS8iy6fVu1Sfbq3TQF/cljqRKHwaOeeg==" + }, + "node_modules/svelte-device-info": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/svelte-device-info/-/svelte-device-info-0.1.15.tgz", + "integrity": "sha512-uBnHavXubd9SBJGq/O4ALMIIzOuro0nvYmg6u0ZzXbp8++CzhSZcVZ57eNcUqNS/dG08rR1Wl4TL2ZNyOhS+FQ==" + }, + "node_modules/svelte-drag-and-drop-actions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/svelte-drag-and-drop-actions/-/svelte-drag-and-drop-actions-1.0.2.tgz", + "integrity": "sha512-0T0Z0v5NFiPZlzP5/SrWnbDWCPSIZtyn07H7IwVgUku5v6A95FRySWhbGrBn0b/y+4oayh+VmkU2TqMEcoitTw==", + "dependencies": { + "javascript-interface-library": "^0.1.5", + "svelte-coordinate-conversion": "^0.1.6", + "svelte-drag-and-drop-actions": "^0.1.28", + "tslib": "^2.6.2" + } + }, + "node_modules/svelte-drag-and-drop-actions/node_modules/svelte-drag-and-drop-actions": { + "version": "0.1.35", + "resolved": "https://registry.npmjs.org/svelte-drag-and-drop-actions/-/svelte-drag-and-drop-actions-0.1.35.tgz", + "integrity": "sha512-v2XtENssLfX5BE41E5653emXSTHd1hHtEXtB2k8PbTQ0jC0iB/WdEx9SwWesoKXRLcvLN7WLDVnmuSB3g3BIeg==", + "dependencies": { + "javascript-interface-library": "^0.1.5", + "svelte-coordinate-conversion": "^0.1.6", + "svelte-drag-and-drop-actions": "^0.1.28" + } + }, + "node_modules/svelte-drag-drop-touch": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/svelte-drag-drop-touch/-/svelte-drag-drop-touch-0.1.9.tgz", + "integrity": "sha512-DWAMC+6xBRkl5OuVR7ze+znSKERlX9t9cx4/kzoWOnPwLFvv4g8YTtQxmO8wfWfETi9qgg/cnw58gmhZKY9vyw==", + "dependencies": { + "dragdroptouch-bug-fixed": "^1.0.8" + } + }, + "node_modules/svelte-hmr": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.3.tgz", + "integrity": "sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==", + "dev": true, + "engines": { + "node": "^12.20 || ^14.13.1 || >= 16" + }, + "peerDependencies": { + "svelte": "^3.19.0 || ^4.0.0" + } + }, + "node_modules/svelte-preprocess": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.3.tgz", + "integrity": "sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@types/pug": "^2.0.6", + "detect-indent": "^6.1.0", + "magic-string": "^0.30.5", + "sorcery": "^0.11.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">= 16.0.0", + "pnpm": "^8.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.10.2", + "coffeescript": "^2.5.1", + "less": "^3.11.3 || ^4.0.0", + "postcss": "^7 || ^8", + "postcss-load-config": "^2.1.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", + "pug": "^3.0.0", + "sass": "^1.26.8", + "stylus": "^0.55.0", + "sugarss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "svelte": "^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0", + "typescript": ">=3.9.5 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "coffeescript": { + "optional": true + }, + "less": { + "optional": true + }, + "postcss": { + "optional": true + }, + "postcss-load-config": { + "optional": true + }, + "pug": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/svelte-sortable-flat-list-view": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svelte-sortable-flat-list-view/-/svelte-sortable-flat-list-view-1.0.0.tgz", + "integrity": "sha512-UMDJA3hYf0ucqu6KSr2sS2OIyG6qObvrWwkKw6lSHMu7o5/eY9dA1jsbxAh8JqbzH/KDC1MwboJ2CRrcxiqI2Q==", + "dependencies": { + "javascript-interface-library": "^0.1.14", + "locally-unique-id-generator": "^0.1.3", + "svelte-coordinate-conversion": "^0.1.9", + "svelte-device-info": "^0.1.14", + "svelte-drag-and-drop-actions": "^0.1.35" + } + }, + "node_modules/svelte-sortable-flat-list-view/node_modules/svelte-drag-and-drop-actions": { + "version": "0.1.35", + "resolved": "https://registry.npmjs.org/svelte-drag-and-drop-actions/-/svelte-drag-and-drop-actions-0.1.35.tgz", + "integrity": "sha512-v2XtENssLfX5BE41E5653emXSTHd1hHtEXtB2k8PbTQ0jC0iB/WdEx9SwWesoKXRLcvLN7WLDVnmuSB3g3BIeg==", + "dependencies": { + "javascript-interface-library": "^0.1.5", + "svelte-coordinate-conversion": "^0.1.6", + "svelte-drag-and-drop-actions": "^0.1.28" + } + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dev": true, + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tosource": { + "version": "2.0.0-alpha.3", + "resolved": "https://registry.npmjs.org/tosource/-/tosource-2.0.0-alpha.3.tgz", + "integrity": "sha512-KAB2lrSS48y91MzFPFuDg4hLbvDiyTjOVgaK7Erw+5AmZXNq4sFRVn8r6yxSLuNs15PaokrDRpS61ERY9uZOug==", + "engines": { + "node": ">=10" + } + }, + "node_modules/totalist": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", + "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/vite": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.1.tgz", + "integrity": "sha512-wclpAgY3F1tR7t9LL5CcHC41YPkQIpKUGeIuT8MdNwNZr6OqOTLs7JX5vIHAtzqLWXts0T+GDrh9pN2arneKqg==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitefu": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", + "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "dev": true, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/UnicadoGUI/Frontend/package.json b/UnicadoGUI/Frontend/package.json new file mode 100644 index 0000000..af5e6bb --- /dev/null +++ b/UnicadoGUI/Frontend/package.json @@ -0,0 +1,32 @@ +{ + "name": "unicadowebapp", + "version": "0.0.1", + "private": true, + "scripts": { + "dev": "vite dev", + "build": "vite build", + "preview": "vite preview", + "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", + "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" + }, + "devDependencies": { + "@sveltejs/adapter-auto": "^3.0.0", + "@sveltejs/kit": "^2.0.0", + "@sveltejs/vite-plugin-svelte": "^3.0.0", + "svelte": "^4.2.10", + "svelte-check": "^3.6.0", + "tslib": "^2.4.1", + "typescript": "^5.0.0", + "vite": "^5.0.3" + }, + "type": "module", + "dependencies": { + "@rollup/plugin-dsv": "^3.0.2", + "@sveltestrap/sveltestrap": "^6.2.4", + "layercake": "^8.0.2", + "svelte-chartjs": "^3.1.5", + "svelte-drag-and-drop-actions": "^1.0.2", + "svelte-drag-drop-touch": "^0.1.9", + "svelte-sortable-flat-list-view": "^1.0.0" + } +} diff --git a/UnicadoGUI/Frontend/src/app.d.ts b/UnicadoGUI/Frontend/src/app.d.ts new file mode 100644 index 0000000..743f07b --- /dev/null +++ b/UnicadoGUI/Frontend/src/app.d.ts @@ -0,0 +1,13 @@ +// See https://kit.svelte.dev/docs/types#app +// for information about these interfaces +declare global { + namespace App { + // interface Error {} + // interface Locals {} + // interface PageData {} + // interface PageState {} + // interface Platform {} + } +} + +export {}; diff --git a/UnicadoGUI/Frontend/src/app.html b/UnicadoGUI/Frontend/src/app.html new file mode 100644 index 0000000..77a5ff5 --- /dev/null +++ b/UnicadoGUI/Frontend/src/app.html @@ -0,0 +1,12 @@ +<!doctype html> +<html lang="en"> + <head> + <meta charset="utf-8" /> + <link rel="icon" href="%sveltekit.assets%/favicon.png" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + %sveltekit.head% + </head> + <body data-sveltekit-preload-data="hover"> + <div style="display: contents">%sveltekit.body%</div> + </body> +</html> diff --git a/UnicadoGUI/Frontend/src/global.d.ts b/UnicadoGUI/Frontend/src/global.d.ts new file mode 100644 index 0000000..7c46b1e --- /dev/null +++ b/UnicadoGUI/Frontend/src/global.d.ts @@ -0,0 +1,3 @@ +/// <reference types="@sveltejs/kit" /> + +declare module '*.csv'; diff --git a/UnicadoGUI/Frontend/src/lib/index.ts b/UnicadoGUI/Frontend/src/lib/index.ts new file mode 100644 index 0000000..856f2b6 --- /dev/null +++ b/UnicadoGUI/Frontend/src/lib/index.ts @@ -0,0 +1 @@ +// place files you want to import through the `$lib` alias in this folder. diff --git a/UnicadoGUI/Frontend/src/routes/+layout.svelte b/UnicadoGUI/Frontend/src/routes/+layout.svelte new file mode 100644 index 0000000..924aa6c --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/+layout.svelte @@ -0,0 +1,73 @@ +<script lang="ts"> + import {Container, Image, Row, Styles, Col, Nav, NavItem, NavLink, Icon} from '@sveltestrap/sveltestrap'; +</script> +<Container fluid> + <Row class="flex-nowrap"> + <Col class="auto col-md-3 col-xl-2 px-sm-2 px-0 bg-dark" style="position: fixed"> + <div class="d-flex flex-column align-items-center align-items-sm-start px-3 pt-2 text-white min-vh-100"> + <a href="/" class="d-flex align-items-center pb-3 mb-md-0 me-md-auto text-white text-decoration-none"> + <Image fluid alt="" src="./favicon.png" style="max-width:20%;padding-right: 10px"/> + <span class="fs-2 d-none d-sm-inline">Unicado</span> + </a> + <Nav class="nav-pills flex-column mb-sm-auto mb-0 align-items-center align-items-sm-start " id="menu"> + <NavItem> + <NavLink href="/" class="align-middle px-0 text-light"> + <Icon name="house"></Icon> + <span class="ms-1 d-none d-sm-inline">Home</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/model" class="align-middle px-0 text-light"> + <Icon name="airplane"></Icon> + <span class="ms-1 d-none d-sm-inline">Aircraft Projects</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/graphs" class="align-middle px-0 text-light"> + <Icon name="graph-down"></Icon> + <span class="ms-1 d-none d-sm-inline">Graphs</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/reports" class="align-middle px-0 text-light"> + <Icon name="journal-richtext"></Icon> + <span class="ms-1 d-none d-sm-inline">Reports</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/logs" class="align-middle px-0 text-light"> + <Icon name="card-text"></Icon> + <span class="ms-1 d-none d-sm-inline">Logs</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/settings" class="align-middle px-0 text-light"> + <Icon name="gear"></Icon> + <span class="ms-1 d-none d-sm-inline">Settings</span> + </NavLink> + </NavItem> + </Nav> + <hr> + <Nav class="pb-4" style="width: 100%; display: flex; justify-content: space-between"> + <NavItem> + <NavLink href="/" class="align-middle text-light"> + <Icon name="box-arrow-in-right"></Icon> + <span class="ms-1 d-none d-sm-inline">Login</span> + </NavLink> + </NavItem> + <NavItem> + <NavLink href="/" class="align-middle text-light"> + <Icon name="question-circle"></Icon> + <span class="ms-1 d-none d-sm-inline">Help</span> + </NavLink> + </NavItem> + </Nav> + </div> + </Col> + <Col class="py-3" style="margin-left: 18%"> + <slot></slot> + </Col> + </Row> +</Container> + +<Styles/> diff --git a/UnicadoGUI/Frontend/src/routes/+page.svelte b/UnicadoGUI/Frontend/src/routes/+page.svelte new file mode 100644 index 0000000..d10b460 --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/+page.svelte @@ -0,0 +1,8 @@ +<script> + import {Styles} from "@sveltestrap/sveltestrap"; +</script> +<h1>Welcome to the UNICADO WebApp</h1> + +<p>Create new Project....<br>Open existing Project...</p> + +<Styles/> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/graphs/+page.svelte b/UnicadoGUI/Frontend/src/routes/graphs/+page.svelte new file mode 100644 index 0000000..89817bf --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/graphs/+page.svelte @@ -0,0 +1,48 @@ +<script> + //Dummy Page + + import {Styles} from "@sveltestrap/sveltestrap"; + import { LayerCake, Svg } from 'layercake'; + + import Line from './_components/Line.svelte'; + import Area from './_components/Area.svelte'; + import AxisX from './_components/AxisX.svelte'; + import AxisY from './_components/AxisY.svelte'; + + import points from './_data/points.csv'; + + const xKey = 'myX'; + const yKey = 'myY'; + + points.forEach((/** @type {{ [columnName: string]: number; }} */ row) => { + row[yKey] = +row[yKey]; + }); + +</script> +<h1>Welcome to the UNICADO WebApp</h1> +<div class="chart-container"> + <LayerCake + padding={{ right: 10, bottom: 20, left: 25 }} + x={xKey} + y={yKey} + yDomain={[0, null]} + data={points} + debug={true} + > + <Svg> + <AxisX /> + <AxisY /> + <Line /> + <Area /> + </Svg> + </LayerCake> +</div> + +<Styles/> +<style> + .chart-container { + width: 80%; + height: 80vh; + margin: 25px auto; + } +</style> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/logs/+page.svelte b/UnicadoGUI/Frontend/src/routes/logs/+page.svelte new file mode 100644 index 0000000..4882b2a --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/logs/+page.svelte @@ -0,0 +1,40 @@ +<script> + //Testpage to show logs + + import {Container, Styles, TabContent, TabPane} from "@sveltestrap/sveltestrap"; + import {onMount} from "svelte"; + let tabs = ["convergenceLoop", "calculatePolar","createMissionXML","empennageSizing","engineSizing","fuselageDesign","initialSizing","landingGearDesign","propulsionIntegration","wingDesign"] + let dict = {} + onMount(async ()=>{ + for (const element of tabs) { + const res = await fetch("http://127.0.0.1:8000/log/"+element+".log",{ cache: "no-cache" }); + await res.text().then(function (text) { + let lineBreak = "\n"; + text = text.split(lineBreak).reverse().join(lineBreak); + dict[element]= text; + }); + } + }) +</script> +<TabContent vertical pills> + {#each tabs as tab} + {#if tab =="convergenceLoop"} + <TabPane tabId="{tab}" tab={tab} active> + <Container md> + <p style="white-space: pre-line"> + {dict[tab]} + </p> + </Container> + </TabPane> + {:else} + <TabPane tabId={tab} tab={tab}> + <Container md> + <p style="white-space: pre-line"> + {dict[tab]} + </p> + </Container> + </TabPane> + {/if} + {/each} +</TabContent> +<Styles/> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/model/+page.svelte b/UnicadoGUI/Frontend/src/routes/model/+page.svelte new file mode 100644 index 0000000..bf0d19b --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/model/+page.svelte @@ -0,0 +1,618 @@ +<script lang="ts"> + //Prototyp Page for a modular Simulationmodelpage + + import { + Alert, + Button, + ButtonGroup, + Col, + Container, Form, FormGroup, + Icon, Input, InputGroup, InputGroupText, Label, + ListGroup, + ListGroupItem, Modal, ModalBody, ModalFooter, ModalHeader, + Row, + Styles, Tooltip + } from "@sveltestrap/sveltestrap"; + import {onMount} from "svelte"; + import InPlaceEdit from './InPlaceEdit.svelte'; + + //Interface for Ui-elements in module settings and it's implementations + interface SettingsUi { + type: string; + label: string; + description: string; + bind: string; + } + + class SettingsSwitch implements SettingsUi { + readonly type = "switch"; + label: string; + description: string; + bind: string; + + constructor(label: string, description: string, bind: string) { + this.bind = bind; + this.label = label; + this.description = description; + } + } + + class SettingsSelector implements SettingsUi { + readonly type = "selector"; + label: string; + description: string; + bind: string; + options: string[]; + + constructor(label: string, description: string, bind: string, options: string[]) { + this.bind = bind; + this.label = label; + this.description = description; + this.options = options; + } + } + + class SettingsTextfield implements SettingsUi { + readonly type = "textfield"; + label: string; + description: string; + bind: string; + input: string; + + constructor(label: string, description: string, bind: string, input: string) { + this.bind = bind; + this.label = label; + this.description = description; + this.input = input; + } + } + + class SettingsNumberfield implements SettingsUi { + readonly type = "numberfield"; + label: string; + description: string; + bind: string; + unit: string = '-'; + max: number = Number.POSITIVE_INFINITY; + min: number = Number.NEGATIVE_INFINITY; + + constructor(label: string, description: string, bind: string) { + this.bind = bind; + this.label = label; + this.description = description; + } + setMax(max:number){ + this.max=max; + } + setMin(min:number){ + this.min=min; + } + setUnit(unit:string){ + this.unit=unit; + } + } + + class SettingsLabel { + readonly type = "label"; + label: string; + + constructor(label: string) { + this.label = label; + } + } + + //template for datatype of dictionaries, only to avoid errors in Typescript + type dictionary = { + [key: string]: any + } + + /* Dictionary with information of the module + * including the json response and the settings elements it needs to implement in the dom + */ + let modalModule: dictionary = { + name: '', + response: {}, + html: [] + } + + //Class for a group of modules + class group { + name: string; + loop: string = 'true'; + loopsize: number; + modules: string[] = []; + + constructor(name: string, loopsize: number) { + this.name = name; + this.loopsize = loopsize; + } + } + + //Index for drag and drop + let dropIndex: number | null = null; + + //Flag for changes in simulation model by the user + let changed = false; + + //Flag for Alarm which is invoked by changes + let saveAlert = false; + + //Flag for changes in settings modal by the user + let modalChanged: boolean = false; + + //Array of all the groups of the model + let groups: group[] = []; + + //Array of available modules to choose + let modules: string[] = []; + + //Variables and Methods for modals + let open: boolean = false; + let loopOpen: boolean = false; + let modulesModalOpen: boolean = false; + let modulesModalIndex: number; + const toggle = () => (open = !open); + const toggleModules = () => (modulesModalOpen = !modulesModalOpen); + const toggleLoop = () => (loopOpen = !loopOpen); + + onMount(async () => { + await loadAvailableModules(); + await loadModel(); + }) + + //Function for loading list of available modules from server + async function loadAvailableModules() { + //transitionally reading from convergenceloop_conf.xml + //TO-DO: replace with something more recent + const res = await fetch("http://127.0.0.1:8000//modules/selection"); + const data = await res.json(); + modules = data['availableModules']; + modules = Array.from(new Set(modules)); + modules.sort(); + } + + //Function for loading the recent saved model from server + async function loadModel() { + const res = await fetch("http://127.0.0.1:8000/modules"); + const data = await res.json(); + groups = data["groups"]; + changed = false; + changed = changed; + saveAlert = false; + saveAlert = saveAlert; + } + + async function startModel() { + //dummy-Function + } + + //Function to save model on the server + async function uploadModel() { + const response = await fetch('http://127.0.0.1:8000/modules/update', { + method: 'PUT', + body: JSON.stringify({groups}), + headers: { + 'content-type': 'application/json' + } + }) + .then(response => response.json()) + changed = false; + changed = changed; + saveAlert = false; + saveAlert = saveAlert; + } + + //Function for loading the selected settings xml config and show it on the DOM + async function getModuleConf(module: string) { + //TO-DO: Implementation for editing xml files in an unknown format + try { + const res = await fetch(`http://127.0.0.1:8000/modules/${module}/config`); + const data = await res.json(); + modalModule.name = module; + modalModule.response = JSON.parse(data); + modalModule.html = []; + modalModule = modalModule; + generateHTML(modalModule.response); + modalChanged = false; + modalChanged = modalChanged; + modalModule = modalModule; + } catch (error) { + console.error(error); + modalModule.name = "no"; + modalModule.response = {}; + modalModule.html = []; + modalModule.html.push(new SettingsLabel("No config found!")); + } + } + + //Wrapper to give Click-Event handler a synchronous Output + function getModuleConfClickWrapper(item: string) { + getModuleConf(item).catch(console.error); + return (event: MouseEvent & { currentTarget: EventTarget & HTMLLIElement }) => { + toggle(); + loadAvailableModules().catch(console.error); + getModuleConf(item).catch(console.error); + }; + } + + /*Parse json response to matching SettingsUi-Elements + * to portray it later in the DOM + * recursive Function + * */ + function generateHTML(json: dictionary) { + Object.entries(json).forEach(([key, value]) => { + if (value == null) { + return + } + if (value.hasOwnProperty("value")) { + if (value["@description"] && value["@description"].toLowerCase().includes("switch")) { + value.value = (value.value === 'true' || value.value === "1") //transform string input to boolean for easier binding + modalModule.html.push(new SettingsSwitch(key, value["@description"], value)) + } else if (value["@description"] && value["@description"].toLowerCase().includes("selector")) { + let options = []; + for (let i = 0; i < 5; i++) { + if (value["@description"].includes("mode_" + i)) { + options.push("mode_" + i) + } + } + modalModule.html.push(new SettingsSelector(key, value["@description"], value, options)) + }else if(isNumber(value.value)){ + value.value=parseFloat(value.value); + let numberField = new SettingsNumberfield(key, value["@description"], value) + if(value.hasOwnProperty('lower_boundary')&&isNumber(value['lower_boundary'])){numberField.setMin(value['lower_boundary'])} + if(value.hasOwnProperty('upper_boundary')&&isNumber(value['upper_boundary'])){numberField.setMax(value['upper_boundary'])} + if(value.hasOwnProperty("@unit")){numberField.setUnit(value["@unit"])}//spaeter entweder unit oder Unit in XML + if(value.hasOwnProperty("@Unit")){numberField.setUnit(value["@Unit"])} + if(value.hasOwnProperty("unit")){numberField.setUnit(value["unit"])} + if(value.hasOwnProperty("Unit")){numberField.setUnit(value["Unit"])} + modalModule.html.push(numberField); + } else { + modalModule.html.push(new SettingsTextfield(key, value["@description"], value, key)) + } + } else if (typeof value === "object") { + modalModule.html.push(new SettingsLabel(key)) + generateHTML(json[key]) + } else { + return; + } + }) + } + + //Save Settings of Module to Server + async function uploadModuleConf() { + const response = await fetch('http://127.0.0.1:8000/modules/config/update', { + method: 'PUT', + body: JSON.stringify(modalModule.response), + headers: { + 'content-type': 'application/json' + } + }) + .then(response => response.json()) + modalChanged = false; + modalChanged = modalChanged; + } + + //Replacing underscores to space + function formatLabel(label: string) { + return label.replaceAll("_", " ") + } + + //check if the settings modal of a module changed + function checkModalChanged() { + modalChanged = true; + modalChanged = modalChanged; + } + + //reset settings of an module + async function resetModuleConf() { + const res = await fetch(`http://127.0.0.1:8000/modules/${modalModule.name}/config/reset`); + getModuleConf(modalModule.name); + } + + //Methods for drag and drop of modules + + function dragStart(event: any, groupIndex: number, itemIndex: number) { + const data = {groupIndex, itemIndex}; + event.dataTransfer.setData('text/plain', JSON.stringify(data)); + } + + function drop(event: any, targetGroupIndex: number) { + event.preventDefault(); + const json = event.dataTransfer.getData("text/plain"); + const data = JSON.parse(json); + const {groupIndex, itemIndex} = data; + + const [item] = groups[data.groupIndex].modules.splice(data.itemIndex, 1); + groups[targetGroupIndex].modules.splice(dropIndex ?? groups[targetGroupIndex].modules.length, 0, item); + updateAll(); + } + + function dragOver(e: any) { + dropIndex = null; + const itemElement = e.target.closest('[data-index]'); + if (itemElement == null) + return; + const {index} = itemElement.dataset; + dropIndex = index; + } + + //update Page with new inputs + function updateAll() { + groups = groups; + changed = true; + saveAlert = true; + saveAlert = saveAlert; + changed = changed; + } + + //Makes new group and adding it to groups + function addGroup() { + groups.push(new group("group " + groups.length, 1)) + updateAll() + } + + //Adding a Module to a group + function addModules(index: number, modulname: string) { + groups.at(index)?.modules.push(modulname) + updateAll() + } + + //Change name of a group + function submitGrpName(field: number) { + return ({detail}: { detail: string }) => { + groups[field].name = detail; + } + } + + //Clearing groups + function clearModel() { + groups = [] + } + + //Deleting a group + function deleteGroup(index: number) { + groups.splice(index, 1); + updateAll() + } + + //Deleting a model in a group + function deleteModule(grpIndex: number, moduleIndex: number) { + groups.at(grpIndex)?.modules.splice(moduleIndex, 1); + updateAll() + } + + //Copy selected group + function copyGroup(index: number) { + const newGroup = new group("copy of " + groups[index].name, groups[index].loopsize); + newGroup.modules = newGroup.modules.concat(groups[index].modules); + newGroup.loop = newGroup.loop; + groups.push(newGroup); + updateAll() + } + + //Calculate Stepsize of number inputs from current value + function calcStepSize(value:number){ + const numberString = value.toString() + if (!numberString.includes('.')) { + return 1; + } else { + const decimalPart = numberString.split('.')[1]; + return Math.pow(10, -decimalPart.length); + } + } + //check if string is a number + function isNumber(n:string){ + return!isNaN(parseFloat(n))&&isFinite(parseFloat(n)) + } + //check if number is in boundry + function validateNumber(index:number){ + console.log("validateNumber") + if(modalModule.html[index].bind.value<modalModule.html[index].min){ + modalModule.html[index].bind.value=modalModule.html[index].min; + }else if(modalModule.html[index].bind.value>modalModule.html[index].max){ + modalModule.html[index].bind.value=modalModule.html[index].max; + } + } + +</script> +<Container> + <h2>Simulationsmodel</h2> + <Alert color="primary" isOpen={saveAlert} toggle={() => (saveAlert = false)}> + Changes in Model please save or reload before starting!. + </Alert> + <ButtonGroup> + <Button color="dark" outline on:click={addGroup}> + <Icon name="window-plus"/> + new Group + </Button> + <Button color="dark" outline on:click={clearModel}> + <Icon name="window-dash"/> + Clear + </Button> + <Button disabled color="dark" outline on:click={startModel}> + <Icon name="play-fill"/> + Start + </Button> + {#if changed} + <Button color="danger" outline on:click={uploadModel} active> + <Icon name="cloud-upload"/> + Save + </Button> + {:else} + <Button color="dark" outline on:click={uploadModel}> + <Icon name="cloud-upload"/> + Save + </Button> + {/if} + <Button color="dark" outline on:click={loadModel}> + <Icon name="cloud-download"/> + Load + </Button> + </ButtonGroup> + <Row class="py-3"> + {#each groups as groupitem, groupIndex(groupitem)} + <Col> + <Row> + <h3> + <InPlaceEdit bind:value={groupitem.name} on:submit={submitGrpName(groupIndex)}/> + </h3> + <ButtonGroup> + <Button color="dark" outline on:click={()=>{modulesModalIndex=groupIndex;toggleModules()}}> + <Icon name="boxes"/> + Modules + </Button> + <Button color="dark" outline on:click={()=>{modulesModalIndex=groupIndex;toggleLoop()}}> + <Icon name="arrow-clockwise"/> + {#if groupitem.loop === 'true'} + {groupitem.loopsize} + {:else} + auto + {/if} + </Button> + <Button color="dark" outline on:click={()=>copyGroup(groupIndex)}> + <Icon name="copy"/> + </Button> + <Button color="dark" outline on:click={()=>deleteGroup(groupIndex)}> + <Icon name="trash"/> + </Button> + </ButtonGroup> + </Row> + <ul class="list-group" + on:drop={event=>drop(event,groupIndex)} + on:dragover|preventDefault={event=>dragOver(event)}> + {#each groupitem.modules as item, itemIndex(itemIndex)} + <div class="item" data-index={itemIndex}> + <li class="list-group-item list-group-item-action" + draggable="true" + on:dragstart={event=>dragStart(event,groupIndex,groupitem.modules.indexOf(item))} + on:click={getModuleConfClickWrapper(item)}> + {item} + </li> + </div> + {/each} + </ul> + </Col> + {/each} + </Row> + <Modal isOpen={open} toggle={toggle} scrollable> + <ModalHeader toggle={toggle}>{modalModule.name} settings</ModalHeader> + <ModalBody> + {#each modalModule.html as element, index} + {#if element.type == "switch"} + <Input id="uiElement{index}" type="switch" label="{formatLabel(element.label)}" + bind:checked={element.bind.value} on:change={()=>checkModalChanged()}/> + <Tooltip target="uiElement{index}" placement="left"> + {element.description} + </Tooltip> + {:else if element.type == "label"} + <h3>{formatLabel(element.label)}</h3> + {:else if element.type == "selector"} + <h6>{formatLabel(element.label)}</h6> + <Input id="uiElement{index}" type="select" bind:value={element.bind.value} + on:change={()=>checkModalChanged()}> + {#each element.options as option} + <option>{option}</option> + {/each} + </Input> + <Tooltip target="uiElement{index}" placement="left"> + {element.description} + </Tooltip> + {:else if element.type == "textfield"} + <h7>{formatLabel(element.label)}</h7> + <Input id="uiElement{index}" type="text" bind:value={element.bind.value} + on:change={()=>checkModalChanged()}/> + <Tooltip target="uiElement{index}" placement="left"> + {element.description} + </Tooltip> + {:else if element.type == "numberfield"} + {#if element.unit != "1" && element.unit != "-" && element.unit != "count"} + <h7>{formatLabel(element.label)} (in {element.unit})</h7> + {:else} + <h7>{formatLabel(element.label)}</h7> + {/if} + {#if element.max != Number.POSITIVE_INFINITY && element.min != Number.NEGATIVE_INFINITY} + <Input type="range" min={element.min} max={element.max} step=0.01 bind:value={element.bind.value} + placeholder="range placeholder" on:change={()=>checkModalChanged()}/> + <Input id="uiElement{index}" type="number" min={element.min} max={element.max} step=0.01 + bind:value={element.bind.value} on:change={()=>checkModalChanged()} on:blur={()=>validateNumber(index)}/> + {:else} + <Input id="uiElement{index}" type="number" min={element.min} max={element.max} step={calcStepSize(element.bind.value)} + bind:value={element.bind.value} on:change={()=>checkModalChanged()} on:blur={()=>validateNumber(index)}/> + {/if} + + <Tooltip target="uiElement{index}" placement="left"> + {element.description} + </Tooltip> + {/if} + {/each} + </ModalBody> + {#if modalModule.name != "no"} + <ModalFooter> + <ButtonGroup> + {#if modalChanged} + <Button color="primary" on:click={uploadModuleConf}> + <Icon name="floppy"/> + Save + </Button> + {/if} + <Button color="danger" on:click={resetModuleConf}> + <Icon name="bootstrap-reboot"/> + Reset to Default + </Button> + </ButtonGroup> + </ModalFooter> + {/if} + </Modal> + <Modal isOpen={modulesModalOpen} toggle={toggleModules} size = 'lg' scrollable> + <ModalHeader toggle={toggleModules}>Select Modules to add to {groups[modulesModalIndex].name}</ModalHeader> + <ModalBody> + <Row> + <Col> + <h6>Click to add</h6> + <ListGroup> + {#each modules as module} + <ListGroupItem id="{module}" tag="button" action + on:click={()=>addModules(modulesModalIndex,module)}>{module}</ListGroupItem> + {/each} + </ListGroup> + </Col> + <Col> + <h6>Current Modules in {groups[modulesModalIndex].name} (click to delete)</h6> + <ListGroup> + {#each groups[modulesModalIndex].modules as module, modulIndex(modulIndex)} + <ListGroupItem tag="button" action + on:click={()=>deleteModule(modulesModalIndex,modulIndex)}>{module}</ListGroupItem> + {/each} + </ListGroup> + </Col> + </Row> + </ModalBody> + </Modal> + <Modal isOpen={loopOpen} toggle={toggleLoop} scrollable> + <ModalHeader toggle={toggleLoop}>Loop Settings for {groups[modulesModalIndex].name}</ModalHeader> + <ModalBody> + <Form> + <Label>Loopkind:</Label> + <Input name="loop" type="radio" bind:group={groups[modulesModalIndex].loop} value="true" + label={"manual Loopsize"}/> + <Input name="loop" type="radio" bind:group={groups[modulesModalIndex].loop} value="false" + label={"Autoloop"}/> + <br> + {#if groups[modulesModalIndex].loop === 'true'} + <InputGroup size="sm"> + <InputGroupText>Loopsize</InputGroupText> + <Input type="number" min={0} bind:value={groups[modulesModalIndex].loopsize} + placeholder={groups[modulesModalIndex].loopsize.toString()}/> + </InputGroup> + {:else} + <p> + Placeholder for Convsettings + </p> + {/if} + + </Form> + </ModalBody> + + </Modal> +</Container> +<Styles/> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/model/InPlaceEdit.svelte b/UnicadoGUI/Frontend/src/routes/model/InPlaceEdit.svelte new file mode 100644 index 0000000..95b0b20 --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/model/InPlaceEdit.svelte @@ -0,0 +1,58 @@ +<script> + import { createEventDispatcher, onMount } from 'svelte' + + export let value, required = true + + const dispatch = createEventDispatcher() + let editing = false, original + + onMount(() => { + original = value + }) + + function edit() { + editing = true + } + + function submit() { + if (value != original) { + dispatch('submit', value) + } + + editing = false + } + + function keydown(event) { + if (event.key == 'Escape') { + event.preventDefault() + value = original + editing = false + } + } + + function focus(element) { + element.focus() + } +</script> + +{#if editing} + <form on:submit|preventDefault={submit} on:keydown={keydown}> + <input bind:value on:blur={submit} {required} use:focus/> + </form> +{:else} + <div on:click={edit}> + {value} + </div> +{/if} + +<style> + input { + border: none; + background: none; + font-size: inherit; + color: inherit; + font-weight: inherit; + text-align: inherit; + box-shadow: none; + } +</style> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/reports/+page.svelte b/UnicadoGUI/Frontend/src/routes/reports/+page.svelte new file mode 100644 index 0000000..49c924a --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/reports/+page.svelte @@ -0,0 +1,37 @@ +<script> + //Testpage to show html report outputs + + import {Container, Styles, TabContent, TabPane} from "@sveltestrap/sveltestrap"; + import {onMount} from "svelte"; + + let tabs = ["convergenceLoop","empennageSizing","engineSizing","fuselageDesign","landingGearDesign","propulsionIntegration","wingDesign"] + let dict = {} + onMount(async ()=>{ + for (const element of tabs) { + const res = await fetch("http://127.0.0.1:8000/report/"+element+"_report.html",{ cache: "no-cache" }); + await res.text().then(function (html) { + let parser = new DOMParser(); + let doc = parser.parseFromString(html, "text/html"); + dict[element]= doc.querySelector('body').innerHTML; + }); + } + }) +</script> +<TabContent vertical pills> + {#each tabs as tab} + {#if tab =="convergenceLoop"} + <TabPane tabId="{tab}" tab={tab} active> + <Container md> + {@html dict[tab]} + </Container> + </TabPane> + {:else} + <TabPane tabId={tab} tab={tab}> + <Container md> + {@html dict[tab]} + </Container> + </TabPane> + {/if} + {/each} +</TabContent> +<Styles/> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/src/routes/settings/+page.svelte b/UnicadoGUI/Frontend/src/routes/settings/+page.svelte new file mode 100644 index 0000000..85503ea --- /dev/null +++ b/UnicadoGUI/Frontend/src/routes/settings/+page.svelte @@ -0,0 +1,343 @@ +<script lang="ts"> + //Testpage to show possible look of a settingspage + + import { + Button, + ButtonGroup, + Form, + FormGroup, + Icon, + Input, + Styles, + TabContent, + TabPane + } from "@sveltestrap/sveltestrap"; + let changed = false; + + class EnergyCarrier{ + constructor(value : string, id :number) { + this.value = value; + this.id = id; + } + } + class Propulsor{ + constructor(powertrain : string,type : string,position : string ,energycarrier: EnergyCarrier[],thrust_share: string) { + this.powertrain = powertrain; + this.type = type; + this.position = position; + this.energycarrier = energycarrier; + this.thrust_share = thrust_share; + } + } + //Energy Carriers + let kerosin = new EnergyCarrier("kerosin",1); + let liquid_hydrogen = new EnergyCarrier("liquid_hydrogen",2); + let battery = new EnergyCarrier("battery",3); + let saf = new EnergyCarrier("saf",4); + + + let propulsors : Propulsor[]= []; + let energycarriers : EnergyCarrier[]=[]; + + let max_load_factor= 2; + let min_load_factor= -1; + let maneuver_load_factor= 1.1; + let passenger_nr= 150; + let mass_per_passenger=80; + let luggage_mass_per_passenger=17; + let additional_cargo_mass= 500; + let cargo_density =165; + let thrust_share = 1; + let thickness = 0.003; + let maximum_structrual_payload_mass = 30000; + let takeoff_distance = 2122; + let landing_field_length = 2387; + let requirements ={ + general:{ + type: String, + model: String, + }, + mission_files: { + design_mission_file: String, + study_mission_file: String, + requirements_mission_file: String, + }, + design_specification:{ + configuration: { + configuration_type: String, + fuselage_type: String, + mounting: String, + empennage_type: String, + undercarriage_definition:{ + main_gear_mounting: String, + undercarriage_retractability: String, + }, + + + + }, + + + } + } + +</script> +<h1>Aircraftmodelsettings</h1> +<ButtonGroup style="margin-bottom: 20px"> + <Button color="dark" outline ><Icon name="bootstrap-reboot"/> Reset </Button> + {#if changed} + <Button color="danger" outline active><Icon name="cloud-upload" /> Save </Button> + {:else} + <Button color="dark" outline ><Icon name="cloud-upload" /> Save </Button> + {/if} + <Button color="dark" outline ><Icon name="cloud-download" /> Load </Button> +</ButtonGroup> + +<TabContent vertical pills> + <TabPane tabId="general" tab="General" active> + <Form> + <h5>General aircraft information</h5> + <FormGroup floating label="Aircraft type"> + <Input placeholder="Enter a value"/> + </FormGroup> + <FormGroup floating label="Model - Version"> + <Input placeholder="Enter a value"/> + </FormGroup> + + <h5>Name of xml files which are located in the missionData directory and contain the flight phase data</h5> + <FormGroup floating label="Name of the study mission xml"> + <Input placeholder="Enter a value"/> + </FormGroup> + <FormGroup floating label="Name of the requirements mission xml"> + <Input placeholder="Enter a value"/> + </FormGroup> + </Form> + </TabPane> + <TabPane tabId="design_specification" tab="Design Specification"> + <Form> + <h5>Configuration information</h5> + <FormGroup floating label="Aircraft configuration"> + <Input type="select" placeholder="Enter a value"> + <option value="tube_and_wing">tube and wing</option> + <option value="blended_wing_body">blended wing body</option> + </Input> + </FormGroup> + <FormGroup floating label="Design description of the fuselage"> + <Input type="select" placeholder="Enter a value"> + <option value="single_aisle">single aisle</option> + <option value="weight_body">weight body</option> + </Input> + </FormGroup> + <FormGroup floating label="Definitions for wing design"> + <Input type="select" placeholder="Enter a value"> + <option value="low">low</option> + <option value="mid">mid</option> + <option value="high">high</option> + </Input> + </FormGroup> + <!-- <FormGroup floating label="Definitions for empennage design">--> + <!-- <Input type="select" placeholder="Enter a value">--> + <!-- <option value="low">low</option>--> + <!-- <option value="mid">mid</option>--> + <!-- </Input>--> + <!-- </FormGroup>--> + + <h5>Design description of the undercarriage</h5> + <FormGroup floating label="Mounting position of the main landing gear"> + <Input type="select" placeholder="Enter a value"> + <option value="wing_mounted">wing mounted</option> + <option value="fuselage_mounted">fuselage mounted</option> + </Input> + </FormGroup> + <FormGroup floating label="Retractability of landing gear"> + <Input type="select" placeholder="Enter a value"> + <option value="retractable">retractable</option> + <option value="non_retractable">non retractable</option> + </Input> + </FormGroup> + + <h5> Design Load information</h5> + <FormGroup floating label="maximum load factor"> + <Input type="number" min={0} max={4} step={0.1} bind:value={max_load_factor} placeholder="number placeholder"/> + <Input type="range" min={0} max={4} step={0.1} bind:value={max_load_factor} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="minimum load factor"> + <Input type="number" min={-2} max={0} step={0.1} bind:value={min_load_factor} placeholder="number placeholder"/> + <Input type="range" min={-2} max={0} step={0.1} bind:value={min_load_factor} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="standard maneuver load factor for e.g. flare"> + <Input type="number" min={0} max={2} step={0.1} bind:value={maneuver_load_factor} placeholder="number placeholder"/> + <Input type="range" min={0} max={2} step={0.1} bind:value={maneuver_load_factor} placeholder="range placeholder"/> + </FormGroup> + + <h5> Passenger definition</h5> + <FormGroup floating label="Number of passengers"> + <Input type="number" min={0} step={1} bind:value={passenger_nr} placeholder="number placeholder"/> + </FormGroup> + <FormGroup floating label="Design mass of a single passenger WITHOUT luggage in kg"> + <Input type="number" min={50} max={200} step={1} bind:value={mass_per_passenger} placeholder="number placeholder"/> + <Input type="range" min={50} max={200} step={1} bind:value={mass_per_passenger} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="Design mass of a the luggage for a single passenger in kg"> + <Input type="number" min={0} max={25} step={1} bind:value={luggage_mass_per_passenger} placeholder="number placeholder"/> + <Input type="range" min={0} max={25} step={1} bind:value={luggage_mass_per_passenger} placeholder="range placeholder"/> + </FormGroup> + <h6>passenger class distro with bar and 5 classes</h6> + + <h5>Cargo definition</h5> + <FormGroup floating label="Mass of cargo which does not belong to passengers in kg"> + <Input type="number" min={0} max={1000} step={1} bind:value={additional_cargo_mass} placeholder="number placeholder"/> + <Input type="range" min={0} max={1000} step={1} bind:value={additional_cargo_mass} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="Density of cargo which does not belong to passengers in kg/m^3"> + <Input type="number" min={150} max={200} step={1} bind:value={cargo_density} placeholder="number placeholder"/> + <Input type="range" min={150} max={200} step={1} bind:value={cargo_density} placeholder="range placeholder"/> + </FormGroup> + </Form> + </TabPane> + <TabPane tabId="requirements" tab="Requirements"> + <Form> + + </Form> + </TabPane> + <TabPane tabId="assessment_scenario" tab="Assessment Scenario"> + <Form> + + </Form> + </TabPane> +</TabContent> +<Form> + <h2>Requirements and Specifications</h2> + + + + <h5>Design specification</h5> + + + <h5>Energy carriers information</h5> + <FormGroup floating label="ID of Energy type: kerosene / liquid_hydrogen / battery / saf (for multifuel engine create new ID)"> + <Input type="number" placeholder="number placeholder"/> + </FormGroup> + + <h5>Propulsion information?</h5> + <FormGroup floating label="Way the power is generated from the source"> + <Input type="select" placeholder="Enter a value"> + <option value="turbo">turbo</option> + <option value="electric">electric</option> + <option value="fuel_cell">fuel_cell</option> + </Input> + </FormGroup> + <FormGroup floating label="Type of main thrust generator"> + <Input type="select" placeholder="Enter a value"> + <option value="fan">fan</option> + <option value="prop">prop</option> + </Input> + </FormGroup> + <FormGroup floating label="position on component"> + <Input type="select" placeholder="Enter a value"> + <option value="wing">wing</option> + <option value="fuselage">fuselage</option> + <option value="empennage">empennage</option> + </Input> + </FormGroup> + <FormGroup floating label="x-position (aircraft coordinate system)"> + <Input type="select" placeholder="Enter a value"> + <option value="front">front</option> + <option value="back">back</option> + </Input> + </FormGroup> + <FormGroup floating label="y-position (aircraft coordinate system)"> + <Input type="select" placeholder="Enter a value"> + <option value="left">left</option> + <option value="right">right</option> + </Input> + </FormGroup> + <FormGroup floating label="z-position (aircraft coordinate system)"> + <Input type="select" placeholder="Enter a value"> + <option value="over">over</option> + <option value="mid">mid</option> + <option value="under">under</option> + <option value="in">in</option> + </Input> + </FormGroup> + <FormGroup floating label="see energy carrier specification node"> + <Input type="number" min={0} max={5} step={1} bind:value={energycarriers} placeholder="number placeholder"/> + <Input type="range" min={0} max={5} step={1} bind:value={energycarriers} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="Share of this thrust in relation to required aircraft thrust"> + <Input type="number" min={0} max={1} step={0.1} bind:value={thrust_share} placeholder="number placeholder"/> + <Input type="range" min={0} max={1} step={0.1} bind:value={thrust_share} placeholder="range placeholder"/> + </FormGroup> + + <h5>Systems information</h5> + <FormGroup floating label="Way the power is generated from the source"> + <Input type="select" placeholder="Enter a value"> + <option value="propulsor">propulsor</option> + <option value="turbo">turbo</option> + <option value="electric">electric</option> + <option value="fuel_cell">fuel_cell</option> + </Input> + </FormGroup> + <p>dieser bereich ist verwirrend, unterkategorien?</p> + + <h5>Skinning Information</h5> + <FormGroup floating label="Material of skinning"> + <Input placeholder="Enter a value"/> + </FormGroup> + <FormGroup floating label="Thickness of skinning"> + <Input type="number" min={0.0001} max={0.1} step={0.0001} bind:value={thickness} placeholder="number placeholder"/> + <Input type="range" min={0.0001} max={0.1} step={0.0001} bind:value={thickness} placeholder="range placeholder"/> + </FormGroup> + + <h5>Technology</h5> + <Input type="switch" label="Switch if variable camber is used" /> + + <h5>Energy tanks information?</h5> + <p>energiecarrier wieder, machmal bei auswahl zahlen manchmal direkt wörter</p> + <FormGroup floating label="Component where the tank is located"> + <Input type="select" placeholder="Enter a value"> + <option value="fusalage">fusalage</option> + <option value="wing">wing</option> + <option value="horizontal_stabilizer">horizontal_stabilizer</option> + </Input> + </FormGroup> + <FormGroup floating label="Position of tank in location"> + <Input type="select" placeholder="Enter a value"> + <option value="tailcone">tailcone</option> + <option value="rear">rear</option> + <option value="front">front</option> + <option value="top">top</option> + <option value="bottom">bottom</option> + <option value="center">center</option> + <option value="inner_left">inner_left</option> + <option value="outer_left">outer_left</option> + <option value="inner_right">inner_right</option> + <option value="outer_right">outer_right</option> + <option value="total">total</option> + </Input> + </FormGroup> + + <h5>Aircraft design requirements</h5> + <h6>TLAR</h6> + <FormGroup floating label="Maximum structual payload mass which can be carried by the aircraft (e.g. for short trips) in kg"> + <Input type="number" min={100} max={150000} step={100} bind:value={maximum_structrual_payload_mass} placeholder="number placeholder"/> + <Input type="range" min={100} max={150000} step={100} bind:value={maximum_structrual_payload_mass} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="Design takeoff distance (Balanced Field Length) at Sea Level with maximum takeoff mass (MTOM) and (ISA + deltaISA)-Conditions in m"> + <Input type="number" min={600} max={5000} step={1} bind:value={takeoff_distance} placeholder="number placeholder"/> + <Input type="range" min={600} max={5000} step={1} bind:value={takeoff_distance} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="Needed runway length at Sea Level with maximum landing mass (MLM) and (ISA + deltaISA)-Conditions (Safety-Landing Distance according to FAR 121.195: landing_field_required/0.6) in m"> + <Input type="number" min={600} max={5000} step={1} bind:value={landing_field_length} placeholder="number placeholder"/> + <Input type="range" min={600} max={5000} step={1} bind:value={landing_field_length} placeholder="range placeholder"/> + </FormGroup> + <FormGroup floating label="ICAO reference code - code_number 1-4 (field length) + code_letter A-F (wing span limits) + faa ADG code number I-VI (wing span limits + tail height limits) + Aircraft Approach Category letter A-D"> + <Input placeholder="Enter a value"/> + </FormGroup> + <p>mit check dass code stimmt?</p> + + +</Form> + + +<Styles/> \ No newline at end of file diff --git a/UnicadoGUI/Frontend/static/favicon.png b/UnicadoGUI/Frontend/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..046c32ab3988b3b957da0fa4d2415818ab836a3f GIT binary patch literal 182528 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 literal 0 HcmV?d00001 diff --git a/UnicadoGUI/Frontend/svelte.config.js b/UnicadoGUI/Frontend/svelte.config.js new file mode 100644 index 0000000..2b35fe1 --- /dev/null +++ b/UnicadoGUI/Frontend/svelte.config.js @@ -0,0 +1,18 @@ +import adapter from '@sveltejs/adapter-auto'; +import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; + +/** @type {import('@sveltejs/kit').Config} */ +const config = { + // Consult https://kit.svelte.dev/docs/integrations#preprocessors + // for more information about preprocessors + preprocess: vitePreprocess(), + + kit: { + // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. + // If your environment is not supported or you settled on a specific environment, switch out the adapter. + // See https://kit.svelte.dev/docs/adapters for more information about adapters. + adapter: adapter() + } +}; + +export default config; diff --git a/UnicadoGUI/Frontend/tsconfig.json b/UnicadoGUI/Frontend/tsconfig.json new file mode 100644 index 0000000..82081ab --- /dev/null +++ b/UnicadoGUI/Frontend/tsconfig.json @@ -0,0 +1,18 @@ +{ + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias + // + // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes + // from the referenced tsconfig.json - TypeScript does not merge them in +} diff --git a/UnicadoGUI/Frontend/vite.config.ts b/UnicadoGUI/Frontend/vite.config.ts new file mode 100644 index 0000000..0166cb1 --- /dev/null +++ b/UnicadoGUI/Frontend/vite.config.ts @@ -0,0 +1,8 @@ +import { sveltekit } from '@sveltejs/kit/vite'; +import { defineConfig } from 'vite'; +// @ts-ignore +import dsv from '@rollup/plugin-dsv'; + +export default defineConfig({ + plugins: [sveltekit(), dsv()] +}); -- GitLab