diff --git a/.gitignore b/.gitignore index d9dd1e071300d75ae4e1ef72d25fcd677f1b1398..1637f3b07b8baaea84d53b085974683e8525bd3a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,5 @@ # Ignore generated Doxygen docs in modules folder -docs/modules/**/ +docs/documentation/**/ # Ignore the local docs of the AcXML docs/aircraft-xml/ diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index dbdd361d8c42eb626851f58261b2df301a32cb97..7e4e5a838ad45544525fba15560dd8044d132121 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -29,7 +29,7 @@ doxygen: - apk update && apk --no-cache add git doxygen graphviz ttf-freefont texmf-dist texmf-dist-latexextra texlive texlive-dvi script: - git clone -b feature-aircraftGeometry2 --recurse-submodules https://gitlab-ci-token:${CI_JOB_TOKEN}@git.rwth-aachen.de/unicado/libraries - - cd libraries/aircraftGeometry2/doc/ && ( cat Doxyfile ; echo "OUTPUT_DIRECTORY = $CI_PROJECT_DIR/docs/modules/" ) | doxygen - + - cd libraries/aircraftGeometry2/doc/ && ( cat Doxyfile ; echo "OUTPUT_DIRECTORY = $CI_PROJECT_DIR/docs/documentation/" ) | doxygen - artifacts: paths: - $CI_PROJECT_DIR/docs/modules diff --git a/docs/about.md b/docs/about.md new file mode 100644 index 0000000000000000000000000000000000000000..6ccfbaf57e27cb522a7de7ffe273a9d17520a218 --- /dev/null +++ b/docs/about.md @@ -0,0 +1 @@ +@ todo needs input \ No newline at end of file diff --git a/docs/assets/css/unicado.css b/docs/assets/css/unicado.css index 489f70ee5aaadec5284963a265303ac495affcd7..96cf6c5b5e635a264b7115ffbdd41ff711c94c3b 100644 --- a/docs/assets/css/unicado.css +++ b/docs/assets/css/unicado.css @@ -1,28 +1,160 @@ +/* Define color variables in :root for easy reference */ +:root { + --primary-color: #2C3E50; /* Primary color for headers, hero section, and cards */ + --background-color: #34495E; /* Background color for main content areas */ + --text-color: #D1D5DB; /* Main text color for readability on dark backgrounds */ + --button-bg-color: #ffffff; /* Background color for buttons */ + --accent-color: #E74C3C; /* Accent color for links and hover effects */ + --secondary-accent: #1ABC9C; /* Secondary accent color for icons */ + --link-color: #3498DB; /* Link color for clickable items */ + --link-hover-color: #E74C3C; /* Hover color for links */ +} + +.md-header { + background-color: var(--primary-color); +} + +/* Apply primary color to tab backgrounds */ +[data-md-color-scheme=slate] .md-tabs { + background-color: var(--primary-color); +} + +/* Hero Section Styling */ +.hero-section { + background-color: var(--primary-color); + padding: 2em; + border-radius: 10px; + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); + max-width: 1060px; + margin: auto; + border: 1px solid rgba(255, 255, 255, 0.1); + +} + +/* Text styling within the hero section */ +.intro-text { + color: var(--text-color); + font-size: 1.1em; +} + +/* Download button styling */ +.download-button-container { + text-align: center; + margin-top: 20px; +} + +.download-button { + display: inline-block; + background-color: var(--button-bg-color); /* Uses button background color */ + padding: 10px 20px; + font-size: 1.1em; + font-weight: bold; + border-radius: 5px; + text-decoration: none; + color: var(--primary-color); /* Button text color */ + transition: background-color 0.3s ease; +} + +/* Grid Container */ .grid-container { - grid-gap: .4rem; display: grid; - grid-template-columns: repeat(auto-fit,minmax(16rem,1fr)); - margin: 1em 0; + grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); + gap: 1.5em; + margin: 2em auto; + max-width: 1100px; + padding: 1em; } .grid-item { - border: .05rem solid var(--md-default-fg-color--lightest); - border-radius: .1rem; - display: block; - margin: 0; - padding: .8rem; - transition: border .25s,box-shadow .25s; + background-color: var(--primary-color); /* Uses primary color for card background */ + padding: 1.5em; + border-radius: 10px; + text-align: left; + color: var(--text-color); /* Text color for readability */ + transition: transform 0.3s, box-shadow 0.3s; } -.grid-item:where(:hover, :focus) { - border-color: #0000; - box-shadow: var(--md-shadow-z2); +.grid-item h3 { + font-size: 1.25em; + margin-bottom: 0.5em; } -.overview-item { - min-height: 240px; +/* Card styling with hover effects */ +.card { + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(255, 255, 255, 0.1); } -.overview-img { - width: 200px; -} \ No newline at end of file +.card:hover { + transform: translateY(-5px); + box-shadow: 0 8px 16px rgba(0, 0, 0, 0.25); +} + +/* Link styling within cards */ +.card a { + color: var(--link-color); + font-weight: bold; +} + +.card a:hover { + color: var(--link-hover-color); /* Changes to accent color on hover */ +} + +/* Accent color for icons or specific elements */ +.accent { + color: var(--secondary-accent); /* Teal accent color for specific elements */ +} + +/* Footer Styling */ +.custom-footer { + display: flex; + align-items: center; + justify-content: space-between; + background-color: var(--primary-color); /* Background color for the footer */ + color: var(--text-color); + padding: 1em 2em; /* Adjust padding for spacing */ + font-size: 1em; /* Increase text size for better readability */ + border-top: 1px solid rgba(255, 255, 255, 0.2); /* Subtle top border */ +} + +/* Align text and links */ +.footer-content { + display: flex; + align-items: center; + gap: 1em; /* Space between text and impressum link */ +} + +.footer-content p { + margin: 0; /* Remove extra spacing */ + font-size: 1.4em; /* Make text slightly larger */ +} + +/* Footer link styling */ +.footer-link { + color: var(--text-color); + text-decoration: none; + font-weight: bold; + font-size: 1.4em; + border-bottom: 1px solid transparent; + margin-left: 1em; /* Space between copyright and link */ +} + +.footer-link:hover { + border-bottom: 1px solid var(--accent-color); /* Underline on hover with accent color */ +} + +/* Footer image styling */ +.footer-image-container { + display: flex; + align-items: center; +} + +.footer-image { + width: 150px; /* Adjust the width as needed */ + height: auto; + margin-left: 1em; /* Space between image and text */ + border-radius: 8px; /* Optional: Rounded corners */ +} + + + diff --git a/docs/assets/images/developer/python-debug-binaries.png b/docs/assets/images/developer/python-debug-binaries.png new file mode 100644 index 0000000000000000000000000000000000000000..50df52734eb751ae5d8bed549847be6f6ba17e20 --- /dev/null +++ b/docs/assets/images/developer/python-debug-binaries.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4640b4eacf6c9c4fca1a4f77fb8490bfa8e152daf65a480184ae41f91b008ff1 +size 108902 diff --git a/docs/assets/images/modules/aerodynamics.svg b/docs/assets/images/documentation/aerodynamics.svg similarity index 100% rename from docs/assets/images/modules/aerodynamics.svg rename to docs/assets/images/documentation/aerodynamics.svg diff --git a/docs/assets/images/modules/aircraft-geometry.svg b/docs/assets/images/documentation/aircraft-geometry.svg similarity index 100% rename from docs/assets/images/modules/aircraft-geometry.svg rename to docs/assets/images/documentation/aircraft-geometry.svg diff --git a/docs/assets/images/modules/aircraft-network.svg b/docs/assets/images/documentation/aircraft-network.svg similarity index 100% rename from docs/assets/images/modules/aircraft-network.svg rename to docs/assets/images/documentation/aircraft-network.svg diff --git a/docs/assets/images/modules/aixml.svg b/docs/assets/images/documentation/aixml.svg similarity index 100% rename from docs/assets/images/modules/aixml.svg rename to docs/assets/images/documentation/aixml.svg diff --git a/docs/assets/images/modules/atmosphere.svg b/docs/assets/images/documentation/atmosphere.svg similarity index 100% rename from docs/assets/images/modules/atmosphere.svg rename to docs/assets/images/documentation/atmosphere.svg diff --git a/docs/assets/images/modules/blackbox.svg b/docs/assets/images/documentation/blackbox.svg similarity index 100% rename from docs/assets/images/modules/blackbox.svg rename to docs/assets/images/documentation/blackbox.svg diff --git a/docs/assets/images/modules/calculate-emissions.svg b/docs/assets/images/documentation/calculate-emissions.svg similarity index 100% rename from docs/assets/images/modules/calculate-emissions.svg rename to docs/assets/images/documentation/calculate-emissions.svg diff --git a/docs/assets/images/modules/calculate-performance.svg b/docs/assets/images/documentation/calculate-performance.svg similarity index 100% rename from docs/assets/images/modules/calculate-performance.svg rename to docs/assets/images/documentation/calculate-performance.svg diff --git a/docs/assets/images/modules/calculate-polar.svg b/docs/assets/images/documentation/calculate-polar.svg similarity index 100% rename from docs/assets/images/modules/calculate-polar.svg rename to docs/assets/images/documentation/calculate-polar.svg diff --git a/docs/assets/images/modules/cost-estimation.svg b/docs/assets/images/documentation/cost-estimation.svg similarity index 100% rename from docs/assets/images/modules/cost-estimation.svg rename to docs/assets/images/documentation/cost-estimation.svg diff --git a/docs/assets/images/modules/cpacs-interface.svg b/docs/assets/images/documentation/cpacs-interface.svg similarity index 100% rename from docs/assets/images/modules/cpacs-interface.svg rename to docs/assets/images/documentation/cpacs-interface.svg diff --git a/docs/assets/images/modules/create-mission.png b/docs/assets/images/documentation/create-mission.png similarity index 100% rename from docs/assets/images/modules/create-mission.png rename to docs/assets/images/documentation/create-mission.png diff --git a/docs/assets/images/modules/design-evaluator.svg b/docs/assets/images/documentation/design-evaluator.svg similarity index 100% rename from docs/assets/images/modules/design-evaluator.svg rename to docs/assets/images/documentation/design-evaluator.svg diff --git a/docs/assets/images/modules/empennage-sizing.png b/docs/assets/images/documentation/empennage-sizing.png similarity index 100% rename from docs/assets/images/modules/empennage-sizing.png rename to docs/assets/images/documentation/empennage-sizing.png diff --git a/docs/assets/images/modules/engine.svg b/docs/assets/images/documentation/engine.svg similarity index 100% rename from docs/assets/images/modules/engine.svg rename to docs/assets/images/documentation/engine.svg diff --git a/docs/assets/images/modules/fuselage-design.png b/docs/assets/images/documentation/fuselage-design.png similarity index 100% rename from docs/assets/images/modules/fuselage-design.png rename to docs/assets/images/documentation/fuselage-design.png diff --git a/docs/assets/images/modules/hydrogen-tank.svg b/docs/assets/images/documentation/hydrogen-tank.svg similarity index 100% rename from docs/assets/images/modules/hydrogen-tank.svg rename to docs/assets/images/documentation/hydrogen-tank.svg diff --git a/docs/assets/images/modules/initial-sizing.svg b/docs/assets/images/documentation/initial-sizing.svg similarity index 100% rename from docs/assets/images/modules/initial-sizing.svg rename to docs/assets/images/documentation/initial-sizing.svg diff --git a/docs/assets/images/modules/landing-gear-design.svg b/docs/assets/images/documentation/landing-gear-design.svg similarity index 100% rename from docs/assets/images/modules/landing-gear-design.svg rename to docs/assets/images/documentation/landing-gear-design.svg diff --git a/docs/assets/images/modules/lifting-line.svg b/docs/assets/images/documentation/lifting-line.svg similarity index 100% rename from docs/assets/images/modules/lifting-line.svg rename to docs/assets/images/documentation/lifting-line.svg diff --git a/docs/assets/images/modules/mass-estimation.svg b/docs/assets/images/documentation/mass-estimation.svg similarity index 100% rename from docs/assets/images/modules/mass-estimation.svg rename to docs/assets/images/documentation/mass-estimation.svg diff --git a/docs/assets/images/modules/mission-analysis.png b/docs/assets/images/documentation/mission-analysis.png similarity index 100% rename from docs/assets/images/modules/mission-analysis.png rename to docs/assets/images/documentation/mission-analysis.png diff --git a/docs/assets/images/modules/module-basics.svg b/docs/assets/images/documentation/module-basics.svg similarity index 100% rename from docs/assets/images/modules/module-basics.svg rename to docs/assets/images/documentation/module-basics.svg diff --git a/docs/assets/images/modules/propulsion-design.svg b/docs/assets/images/documentation/propulsion-design.svg similarity index 100% rename from docs/assets/images/modules/propulsion-design.svg rename to docs/assets/images/documentation/propulsion-design.svg diff --git a/docs/assets/images/modules/report-generator.svg b/docs/assets/images/documentation/report-generator.svg similarity index 100% rename from docs/assets/images/modules/report-generator.svg rename to docs/assets/images/documentation/report-generator.svg diff --git a/docs/assets/images/modules/runtime-info.svg b/docs/assets/images/documentation/runtime-info.svg similarity index 100% rename from docs/assets/images/modules/runtime-info.svg rename to docs/assets/images/documentation/runtime-info.svg diff --git a/docs/assets/images/modules/spline.svg b/docs/assets/images/documentation/spline.svg similarity index 100% rename from docs/assets/images/modules/spline.svg rename to docs/assets/images/documentation/spline.svg diff --git a/docs/assets/images/modules/standard-files.svg b/docs/assets/images/documentation/standard-files.svg similarity index 100% rename from docs/assets/images/modules/standard-files.svg rename to docs/assets/images/documentation/standard-files.svg diff --git a/docs/assets/images/modules/svg-plot.svg b/docs/assets/images/documentation/svg-plot.svg similarity index 100% rename from docs/assets/images/modules/svg-plot.svg rename to docs/assets/images/documentation/svg-plot.svg diff --git a/docs/assets/images/modules/systems-design.png b/docs/assets/images/documentation/systems-design.png similarity index 100% rename from docs/assets/images/modules/systems-design.png rename to docs/assets/images/documentation/systems-design.png diff --git a/docs/assets/images/modules/systems-design.svg b/docs/assets/images/documentation/systems-design.svg similarity index 100% rename from docs/assets/images/modules/systems-design.svg rename to docs/assets/images/documentation/systems-design.svg diff --git a/docs/assets/images/modules/test-framework.svg b/docs/assets/images/documentation/test-framework.svg similarity index 100% rename from docs/assets/images/modules/test-framework.svg rename to docs/assets/images/documentation/test-framework.svg diff --git a/docs/assets/images/modules/unit-conversion.svg b/docs/assets/images/documentation/unit-conversion.svg similarity index 100% rename from docs/assets/images/modules/unit-conversion.svg rename to docs/assets/images/documentation/unit-conversion.svg diff --git a/docs/assets/images/modules/wing-design.svg b/docs/assets/images/documentation/wing-design.svg similarity index 100% rename from docs/assets/images/modules/wing-design.svg rename to docs/assets/images/documentation/wing-design.svg diff --git a/docs/datenschutz.md b/docs/datenschutz.md new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/docs/description.md b/docs/description.md index e4d9ad0b5cdfdb399b3f441dd45baa98dec24fff..914418f3994b22ec2f2362275fa7b3265834a754 100644 --- a/docs/description.md +++ b/docs/description.md @@ -1,3 +1,4 @@ +@ todo needs revision ## General Description The general overview of the UNICADO process chain is shown below. <figure markdown> @@ -16,7 +17,7 @@ whereas the workflow of UNICADO is programmed in **RCE** (remote control environment by DLR). !!! note - You can refer to the [Module Overview](modules/overview.md) for a list of all available modules. + You can refer to the [Module Overview](documentation/overview.md) for a list of all available modules. ## Training videos diff --git a/docs/developer/build-environment/linux.md b/docs/developer/build-environment/linux.md index a7e2e2cbffa0a18f195aaa6fb2a39904f492aef9..58426a424b27f81d3e7fe0fd56037e30f1211382 100644 --- a/docs/developer/build-environment/linux.md +++ b/docs/developer/build-environment/linux.md @@ -10,8 +10,11 @@ We use the basic linux tools to build *UNICADO* on Linux. The tools used are: - Compiler: `GCC` + `make` -- Generator tool: `CMake` +- Generator tool: `CMake` (more infos [here](../build/general.md)) - Package manager: → The package manager of your **Linux** distribution should suffice +- some other tools (Python, Git - see below) + +>You can use _Visual Studio Code_ as your IDE which will integrate everything, but since we are not prescribing any IDE, this will only show you how to setup the build tools. :point_up: --- @@ -40,10 +43,26 @@ If you distribution is not listed here, make sure you at least install: --- ## Install Other Tools -For the other tools, we assume you know how to use your package manager. :wink: -Please install the following: +Please install the following as well: |Package|Version| |---|---| +|`git`| | |`python`| Preferably **3.11**| +|`pyenv`| | |`cmake`| >= **3.29**| +|`matplotplusplus`| | + +For Python, you can install it: +=== "Arch" + + ```{.sh .copy} + sudo pacman -S pyenv + pyenv install 3.11.10 + ``` + +!!! important + Currently, `matplotplusplus` has to be cloned manually into the submodule `aircraftdesign`. Sometimes here are connection problems when doing so. The command that currently works is + ```{.sh .copy} + git clone --depth=1 --shallow-submodules https://github.com/alandefreitas/matplotplusplus.git + ``` \ No newline at end of file diff --git a/docs/developer/build-environment/windows.md b/docs/developer/build-environment/windows.md index 5fb8fa50dfe8b97eb1f6e8a169eec85fd309bb7b..5352396f7d861bcac308a4311ceef36aa85a110d 100644 --- a/docs/developer/build-environment/windows.md +++ b/docs/developer/build-environment/windows.md @@ -10,28 +10,11 @@ We recommend to use the Windows compiler for the best experience and to create The tools used are: - Compiler: `Clang` or `MSVC` -- Generator tool: `CMake` +- Generator tool: `CMake` (more infos [here](../build/general.md)) - Package manager: `vcpkg` +- some other tools (Python, Git - see below) ->You can use _Visual Studio_ as your IDE which will integrate everything, but since we are not prescribing any IDE, this will only show you how to setup the build tools. :point_up: - ---- - -## Install Python -- Download and install **Python**: [Download Python :octicons-link-external-16:](https://www.python.org/downloads/windows/){:target="_blank"} - -!!! warning - Please install version **3.11**! - -- Select all the default options and check the option to add Python to *PATH*. - -### Python Dependencies -The only Python dependency we have is `pipenv` which is used to manage the Python environment. -Install it by executing the following command in a terminal after you have **successfully** installed Python: - -```{.sh .copy} -pip install pipenv -``` +>You can use _Visual Studio Code_ as your IDE which will integrate everything, but since we are not prescribing any IDE, this will only show you how to setup the build tools. :point_up: --- @@ -51,23 +34,6 @@ The page should look something like this: --- -## Install CMake -- Download and Install the latest release of **CMake**: [Download CMake :octicons-link-external-16:](https://cmake.org/download/){:target="_blank"} - -!!! important - Install at least version **3.29**! - -- Enable the option to make **CMake** available in *PATH*. - ---- - -## Install Git -- Download and Install the latest release of **Git**: [Download Git :octicons-link-external-16:](https://git-scm.com/download/win){:target="_blank"} -- Enable the option to make **Git** available in *PATH*. -- Leave the rest of the options to their defaults. - ---- - ## Install vcpkg *vcpkg* is the open-source package manager maintained by Microsoft we use to install and manage our dependencies. @@ -92,3 +58,40 @@ git clone https://github.com/microsoft/vcpkg.git ``` You can get more information how *vcpkg* can be installed in the [Readme :octicons-link-external-16:](https://github.com/microsoft/vcpkg/?tab=readme-ov-file#getting-started){:target="_blank"} of the project itself. + +--- + +## Install CMake +- Download and Install the latest release of **CMake**: [Download CMake :octicons-link-external-16:](https://cmake.org/download/){:target="_blank"} + +!!! important + Install at least version **3.29**! + +- Enable the option to make **CMake** available in *PATH*. + +--- + +## Other tools + +### Install Python +- Download and install **Python**: [Download Python :octicons-link-external-16:](https://www.python.org/downloads/windows/){:target="_blank"} + +!!! warning + Please install version **3.11**, select all the default options and check the option to add Python to *PATH* & make sure to include the debug binaries! + + + +#### Python Dependencies +The only Python dependency we have is `pipenv` which is used to manage the Python environment. +Install it by executing the following command in a terminal after you have **successfully** installed Python: + +```{.sh .copy} +pip install pipenv +``` + +### Install Git +- Download and Install the latest release of **Git**: [Download Git :octicons-link-external-16:](https://git-scm.com/download/win){:target="_blank"} +- Enable the option to make **Git** available in *PATH*. +- Leave the rest of the options to their defaults. + + diff --git a/docs/developer/build/cpp.md b/docs/developer/build/cpp.md index b4b93b49fb9c140014091c3ba3c542964dc790bf..7f4b622b87b06c283e92f192ce77c33c8e9b7960 100644 --- a/docs/developer/build/cpp.md +++ b/docs/developer/build/cpp.md @@ -5,11 +5,14 @@ authors: - Sebastian Oberschwendtner date: 2023-09-12 --- -**UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/){:target="_blank"} for generating the build files. -CMake is a build system generator, which allows for cross-platform compilation. -For more information about this system, please refer to its [Documentation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/){:target="_blank"}. +Most modules are written in C++. In the following, it is explained how: -## Install required dependencies +- the current important [dependencies](#dependencies) have to be installed +- how to [configure](#configure) and [build](#build) with CMake + +For detailed information on CMake, please read the [general information](../build/general.md). + +## Install required dependencies {#dependencies} We do not provide an automatic way to get the required dependencies, since we do not want to force any specific package manager on you. *UNICADO* has currently these external dependencies for building: @@ -38,15 +41,9 @@ However, if you followed the instructions in *Prerequisites* you can install the ⇒ Use your the package manager of your distribution to install the packages. :wink: -## Configure CMake -Since **CMake** is independent of the used platform, it needs to figure out on which platform you are running your current build. This process is called *Configuration*. During configuration, **CMake** checks on which platform you are and selects the appropriate build system/compiler. -**CMake** wants to separate the build specific files from the source files. Usually, this is done by providing a separate *build* directory, where all the intermediate files are stored before actually executing the build. - -!!! note - **CMake** introduced the concept of [Presets :octicons-link-external-16:](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html){:target="_blank"} which allows to specify different sets of arguments which are passed to **CMake** when configuring the project. - We provide a basic preset file which contains a reasonable default configuration for each platform we support. You can however, create your own :octicons-file-16: `CMakeUserPresets.json` file along our preset file to override our settings. See [CMake Presets](../cmake-presets.md) for more information about that. - -### Available Presets +## Configure {#configure} +Before building we need to configure and figure out on which platform you are running your current build. +### Naming pattern We use the following naming pattern to identify the presets: ``` @@ -74,7 +71,7 @@ You have to specify custom presets by [CMakeUserPresets](../cmake-presets.md). !!! note In the following we always assume the **Release** configuration for building. The **Debug** configuration works analogously. -### Terminal +### Configure in Terminal The programmers way to configure **CMake**: 1. Open a terminal inside the root directory of the *rAircraftDesign* repository. @@ -122,60 +119,13 @@ When this happens, you can tell **CMake** explicitly to refresh this cache by: cmake --preset x64-linux-release --fresh ``` -<!-- Alternatively, you can just delete everything inside the build directory before configuring **CMake** again. - -The default build configuration of **CMake** is ^^Release^^. The build configuration can be changed, for example to ^^Debug^^, by: - -=== "Windows" - - !!! quote - :fontawesome-solid-arrow-right: The *Windows* build system is a so-called **multi configuration generator**. - This means its build type can be set during build and does not have to be configured. - -=== "MinGW" - - ``` { .sh .copy } - cmake -B build -S . --preset MSYS2 -DCMAKE_BUILD_TYPE:STRING=Debug - ``` -=== "Linux" - - ``` { .sh .copy } - cmake -B build -S . --preset Linux -DCMAKE_BUILD_TYPE:STRING=Debug - ``` --> - -### GUI -**CMake** also comes with a GUI which can be used for the configuration process. -The GUI looks like this: - - - -It works the same as the command line interface. -You have to specify the path to the source files and to the build directory. -Then you have to select the preset you want to use. -You can see the exposed options of the project as well. -And as the GUI already tells you: -> Press Configure to update and display new values in red, then press Generate to generate selected build files. - -### Options -These project options are currently available during configuration time: - -| Name | Default | Description | -| --- | :---: | ---| -|**BUILD_BLACKBOXTESTS**| `OFF` | Whether to build the blackbox tests. (If available)| -|**BUILD_UNITTEST**| `OFF` |Whether to build the unit tests. (If available)| -|**BUILD_SHARED_LIBS**| `OFF` | Decide whether the libraries are built as static or shared libraries.| -|**PACKAGE_SYSTEM_LIBRARIES**| `OFF` | Whether to include all system libraries when creating release packages. *(Only available in `rUNICADO`)* | -|**FIND_LIBRARIES_AS_PACKAGE**| `OFF` |If *true* the libraries are included with `find_package()`, otherwise the *submodule* with `add_subdirectory()` is used.| -|**STATIC_GLIBS**| `OFF` | Whether to link the *GCC runtime libraries* as static libraries. :warning: ^^**Experimental**^^ | - -The other options shown in the GUI are specific to **CMake**. -(*Not all options shown in the table are part of the screenshot, since the screenshot was taken before these options were introduced.*) +Read more about the configuration and additional possible frags you can set [here](../build/general.md). --- -## Build with CMake -**CMake** also provides a convenient interface to invoke the build system without you needing to know which build system is actually used. -The different modules or executables are called *targets* in the **CMake** language. +## Build {#build} + +### Build specific target So to build a specific target you call **CMake** with the following command, where `build` is the created build directory and `the-target` is the name of the module you want to compile: === "Windows" @@ -202,8 +152,12 @@ So to build a specific target you call **CMake** with the following command, whe !!! tip Remember: The build preset should match the one specified when configuring **CMake** :point_up:. +### Build all target When you want to compile all the modules ^^at once^^, you can just omit the *target* option and call **CMake** with: +!!! warning + If you do that, you also have to install the python packages first (see [Python build](../build/python.md)). + === "Windows" ```sh @@ -222,7 +176,8 @@ When you want to compile all the modules ^^at once^^, you can just omit the *tar cmake --build --preset x64-linux-release ``` -You can also clean the build before re-compiling: +### Other notes +#### Clean before re-compiling === "Windows" @@ -244,7 +199,7 @@ You can also clean the build before re-compiling: That's all folks. This should compile *UNICADO* just fine. 👌 -### Improve Compilation Speed +#### Improve Compilation Speed You can increase the build speed by enabling parallel jobs of the build tool. This is as easy as this: ```sh diff --git a/docs/developer/build/general.md b/docs/developer/build/general.md new file mode 100644 index 0000000000000000000000000000000000000000..e2a9dfd0bca5a6ea68719b3c021b39988f263fde --- /dev/null +++ b/docs/developer/build/general.md @@ -0,0 +1,64 @@ +--- +title: General +authors: + - Kristina Mazur +date: 2024-11-05 +--- +To understand **UNICADO's code base**, there are some things you need to know: + +1. The code is in both :simple-cplusplus: C++ and :simple-python: Python. This makes the software especially existing for development :fire:. + +2. We work a lot with executables in order to integrate them into the workflow (you might have seen this the [standalone download](../../download/takeoff.md)). + +3. For generating the build files, **UNICADO** uses [CMake :octicons-link-external-16:](https://cmake.org/){:target="_blank"}. +CMake is a build system generator, which allows for cross-platform compilation. +For more information about this system, please refer to its [Documentation :octicons-link-external-16:](https://cmake.org/cmake/help/latest/){:target="_blank"}. + +## Some words about :simple-cmake: CMake + +In UNICADO, CMake plays a crucial role as our build system generator. CMake simplifies the process of generating platform-specific build files, making it easier to compile the code across various operating systems. This is especially useful for developers, as it ensures consistency and efficiency in building executables regardless of the environment. + +By defining build instructions in `CMakeLists.txt` files, CMake enables flexible configuration options, allowing us to manage dependencies and set up customized builds effortlessly. + +The typical CMake-based workflow includes 2 steps: configure and build. Here are some insights: + +### Configure CMake +Since **CMake** is independent of the used platform, it needs to figure out on which platform you are running your current build. This process is called *Configuration*. During configuration, **CMake** checks on which platform you are and selects the appropriate build system/compiler. +**CMake** wants to separate the build specific files from the source files. Usually, this is done by providing a separate *build* directory, where all the intermediate files are stored before actually executing the build. + +!!! note + **CMake** introduced the concept of [Presets :octicons-link-external-16:](https://cmake.org/cmake/help/latest/manual/cmake-presets.7.html){:target="_blank"} which allows to specify different sets of arguments which are passed to **CMake** when configuring the project. + We provide a basic preset file which contains a reasonable default configuration for each platform we support. You can however, create your own :octicons-file-16: `CMakeUserPresets.json` file along our preset file to override our settings. See [CMake Presets](../cmake-presets.md) for more information about that. + + +**CMake** also comes with a **GUI** which can be used for the configuration process. +The GUI looks like this: + + + +It works the same as the command line interface. +You have to specify the path to the source files and to the build directory. +Then you have to select the preset you want to use. +You can see the exposed options of the project as well. +And as the GUI already tells you: +> Press Configure to update and display new values in red, then press Generate to generate selected build files. + +These project options are currently available during configuration time: + +| Name | Default | Description | +| --- | :---: | ---| +|**BUILD_BLACKBOXTESTS**| `OFF` | Whether to build the blackbox tests. (If available)| +|**BUILD_UNITTEST**| `OFF` |Whether to build the unit tests. (If available)| +|**BUILD_SHARED_LIBS**| `OFF` | Decide whether the libraries are built as static or shared libraries.| +|**PACKAGE_SYSTEM_LIBRARIES**| `OFF` | Whether to include all system libraries when creating release packages. *(Only available in `rUNICADO`)* | +|**FIND_LIBRARIES_AS_PACKAGE**| `OFF` |If *true* the libraries are included with `find_package()`, otherwise the *submodule* with `add_subdirectory()` is used.| +|**STATIC_GLIBS**| `OFF` | Whether to link the *GCC runtime libraries* as static libraries. :warning: ^^**Experimental**^^ | + +The other options shown in the GUI are specific to **CMake**. +(*Not all options shown in the table are part of the screenshot, since the screenshot was taken before these options were introduced.*) + +### Build with CMake +Once the configuration is complete and build files are generated, the build step compiles the modules into executables or libraries. This is where CMake hands over control to the underlying compiler, which translates the C++ and Python components of UNICADO into a runnable format. +The different modules are called *targets* in the **CMake** language. + +After this step, you’ll have compiled executables and/or libraries ready to run or integrate into the UNICADO workflow. :simple-cmake: :heart: \ No newline at end of file diff --git a/docs/developer/build/python.md b/docs/developer/build/python.md index 7bb1a38feef50b5d7bcadd016a988209929be595..5df9d91a08331be7e1b0293d57c83ea802f2df51 100644 --- a/docs/developer/build/python.md +++ b/docs/developer/build/python.md @@ -3,6 +3,102 @@ title: Building Python Modules summary: How to build Python modules of UNICADO. authors: - Sebastian Oberschwendtner -date: 2024-04-09 + - Kristina Mazur +date: 2024-11-05 --- > :construction: tbd + +Some modules are written in Python. Although, the tools can run without Cmake, the recommended way is to still use it to create the virtual environment (at least for configuration!). However, if you are an expert, feel free to do it by yourself :material-arm-flex: ! + +In the following, it is explained how to [configure](#configure) and [build](#build) with CMake. It is pretty straight-forward as it is the same procedure as for C++ - just with one slight addition! + +!!! note + The required setup for Python including the `pipenv` dependency was already explained in the [developer prerequisites](../build-environment/windows.md). + +## Configure + +This is just a short recap as more information are given in the C++ section. + +1. Open a terminal inside the root directory of the *rAircraftDesign* repository. +2. Configure **CMake** by explicitly telling it which preset to use: + +=== "Windows" + + ``` { .sh .copy } + cmake --preset x64-windows-release + ``` + +=== "MinGW" + + ``` { .sh .copy } + cmake --preset x64-mingw-release + ``` +=== "Linux" + + ``` { .sh .copy } + cmake --preset x64-linux-release + ``` + +The libraries that are defined in the `Pipfile` are the ones installed in your environment. + +!!! tip + In case you want to checkout your virtual environment, you usually can find it in your user directory in .virtualenvs + +## Build + +### Install python packages + +Now this is the difference to the Cpp tools. The python tools use some of the Cpp libraries, which have to be installed via the python bindings. To do so you need to add them into your virtual environment. + +=== "Windows" + + ```sh + cmake --build --preset x64-windows-release -t install_python_package + ``` + +=== "MinGW" + + ```sh + cmake --build --preset x64-mingw-release -t install_python_package + ``` + + !!! tip + Remember: The build preset should match the one specified when configuring **CMake** :point_up:. + +=== "Unix" + + ```sh + cmake --build --preset x64-linux-release -t install_python_package + ``` + + !!! tip + Remember: The build preset should match the one specified when configuring **CMake** :point_up:. + + +### Build target + +Same as for Cpp: + +=== "Windows" + + ```sh + cmake --build --preset x64-windows-release --target <target> + ``` + +=== "MinGW" + + ```sh + cmake --build --preset x64-mingw-release --target <target> + ``` + + !!! tip + Remember: The build preset should match the one specified when configuring **CMake** :point_up:. + +=== "Unix" + + ```sh + cmake --build --preset x64-linux-release --target <target> + ``` + + !!! tip + Remember: The build preset should match the one specified when configuring **CMake** :point_up:. diff --git a/docs/developer/developer-installation.md b/docs/developer/developer-installation.md new file mode 100644 index 0000000000000000000000000000000000000000..70d37c00171f7c4f552cb61639606b9d0fe6fb4d --- /dev/null +++ b/docs/developer/developer-installation.md @@ -0,0 +1,17 @@ +There is no dedicated installer for developers. As a developer you are expected to build your own installer. :wink: + +These steps to get you up and running are *(Choose according to your operating system.)*: + +- Make sure your build system is working as explained in the [:octicons-checklist-16: developer prerequisites](../developer/build-environment/windows.md). +- Ensure you have [:octicons-repo-clone-16: cloned all repositories](../developer/get-source-code.md) +- Follow the [:simple-cmake: build instructions](../developer/build/general.md) to build the tools. Also check out the [:material-library: libaries](../developer/including-libraries.md) and the [CMake Preset](../developer/cmake-presets.md) explanation. +- Make yourself acquainted with the [style guides](../developer/style/cpp.md). +- Read about the [module structures](../developer/style/cpp-modularization.md) to learn about the strategy patterns. +- Learn about the [:material-test-tube-empty: testing procedures](../developer/testing.md). +- Read the [contribution instruction](../developer/contribute.md) to understand the process. + +Now you are ready to contribute :material-file-code: ! + +In case you need tips on how to set up your IDE, check [here](../developer/ide-setup.md). + +Relevant for UNICADO owners only: here it is explained how to create the [UNICADO release package](../developer/release-package.md) :material-white-balance-incandescent: \ No newline at end of file diff --git a/docs/developer/get-source-code.md b/docs/developer/get-source-code.md index 62acc576c04a78fe736c02fd92f02500a85e7332..3042fd7d1546a4c63a4b1746e3798863489a7d4b 100644 --- a/docs/developer/get-source-code.md +++ b/docs/developer/get-source-code.md @@ -6,7 +6,7 @@ authors: date: 2024-04-09 --- The source code of **UNICADO** is grouped into different repositories. -You can get an overview of which repository contains which topic [here](../modules/overview.md). +You can get an overview of which repository contains which topic [here](../documentation/overview.md). Whenever one repository needs another repository, we include it as a *Git Submodule*. If you are not familiar with *Git Submodules*, please read their [Documentation :octicons-link-external-16:](https://git-scm.com/book/en/v2/Git-Tools-Submodules). diff --git a/docs/developer/including-libraries.md b/docs/developer/including-libraries.md index b97c872b87169e7abf10a7eb5d47ad6a8a67c103..0ceb3d4ad4b5e49dbb8bc9a177af978ca36eb1b1 100644 --- a/docs/developer/including-libraries.md +++ b/docs/developer/including-libraries.md @@ -7,7 +7,7 @@ date: 2023-09-12 --- ## A word about including the libraries -Oh yes, the **UNICADO** [libraries](../modules/libraries.md). 🙂 +Oh yes, the **UNICADO** [libraries](../documentation/libraries.md). 🙂 When you start developing and building the **UNICADO** modules you will quickly discover the importance of the libraries. There are many ways how you can include libraries in C++ projects and all have their advantages and disadvantages. In the **UNICADO** project, the most important decisions to make are: diff --git a/docs/developer/style/cpp-modularization.md b/docs/developer/style/cpp-modularization.md new file mode 100644 index 0000000000000000000000000000000000000000..e5da1bcb697f1ae690412c22bf85761dbcc7592c --- /dev/null +++ b/docs/developer/style/cpp-modularization.md @@ -0,0 +1 @@ +@ todo take from Phabricator \ No newline at end of file diff --git a/docs/developer/style/python-modularization.md b/docs/developer/style/python-modularization.md new file mode 100644 index 0000000000000000000000000000000000000000..e5da1bcb697f1ae690412c22bf85761dbcc7592c --- /dev/null +++ b/docs/developer/style/python-modularization.md @@ -0,0 +1 @@ +@ todo take from Phabricator \ No newline at end of file diff --git a/docs/developer/testing.md b/docs/developer/testing.md index d6206b71fde85c39c39a47657f3bee6dae5a5dd0..4d5d3226d628690b85f7afe9958fc61fae0c414d 100644 --- a/docs/developer/testing.md +++ b/docs/developer/testing.md @@ -31,7 +31,7 @@ As you might have seen in the [C++ build instructions](../developer/build/cpp.md - unit tests. #### Blackbox tests -A blackbox test runs a complete module with different test cases and then checks whether a specific result is calculated or set compared to expected values defined in a `blackBoxTestCases.xml`. This is implemented in the library [blackboxTest description](../modules/libraries.md). +A blackbox test runs a complete module with different test cases and then checks whether a specific result is calculated or set compared to expected values defined in a `blackBoxTestCases.xml`. This is implemented in the library [blackboxTest description](../documentation/libraries.md). !!! attention This will only work if the module has a only the test suite defined which corresponds to the `aircraft_exchange_file` @@ -118,7 +118,7 @@ Then you can execute the test ### Automated testing {#automated} -To reduce the workload of the developer, tests can be automated. For that, the additional software [testFramework](../modules/additional-software.md) can be used. It can be executed manually (see [python build instruction](../developer/build/python.md)) or be linked to the CI/CD pipeline. The latter one ensures that it is tested before every merge request. +To reduce the workload of the developer, tests can be automated. For that, the additional software [testFramework](../documentation/additional-software.md) can be used. It can be executed manually (see [python build instruction](../developer/build/python.md)) or be linked to the CI/CD pipeline. The latter one ensures that it is tested before every merge request. !!! attention The `testFramework` is currently under construction :construction: and still needs to be linked to the CI/CD pipeline diff --git a/docs/modules/additional-software.md b/docs/documentation/additional-software.md similarity index 82% rename from docs/modules/additional-software.md rename to docs/documentation/additional-software.md index 340b7a9df547d90c6f9b5102641afa9816776d62..f91054796ecf9e4fad8ff24c6a132e3a8093ea12 100644 --- a/docs/modules/additional-software.md +++ b/docs/documentation/additional-software.md @@ -8,7 +8,7 @@ glightbox: false --- ## cpacsInterface -{.overview-img align=left} +{.overview-img align=left} The **cpacsInterface** is an additional module of the UNICADO toolchain. Its purpose is to transform the UNICADO aircraft XML file into CPACS format and vice Versa. The module consists of two modules convertUNICADO2CPACS which is responsible for converting the UNICADO aircraft exchange file into a CPACS format document, and convertCPACS2UNICADO which does the exact opposite and convert the data of the CPACS file into UNICADO format file. @@ -21,7 +21,7 @@ The module consists of two modules convertUNICADO2CPACS which is responsible for --- ## designEvaluator -{.overview-img align=left} +{.overview-img align=left} The **deignEvaluator** can be used to perform all available analysis on a designed aircraft and create all available reports for it. {.overview-item} @@ -32,7 +32,7 @@ The **deignEvaluator** can be used to perform all available analysis on a design --- ## reportGenerator -{.overview-img align=left} +{.overview-img align=left} The program collects all :simple-latex: reports of the programs and compiles a total pdf-report. {.overview-item} @@ -43,7 +43,7 @@ The program collects all :simple-latex: reports of the programs and compiles a t --- ## testFramework -{.overview-img align=left} +{.overview-img align=left} The **testFramework** is the heart of the **UNICADO** test pipeline. It can perform all required test at the different hierarchy levels. It is mainly an automation tool written specifically for the **UNICADO** project. diff --git a/docs/modules/analysis.md b/docs/documentation/analysis.md similarity index 87% rename from docs/modules/analysis.md rename to docs/documentation/analysis.md index 7b9bed3c4a963f377a74271a2c03f2368c44094f..33ddb63877f2d43c7205362d90c550309c290f7d 100644 --- a/docs/modules/analysis.md +++ b/docs/documentation/analysis.md @@ -11,7 +11,7 @@ glightbox: false --- ## calculateEmissions -{.overview-img align=left} +{.overview-img align=left} The **calculateEmissions** is an additional module of the UNICADO toolchain. Its purpose is to calculate the emissions and energy demand within the aircraft's lifecycle and to determine the missions based climate impact. For the user, possible changes in the module run configuration can be made in the related calculateEmissions_conf.xml file. @@ -28,7 +28,7 @@ The parameters comprised in this XML file can have different attributes as e.g. --- ## calculatePerformance -{.overview-img align=left} +{.overview-img align=left} The module `calculatePerformance` is used to evaluate the mission performance of the design. {.overview-item} @@ -39,7 +39,7 @@ The module `calculatePerformance` is used to evaluate the mission performance of --- ## calculatePolar -{.overview-img align=left} +{.overview-img align=left} The tool `calculatePolar` calculates, as the tool name suggests, the polars of an aircraft. CalculatePolar uses the tool Lifting Line from DLR to calculate force, lift and moment coefficients for each lifting surface of the aircraft. These coefficients are used to calculate induced, viscous and wave drag as well as the moment coefficients for the overall aircraft. @@ -54,7 +54,7 @@ lift mach numbers. --- ## costEstimation -{.overview-img align=left} +{.overview-img align=left} This modules calculates the direct operating cost (DOC) of an aircraft. Direct costs include all expenses incurred in operating and financing the aircraft: @@ -70,7 +70,7 @@ Direct costs include all expenses incurred in operating and financing the aircra --- ## massEstimation -{.overview-img align=left} +{.overview-img align=left} The Mass Estimation module calculates sub-masses and total masses of the aircraft including center of gravities. {.overview-item} @@ -81,7 +81,7 @@ The Mass Estimation module calculates sub-masses and total masses of the aircraf --- ## missionAnalysis -{.overview-img align=left} +{.overview-img align=left} The module `missionAnalysis` is the key module of the aircraft performance analysis. Its purpose is to calculate the flight trajectory, based on the inputs of the preliminary aircraft design cycle, by solving the aircraft equations of motion being simplified as a point mass model. Depending on the method, the fuel consumption is calculated either: diff --git a/docs/modules/libraries.md b/docs/documentation/libraries.md similarity index 87% rename from docs/modules/libraries.md rename to docs/documentation/libraries.md index b72fe7053ae7ddc388c920dcb079ebd70daa2d93..6cc39523dad3de4d847d5f15f643fece3f488181 100644 --- a/docs/modules/libraries.md +++ b/docs/documentation/libraries.md @@ -8,7 +8,7 @@ glightbox: false --- ## aerodynamics -{.overview-img align=left} +{.overview-img align=left} This library helps with interacting with polar data. It has helper functions to extract and interpolate data of provided airfoil polars. {.overview-item} @@ -20,7 +20,7 @@ It has helper functions to extract and interpolate data of provided airfoil pola --- ## aircraftGeometry -{.overview-img align=left} +{.overview-img align=left} This library defines geometry classes which are generally used within an aircraft. The geometry describes the general shape of the different components. The available components are: @@ -53,7 +53,7 @@ The modularity and flexibility is achieved by using the high performance [Comput --- ## aircraftNetwork -{.overview-img align=left} +{.overview-img align=left} This library can be used to define wiring harnesses within an existing aircraft geometry. You can route wire through different points and analyse the resulting network. {.overview-item} @@ -65,7 +65,7 @@ You can route wire through different points and analyse the resulting network. --- ## aixml -{.overview-img align=left} +{.overview-img align=left} The **aixml** library is the central library which handles the XML files and data access. It uses a simple XML library, namely *tinyxml*, to read and parse the XML files. {.overview-item} @@ -77,7 +77,7 @@ It uses a simple XML library, namely *tinyxml*, to read and parse the XML files. --- ## atmosphere -{.overview-img align=left} +{.overview-img align=left} The **atmosphere** library provides helper functions to calculate atmospheric properties according to the International Standard Atmosphere (*ISA*). You can set different atmospheric conditions (e.g. *ISA+25*) and calculate the physical properties of the air at different altitudes. {.overview-item} @@ -89,7 +89,7 @@ You can set different atmospheric conditions (e.g. *ISA+25*) and calculate the p --- ## blackboxTest -{.overview-img align=left} +{.overview-img align=left} The **blackboxTest** library provides an interface to run a complete module with different test cases and then checks whether a specific result is calculated or set compared to expected values defined in a `blackBoxTestCases.xml`. The tests are realized with the help of the _googleTest_ framework . {.overview-item} @@ -100,7 +100,7 @@ The **blackboxTest** library provides an interface to run a complete module with --- ## engine -{.overview-img align=left} +{.overview-img align=left} This library helps with interacting with engine data. It has helper functions to extract and interpolate data of provided engine data decks. The engine decks can originate from different softwaretools as long as they provide the same file format. @@ -113,7 +113,7 @@ The engine decks can originate from different softwaretools as long as they prov --- ## liftingLineInterface -{.overview-img align=left} +{.overview-img align=left} This library helps with interacting with results provided by the tools **Lifting Line** from DLR. It has helper functions to extract and interpolate data of the results from the tool. {.overview-item} @@ -125,7 +125,7 @@ It has helper functions to extract and interpolate data of the results from the --- ## moduleBasics -{.overview-img align=left} +{.overview-img align=left} This library provides the basis structure for the modular approach of the **UNICADO** tools. The tools are intended to follow the *Strategy Design Pattern* to execute at different fidelity levels. The library gives a template how modules should be structured and gives helpers which can be used to select and implement the different fidelity methods. @@ -155,7 +155,7 @@ Due to the flexible abstraction via so-called *two-terminal block*, any system w --- ## runtimeInfo -{.overview-img align=left} +{.overview-img align=left} This library handles the user interface during the modules execution. In provides custom output streams, which automatically handle the log files and error outputs according to the configuration files. {.overview-item} @@ -167,7 +167,7 @@ In provides custom output streams, which automatically handle the log files and --- ## spline -{.overview-img align=left} +{.overview-img align=left} The name gives it away: this library provides spline functionality for interpolating data or geometry. {.overview-item} @@ -178,7 +178,7 @@ The name gives it away: this library provides spline functionality for interpola --- ## standardFiles -{.overview-img align=left} +{.overview-img align=left} This library provides file interfaces and interacts with the operating system. It can handle process execution with a simple interface. The library can handle *UNIX* and *Windows* systems alike. @@ -194,7 +194,7 @@ The library can handle *UNIX* and *Windows* systems alike. --- ## svgPlot -{.overview-img align=left} +{.overview-img align=left} This library interact with the shapes defined by [aircraftGeometry](#aircraftgeometry) and can create different views of the shapes in **SVG** format. You can insert text and measurements for quickly creating meaningful reports. {.overview-item} @@ -206,7 +206,7 @@ You can insert text and measurements for quickly creating meaningful reports. --- ## unitConversion -{.overview-img align=left} +{.overview-img align=left} The **unitConversion** groups the most commonly used unit in aerospace and let's you convert values from one unit to another. In addition, it defines some common **constants** which are useful for calculations. {.overview-item} diff --git a/docs/modules/overview.md b/docs/documentation/overview.md similarity index 60% rename from docs/modules/overview.md rename to docs/documentation/overview.md index 0aa003a8b81fe457e1a5ed511a251c9b25794e8a..4365e8a6790d5e572da73a9089da48abcfa9a416 100644 --- a/docs/modules/overview.md +++ b/docs/documentation/overview.md @@ -9,33 +9,33 @@ glightbox: false **UNICADO** collects several modules and data which are grouped into repostories: -- [:simple-gitlab: Aircraft Design :octicons-link-external-16:](): +- [:simple-gitlab: Aircraft Design :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/aircraft-design): The aircraft design repository collect alls the [sizing tools](sizing.md) and [analysis tools](analysis.md) which are needed for the preliminary design process. -- [:simple-gitlab: Libraries :octicons-link-external-16:](): +- [:simple-gitlab: Libraries :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/libraries): Whenever some functionality is used in several modules, the functions are collected and made available within the project via [libraries](libraries.md). -- [:simple-gitlab: Additional Software :octicons-link-external-16:](): +- [:simple-gitlab: Utilities :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/utilities): - Tools which are not directly needed for the aircraft design process, like our test framework are grouped in [additional software](additional-software.md). Some helper tools which are used to convert file types and analyse results can be found here as well. + Tools which are not directly needed for the aircraft design process, like our test framework are grouped in [utilities](additional-software.md). Some helper tools which are used to convert file types and analyse results can be found here as well. -- [:simple-gitlab: Aircraft References :octicons-link-external-16:](): +- [:simple-gitlab: Aircraft References :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/aircraft-references): Here you can found different designed aircraft. The designs are made using the **UNICADO** workflow and are generally in a *valid* and *converged* state. !!! note This repository will be translated to a actual database in the future! -- [:simple-gitlab: Engines :octicons-link-external-16:](): +- [:simple-gitlab: Engines :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/engines): This collect different engines and their operating data as lookup tables which is used by several tools to analyse and estimate the engine performance. -- [:simple-gitlab: WorkflowOnRCE :octicons-link-external-16:](): +- [:simple-gitlab: WorkflowOnRCE :octicons-link-external-16:](https://git.rwth-aachen.de/unicado/rce-workflow): - Here are all the files which are relevant for executing the **UNICADO** workflow with [RCE](). + Here are all the files which are relevant for executing the **UNICADO** workflow with [RCE](https://rcenvironment.de/). -- [:simple-gitlab: UNICADO :octicons-link-external-16:](): +- [:simple-gitlab: UNICADO Package:octicons-link-external-16:](https://git.rwth-aachen.de/unicado/unicado-package): This repository is a container which collects all **UNICADO** repositories as submodules. It is used to create the **UNICADO** releases and is a **good** starting point to get developing. \ No newline at end of file diff --git a/docs/modules/sizing.md b/docs/documentation/sizing.md similarity index 85% rename from docs/modules/sizing.md rename to docs/documentation/sizing.md index 7b449554ed37fb4a6e97613bc0b14cfed762c843..8d36fc289411948f27cfc90784b3fab8120ba46f 100644 --- a/docs/modules/sizing.md +++ b/docs/documentation/sizing.md @@ -15,7 +15,7 @@ The following sizing tools are available: --- ## createMissionXML -{.overview-img align=left} +{.overview-img align=left} The **createMissionXML** is the third module of the UNICADO tool chain. Its purpose is to set up the overall flight mission including e.g. a flight segment table, speed and altitude schedules, number of passengers (PAX), total payload or the engine warm up time. For the user, possible changes in the module run configuration can be made in the related createMissionXML_conf.xml file. @@ -29,7 +29,7 @@ The parameters comprised in this file can have different attributes as e.g. Desc --- ## empennageSizing -{.overview-img align=left} +{.overview-img align=left} The **empennageSizing** module calculates characteristic parameter of the empennage of the aircraft. It takes takes the controllability as wells as the static margin of the aircraft into account and sizes the empennage accordingly. {.overview-item} @@ -41,7 +41,7 @@ It takes takes the controllability as wells as the static margin of the aircraft --- ## fuselageDesign -{.overview-img align=left} +{.overview-img align=left} The **fuselageDesign** module calculates characteristic parameters and generates the passenger cabin and fuselage layout for the entire aircraft project. {.overview-item} @@ -52,7 +52,7 @@ The **fuselageDesign** module calculates characteristic parameters and generates --- ## hydrogenTank -{.overview-img align=left} +{.overview-img align=left} :construction: *tbd* {.overview-item} @@ -63,7 +63,7 @@ The **fuselageDesign** module calculates characteristic parameters and generates --- ## initialSizing -{.overview-img align=left} +{.overview-img align=left} The module **initialSizing** is used to determine a design chart regarding Top Level Aircraft Requirements and Certification Specification Requirements. The wing-loading ($\frac{W}{S}$) and thrust to weight ratio ($\frac{T}{W}$) can be derived as the design point for further modules from the Design Chart. Furthermore an initial estimation of the takeoff mass is done. @@ -76,7 +76,7 @@ Furthermore an initial estimation of the takeoff mass is done. --- ## landingGearDesign -{.overview-img align=left} +{.overview-img align=left} The **landingGearDesign** module calculates characteristic parameters for the landing gear of entire aircraft project. {.overview-item} @@ -87,7 +87,7 @@ The **landingGearDesign** module calculates characteristic parameters for the la --- ## propulsionDesign -{.overview-img align=left} +{.overview-img align=left} The **propulsionDesign** module designs, integrates and analyzes the propulsion system to the aircraft. It uses engine performance deck containing serval parameters (like thrust, fuel-flow, ...) as a function of the flight Mach number and the altitude. The engine will be scaled by the module to match the specific thrust requirements. @@ -104,7 +104,7 @@ Also the mass properties are analyzed. --- ## systemsDesign -{.overview-img align=left} +{.overview-img align=left} The **systemsDesign** is part of the tool chain in the UNICADO aircraft design environment. It dimensions ATA chapter systems in terms of mass and energy requirement divided by hydraulic- electric- and bleed air energy requirement. {.overview-item} @@ -116,7 +116,7 @@ It dimensions ATA chapter systems in terms of mass and energy requirement divide --- ## wingDesign -{.overview-img align=left} +{.overview-img align=left} The wing design module calculates characteristic parameter of the aircraft main wing. {.overview-item} diff --git a/docs/download/getting-started.md b/docs/download/getting-started.md new file mode 100644 index 0000000000000000000000000000000000000000..7ffdb4c3c315477b42e4590dddf6ea6c662ce8b9 --- /dev/null +++ b/docs/download/getting-started.md @@ -0,0 +1,6 @@ +You want to **use** UNICADO to get familiar with the workflow and see first results? Great :fire: Then checkout the [Installation Guide](installation.md) and the [Cleared for Take-Off](takeoff.md). It includes the prerequisites, troubleshooting hints and a standalone installer. + +If you're a **developer** interested in contributing to UNICADO, follow the [Developer Installation Guide](../developer/developer-installation.md). However, you also need to checkout the [Installation Requirements](installation.md) first! + + + diff --git a/docs/getting-started/installation.md b/docs/download/installation.md similarity index 66% rename from docs/getting-started/installation.md rename to docs/download/installation.md index 49dd14515a0626a8bd2f8a65b921d907490ccef4..29783a2e7f2c673989d012982fa4763e6f015547 100644 --- a/docs/getting-started/installation.md +++ b/docs/download/installation.md @@ -7,7 +7,7 @@ - 8GB RAM - Intel Core i5 or higher -- 600MB (1.8GB in stand alone) hard disk space +- 600MB (16GB in stand alone) hard disk space *Required software:* @@ -27,28 +27,10 @@ --- -## Standalone Installation Instructions - -- First make sure **RCE** is working by launching it once. -- Download and install the workflow with the current [Installer](). -- The installation with the default settings should be fine. - ---- - -## Installation: Troubleshooting +## Troubleshooting Your installation aborts and the window closes suddenly - Create the `C:\Programs` folder by yourself. - If your installation aborts a good first guess is always to restart your pc (Because temp folders might be cleaned after a restart) - If the restart does not help, close your installation window (if still opened) go to `C:\Users\<YourUserName>\AppData\Local\Temp` and delete all folders beginning with *_M*. Afterwards execute the installer again. ---- - -## Developer Installation Instructions -There is no dedicated installer for developers. As a developer you are expected to build your own installer. :wink: - -The necessary steps to get you up and running are: - -- Ensure you have [cloned all repositories](../developer/get-source-code.md) -- Make sure your build system is working as explained in the [Developer Prerequisites](../developer/build-environment/windows.md). *(Choose according to your operating system.)* -- Then follow the [Build Instructions](../developer/build/cpp.md) to build the software and create your own installer. diff --git a/docs/download/takeoff.md b/docs/download/takeoff.md new file mode 100644 index 0000000000000000000000000000000000000000..bcb24ef5f76696ecb57c5ac4331d7a443482d3d6 --- /dev/null +++ b/docs/download/takeoff.md @@ -0,0 +1,12 @@ +--- +title: Cleared for Take-Off +summary: Instructions how to run the workflow +authors: + - Sebastian Oberschwendtner + - Maurice Zimmnau + - Kristina Mazur +date: 2024-11-05 +--- + +When you have followed the installation instructions, you can download and install the workflow with the current [:material-download: UNICADO installer](). This [standalone workflow tutorial](../tutorials/standalone.md) will show you in a video how this will look like. + diff --git a/docs/index.md b/docs/index.md index 8991514bcb7839d5640159000514d2a1b5d14fdc..f5580cc3b150c8e501fa8942f4a8a10ca20414f1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,60 +3,85 @@ title: Welcome to UNICADO summary: Home page of the UNICADO project authors: - Sebastian Oberschwendtner -date: 2023-09-08 + - Kristina Mazur +date: 2024-11-05 glightbox: false +hide: + - navigation + - toc --- - -# Welcome to UNICADO -**UNICADO** is a preliminary aircraft design tools which groups many design modules. -Go through the following stuff to get an idea what **UNICADO** is and how it works: +<div class="hero-section" markdown="1"> +{.hero-logo} +# Think. Design. Change. -<div class="grid-container" markdown="1"> -<div class="grid-item" markdown="1"> +<div class="intro-text" markdown="1"> +**UNICADO** is a conceptual aircraft design environment. It provides a _robust framework_ for designing, analyzing, and optimizing aircraft based on a minimum set of requirements. Developed in collaboration with _leading German aerospace universities_, it enables designers to define and size an aircraft's geometry, analyse performance and feasibility while balancing aerodynamic, operational, and user-specific requirements Its _modular architecture_ allows for easy customization and adaptability, enabling users to integrate new tools or methods. +</div> +<div class="download-button-container"> + <a href="download/getting-started" class="download-button">Download UNICADO</a> +</div> +</div> -:material-clock-fast:{ .lg .middle } **Getting Started** +<div class="grid-container" markdown="1"> +<div class="grid-item card" markdown="1"> +:material-clock-fast:{ .lg .accent } **Getting Started** --- -Learn how to set it up and install the required prerequisites. - -[:octicons-arrow-right-24: Getting Started](getting-started/installation.md) +Learn how to set it up & install the prerequisites. +[:octicons-arrow-right-24: Download](download/getting-started.md) </div> -<div class="grid-item" markdown="1"> -:fontawesome-solid-plane-departure:{ .lg .middle } **Cleared for Take Off** +<div class="grid-item card" markdown="1"> +:octicons-book-16:{ .lg .accent } **Ready to design** --- -Start designing aircraft to your requirements. +Design your first aircraft. + +[:octicons-arrow-right-24: Tutorials](tutorials/standalone.md) +</div> -[:octicons-arrow-right-24: Start Designing](getting-started/takeoff.md) +<div class="grid-item card" markdown="1"> +:material-library:{ .lg .accent } **Available Tools** + +--- +Get an overview of the tools and libaries. + +[:octicons-arrow-right-24: Documentation](documentation/overview.md) </div> -<div class="grid-item" markdown="1"> - -:material-library:{ .lg .middle } **Available Tools** + +<div class="grid-item card" markdown="1"> +:fontawesome-solid-plane-departure:{ .lg .accent } **Cleared to develop** --- -Get an overview which tools and components are available within **UNICADO**. +Get insights on how to contribute and develop. -[:octicons-arrow-right-24: Module Overview](modules/overview.md) +[:octicons-arrow-right-24: Get involved](developer/developer-installation.md) +</div> +<div class="grid-item card" markdown="1"> +:fontawesome-solid-user-group:{ .lg .accent } **About us** + +--- + +Read about how is behind it. + +[:octicons-arrow-right-24: About](about.md) </div> -<div class="grid-item" markdown="1"> -:material-scale-balance:{ .lg .middle } **Open Source** +<div class="grid-item card" markdown="1"> +:material-scale-balance:{ .lg .accent } **Open Source** --- -**UNICADO** is available as open source software licensed under **GPLv3**. +**UNICADO** is available as open-source software licensed under **GPLv3**. [:octicons-arrow-right-24: License](license.md) - </div> -</div> +</div> -{width="400"} \ No newline at end of file diff --git a/docs/getting-started/takeoff.md b/docs/tutorials/seperate-tool-execution.md similarity index 90% rename from docs/getting-started/takeoff.md rename to docs/tutorials/seperate-tool-execution.md index bb0ec883ee1f1f09f60e50664fec174d91d2a43a..959a7142f6b1711179941d2fd291562713173a91 100644 --- a/docs/getting-started/takeoff.md +++ b/docs/tutorials/seperate-tool-execution.md @@ -1,83 +1,68 @@ ---- -title: Cleared for Take-Off -summary: Instructions how to run the workflow -authors: - - Sebastian Oberschwendtner - - Maurice Zimmnau -date: 2023-09-08 ---- -## UNICADO Workflow - -For the full experience of aircraft design, start RCE and run the workflow -Download and install the workflow with the current [UNICADOinstaller](). - ---- - -## Separate tool execution - -You may want to build and execute UNICADO tools separately. Here we go: - -### Requirements - -Clone the following repositories: - -- **rAIRCRAFTDESIGN** - aircraft design tools -- **rAIRCRAFTREFERENCES** - aircraft reference designs -- **rADDITIONALSOFTWARE** - additional not aircraft design specific tools, e.g. for plotting - -NOTE: the repositories **rAIRCRAFTDESIGN** and **rADDITIONALSOFTWARE** shall be checked out on the same branch (e.g. *develop*), as those branches are synchronized on remote ☠and a running 🃠🃠couple 💠- -For testing purposes you most probably will choose the CSR-02 aircraft reference. Therefore, checkout the *CSR-02* branch from the **rAIRCRAFTREFERENCES** repo. - ---- - -### Project Environment - -For creating a {nav project environment} you have several options ðŸŸ. Here we'll present the two mostly used ones (Excluding the UNICADOworkflow on RCE stated at top) - -- Create a new folder for your project environment **or** use the folder where you have cloned the **rAIRCRAFTDESIGN** repo -- Copy {nav Gnuplot} and {nav Inkscape} from the folder where you have cloned the **rADDITIONALSOFTWARE** repo into your {nav project environment} -{nav name=project environment > Gnuplot } -{nav name=project environment > Inkscape } -NOTE: If you are using a unix based system make sure to copy the linux variants of *Gnuplot* and *Inkscape* named *Gnuplot-linux* and *Inkscape-linux* - -- Copy the tool(s) you want to execute / test (e.g. *initialSizing*) from your local copy of **rAIRCRAFTDESIGN** (In case you are **not** using the local copy itself as a **project environment**) -{nav name=project environment > initialSizing } -- Create a folder named *projects* within your **project environment** -{nav name=project environment > projects } -- Within your *projects* folder create a folder named as the aircraft class, e.g. {nav CSR} (CeRAS Short Range) -{nav name=project environment > projects > CSR } -- Within the aircraft class folder create a folder of the aircraft type, e.g. {nav CSR-02} -{nav name=project environment > projects > CSR > CSR-02 } -- Copy the **content** (not the folder) of a specific design folder of the corresponding aircraft from your local copy of **rAIRCRAFTREFERENCES** into the aircraft type folder. Options are -{nav cleanSheetDesign} -{nav retrofitDesign > aerodynamicCalibration} -{nav retrofitDesign > engineCalibration} -{nav retrofitDesign > withoutCalibration} -- Now you have again two options: **1.** Test the tool on an empty aircraft exchange file. **2.** Test the tool on a so called converged aircraft. - - For **1.** Delete the existing aircraft exchange fiel e.g. *CSR-02.xml*. Then rename the aircraft exchange file e.g. *CSR-02_startCSD.xml* to *CSR-02.xml* (if you have copied the cleanSheetDesign [CSD]) - - For **2.** Directly execute your tool with the available aircraft exchange file, e.g. *CSR-02.xml* - - ---- - -### Aircraft Design Tool Dependencies - -Suppose you use an empty aircraft exchange file (described above in option **1.**). -The aircraft design tools have dependencies, e.g. a fuselage 🳠has to exist in order to mount wings ðŸ¦. An aircraft geometry has to be available in order to conduct an aerodynamic analysis. - -Therefore the tools can be executed based on their dependencies in the following sequence: -{nav initialSizing > fuselageDesign > createMissionXml > wingDesign > empennageSizing > engineSizing > propulsionIntegration > landingGearDesign > calculatePolar > massEstimation > systemsDesign > missionAnalysis} - ---- - -### Tool execution - -Finally we want to execute the tool. But what if we have noticed, that there are no executables in the tool folders? 🔥 -Then the executables have first to be build inside the working copy e.g. of the **rAIRCRAFTDESIGN** repo. Please follow the instructions at [Developer](../developer/contribute.md). - -If this is done already and an executable is present, then you can execute the respective tool from within the tool folder either on windows directly via double click or via a terminal -- In cmd or powershell e.g. `initialSizing.exe` -- In git bash e.g. `./initialSizing.exe` - -If you want to examine the terminal outputs we've got you covered: `.log`-files are written for each tool +@ todo needs revision!! as its old + +You may want to execute UNICADO tools separately. Here we go: + +### Requirements + +Clone the following repositories: + +- **rAIRCRAFTDESIGN** - aircraft design tools +- **rAIRCRAFTREFERENCES** - aircraft reference designs +- **rADDITIONALSOFTWARE** - additional not aircraft design specific tools, e.g. for plotting + +NOTE: the repositories **rAIRCRAFTDESIGN** and **rADDITIONALSOFTWARE** shall be checked out on the same branch (e.g. *develop*), as those branches are synchronized on remote ☠and a running 🃠🃠couple 💠+ +For testing purposes you most probably will choose the CSR-02 aircraft reference. Therefore, checkout the *CSR-02* branch from the **rAIRCRAFTREFERENCES** repo. + +--- + +### Project Environment + +For creating a {nav project environment} you have several options ðŸŸ. Here we'll present the two mostly used ones (Excluding the UNICADOworkflow on RCE stated at top) + +- Create a new folder for your project environment **or** use the folder where you have cloned the **rAIRCRAFTDESIGN** repo +- Copy {nav Gnuplot} and {nav Inkscape} from the folder where you have cloned the **rADDITIONALSOFTWARE** repo into your {nav project environment} +{nav name=project environment > Gnuplot } +{nav name=project environment > Inkscape } +NOTE: If you are using a unix based system make sure to copy the linux variants of *Gnuplot* and *Inkscape* named *Gnuplot-linux* and *Inkscape-linux* + +- Copy the tool(s) you want to execute / test (e.g. *initialSizing*) from your local copy of **rAIRCRAFTDESIGN** (In case you are **not** using the local copy itself as a **project environment**) +{nav name=project environment > initialSizing } +- Create a folder named *projects* within your **project environment** +{nav name=project environment > projects } +- Within your *projects* folder create a folder named as the aircraft class, e.g. {nav CSR} (CeRAS Short Range) +{nav name=project environment > projects > CSR } +- Within the aircraft class folder create a folder of the aircraft type, e.g. {nav CSR-02} +{nav name=project environment > projects > CSR > CSR-02 } +- Copy the **content** (not the folder) of a specific design folder of the corresponding aircraft from your local copy of **rAIRCRAFTREFERENCES** into the aircraft type folder. Options are +{nav cleanSheetDesign} +{nav retrofitDesign > aerodynamicCalibration} +{nav retrofitDesign > engineCalibration} +{nav retrofitDesign > withoutCalibration} +- Now you have again two options: **1.** Test the tool on an empty aircraft exchange file. **2.** Test the tool on a so called converged aircraft. + - For **1.** Delete the existing aircraft exchange fiel e.g. *CSR-02.xml*. Then rename the aircraft exchange file e.g. *CSR-02_startCSD.xml* to *CSR-02.xml* (if you have copied the cleanSheetDesign [CSD]) + - For **2.** Directly execute your tool with the available aircraft exchange file, e.g. *CSR-02.xml* + + +--- + +### Aircraft Design Tool Dependencies + +Suppose you use an empty aircraft exchange file (described above in option **1.**). +The aircraft design tools have dependencies, e.g. a fuselage 🳠has to exist in order to mount wings ðŸ¦. An aircraft geometry has to be available in order to conduct an aerodynamic analysis. + +Therefore the tools can be executed based on their dependencies in the following sequence: +{nav initialSizing > fuselageDesign > createMissionXml > wingDesign > empennageSizing > engineSizing > propulsionIntegration > landingGearDesign > calculatePolar > massEstimation > systemsDesign > missionAnalysis} + +--- + +### Tool execution + +Finally we want to execute the tool. But what if we have noticed, that there are no executables in the tool folders? 🔥 +Then the executables have first to be build inside the working copy e.g. of the **rAIRCRAFTDESIGN** repo. Please follow the instructions at [Developer](../developer/contribute.md). + +If this is done already and an executable is present, then you can execute the respective tool from within the tool folder either on windows directly via double click or via a terminal +- In cmd or powershell e.g. `initialSizing.exe` +- In git bash e.g. `./initialSizing.exe` + +If you want to examine the terminal outputs we've got you covered: `.log`-files are written for each tool diff --git a/docs/tutorials/standalone.md b/docs/tutorials/standalone.md new file mode 100644 index 0000000000000000000000000000000000000000..8ccc96134806cae0387abb82b182fab4f2ff8918 --- /dev/null +++ b/docs/tutorials/standalone.md @@ -0,0 +1 @@ +@todo here should be a video showing the standalone workflow \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index a7b47dcf0b37ad5daac369812608c0e80d9aa1ba..5c71d87d484abbddbee5e089d1e1a5832d952217 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -15,122 +15,126 @@ # along with this program. If not, see <https://www.gnu.org/licenses/>. # === General site meta data === -site_name: UNICADO -repo_url: https://git.rwth-aachen.de/unicado/unicado-package -repo_name: Unicado Repository +site_name: UNICADO # The name of the site, displayed in the header. +repo_url: https://git.rwth-aachen.de/unicado/unicado-package # Link to the Git repository, will appear in the header. +repo_name: UNICADO Repository # Name for the Git repository link in the header. # === Site configuration === markdown_extensions: - - attr_list - - admonition - - md_in_html - - toc: - permalink: '#' - - pymdownx.tabbed: - alternate_style: true - - pymdownx.emoji: + - attr_list # Allows adding HTML attributes to Markdown elements (like classes). + - admonition # Enables note/warning/admonition boxes with custom styling. + - md_in_html # Allows writing Markdown inside HTML tags for flexibility. + - toc: # Adds a table of contents (ToC) for each page. + permalink: '#' # Adds a clickable '#' for each ToC heading, allowing direct links. + - pymdownx.tabbed: # Enables tabbed content blocks, allowing content to be organized in tabs. + alternate_style: true # Uses an alternate style for tabbed blocks. + - pymdownx.emoji: # Adds support for emojis using the Material theme’s emoji set. emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg - - pymdownx.highlight: - anchor_linenums: true - line_spans: __span - pygments_lang_class: true - - pymdownx.details - - pymdownx.superfences - - pymdownx.inlinehilite - - pymdownx.snippets - - pymdownx.critic - - pymdownx.caret - - pymdownx.keys - - pymdownx.mark - - pymdownx.tilde - - + - pymdownx.highlight: # Adds code syntax highlighting with custom line anchors. + anchor_linenums: true # Makes line numbers clickable in code blocks. + line_spans: __span # Adds spans around lines for custom styling. + pygments_lang_class: true # Adds language class to highlighted code for styling consistency. + - pymdownx.details # Enables collapsible details/summary blocks for content hiding/showing. + - pymdownx.superfences # Adds advanced fence syntax for blocks like code or tabs. + - pymdownx.inlinehilite # Allows inline code highlighting within text. + - pymdownx.snippets # Enables code snippets for reusing code blocks across pages. + - pymdownx.critic # Adds Critic Markup support for collaborative editing. + - pymdownx.caret # Adds support for superscript text with a caret. + - pymdownx.keys # Adds special styling for keyboard key indicators. + - pymdownx.mark # Adds highlighting functionality for text. + - pymdownx.tilde # Enables strikethrough formatting. +# Additional JavaScript files to include for rendering mathematical notation extra_javascript: - - assets/javascripts/katex.js - - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.js - - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/auto-render.min.js + - assets/javascripts/katex.js # Local KaTeX script. + - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.js # CDN KaTeX script (same as local but hosted externally). + - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/contrib/auto-render.min.js # KaTeX auto-render script (converts Latex syntax in formatted math). +# Additional CSS files to include for styling of website and mathematical notations (font, size etc.) extra_css: - - assets/css/unicado.css - - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css + - assets/css/unicado.css # Custom CSS for styling the UNICADO site. + - https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.16.7/katex.min.css # CSS for KaTeX math rendering. # === Plugins === plugins: - - glightbox + - glightbox # Plugin for lightbox-style image and content viewing. # === Theme configuration === theme: - name: material - favicon: assets/favicon.png - logo: assets/images/logos/unicado-icon.png + name: material # Specifies the theme name (alternatives: material, mkdocs, readthedocs). + favicon: assets/favicon.png # Path to the favicon image displayed in the browser tab (same as logo). + logo: assets/images/logos/unicado-icon.png # Path to the UNICADO logo displayed in the header. + custom_dir: overrides # Directory for custom files (like footer). + # Theme colors configuration palette: - scheme: slate - primary: blue grey - accent: lime + scheme: slate # Sets a dark theme style. + primary: blue grey # Main color of the theme (used for buttons, links, etc.). + accent: red # Accent color for highlights. + + # Feature configurations for navigation and ToC behavior features: - - navigation.path - - navigation.top - - navigation.tabs - - toc.follow + - navigation.instant # Enables instant navigation between pages (no reload). + - navigation.tabs # Adds navigation tabs for each main section in `nav`. + - navigation.path # Shows the navigation path/breadcrumbs. + - toc.follow # Highlights the current section in the ToC as you scroll. + + # Additional links (social) to display in the header + extra: + social: + - icon: fontawesome/brands/github # Icon for the GitHub link (uses FontAwesome icon set). + link: https://git.rwth-aachen.de/unicado/unicado-package # URL for the Git repository. + name: "Unicado Repository" # Name displayed when hovering over the repository icon. + +# === Navigation Menu === +nav: # Customizes the main navigation structure of the site. + - Home: 'index.md' # Main page of the site. + - Download: # Top-level navigation item for "Download". + - Getting Started: 'download/getting-started.md' # Link to the getting started page. + - Installation: 'download/installation.md' # Link to the installation page. + - Cleared for Take-Off: 'download/takeoff.md' # Link to the takeoff/getting started page. + - Tutorials: + - Standalone Workflow: 'tutorials/standalone.md' # Link to the standalone tutorial page. + - Seperate Tool Execution: 'tutorials/seperate-tool-execution.md' # Link to the separate tool execution tutorial page. + - Documentation: # Top-level item for documentation. + - Overview: 'documentation/overview.md' # Overview of modules. + - Aircraft Design: # Subsection for Aircraft Design. + - 'documentation/sizing.md' # Link to sizing module page. + - 'documentation/analysis.md' # Link to analysis module page. + - Libraries: 'documentation/libraries.md' # Link to libraries overview. + - Utilities: 'documentation/additional-software.md' # Link to additional software page. + - Workflow: 'workflow.md' # Link to the workflow page. + - Get involved: + - Developer Guide: developer/developer-installation.md # Top-level item for contributions and development. + - Build Instructions: + - Prerequisites: + - Windows: 'developer/build-environment/windows.md' + - Linux: 'developer/build-environment/linux.md' + - MacOS: 'developer/build-environment/macos.md' + - MSYS2/MinGW (deprecated): 'developer/build-environment/mingw.md' + - Get Source Code: 'developer/get-source-code.md' + - Build: + - General: 'developer/build/general.md' + - C++: 'developer/build/cpp.md' + - Python: 'developer/build/python.md' + - Include libraries: 'developer/including-libraries.md' + - CMake Presets: 'developer/cmake-presets.md' + - Module Development: + - Module Stucture in cpp: 'developer/style/cpp-modularization.md' + - Module Stucture in python: 'developer/style/python-modularization.md' + - Style Guide: + - C++: 'developer/style/cpp.md' + - Python: 'developer/style/python.md' + - Testing Guidelines: 'developer/testing.md' + - How to Contribute: # Subsection for contribution guidelines. + - Basics: 'developer/contribute.md' + - Merge Requests: 'developer/merge-request.md' + - Review Merge Requests: 'developer/review-merge-request.md' + - IDE Setup: 'developer/ide-setup.md' + - Release Package: 'developer/release-package.md' -# === Page Tree === -nav: - - 'Home': - - 'index.md' - - 'description.md' - - 'workflow.md' - - 'partners.md' - - 'Module Overview': - - 'modules/overview.md' - - 'Aircraft Design': - - 'modules/sizing.md' - - 'modules/analysis.md' - - 'modules/libraries.md' - - 'modules/additional-software.md' - - 'Getting Started': - - 'getting-started/installation.md' - - 'getting-started/takeoff.md' - - 'Developer': - - 'How to Contribute': - - 'Basics': 'developer/contribute.md' - - 'How to create a merge request' : 'developer/merge-request.md' - - 'How to review a merge request' : 'developer/review-merge-request.md' - - 'Build Instructions': - - 'Prerequisites': - - 'Windows': 'developer/build-environment/windows.md' - - 'Linux': 'developer/build-environment/linux.md' - - 'MacOS': 'developer/build-environment/macos.md' - - 'MSYS2/MinGW (deprecated)': 'developer/build-environment/mingw.md' - - 'Get Source Code': 'developer/get-source-code.md' - - 'Build': - - 'C++': 'developer/build/cpp.md' - - 'Python': 'developer/build/python.md' - - 'Libraries': 'developer/including-libraries.md' - - 'CMake Presets': 'developer/cmake-presets.md' - - 'Testing Guidelines': 'developer/testing.md' - - 'Release Package/Installer': 'developer/release-package.md' - - 'Style Guide': - - 'C++': 'developer/style/cpp.md' - - 'Python': 'developer/style/python.md' - - 'IDE Setup': 'developer/ide-setup.md' - # - 'Aircraft Exchange File': - # - 'General': 'aircraft-xml/general.md' - # - 'MassesAndLoadings': 'aircraft-xml/masses.md' - # - 'Geometry': 'aircraft-xml/geometry.md' - # - 'Structure': 'aircraft-xml/structure.md' - # - 'Accommodation': 'aircraft-xml/accommodation.md' - # - 'Propulsion': 'aircraft-xml/propulsion.md' - # - 'Systems': 'aircraft-xml/systems.md' - # - 'Aerodynamics': 'aircraft-xml/aerodynamics.md' - # - 'StabilityAndControlCharacteristics': 'aircraft-xml/stability.md' - # - 'Performance': 'aircraft-xml/performance.md' - # - 'MonetaryValues': 'aircraft-xml/monetary.md' - # - 'EcologicalValues': 'aircraft-xml/ecological.md' - # - 'Requirements': 'aircraft-xml/requirements.md' - # - 'DesignSpecification': 'aircraft-xml/specification.md' - - 'About': - - 'license.md' - - 'contact.md' - - 'impressum.md' + - About: # Top-level item for general site information. + - About us: 'about.md' # Link to the about page. + - License: 'license.md' # Link to license information. + - Contact: 'contact.md' # Link to contact page. + - Partners: 'partners.md' # Link to partners page. diff --git a/overrides/main.html b/overrides/main.html new file mode 100644 index 0000000000000000000000000000000000000000..520c279be9f892331aabe7c1f38e54616017c93c --- /dev/null +++ b/overrides/main.html @@ -0,0 +1,15 @@ +{% extends "base.html" %} + +{% block footer %} +<div class="custom-footer"> + <div class="footer-content"> + <p>© 2024 UNICADO. All rights reserved.</p> + <a href="/impressum/" class="footer-link">Impressum</a> + <a href="/datenschutz/" class="footer-link">Datenschutzerklärung</a> + </div> + <div class="footer-image-container"> + <img src="/assets/images/logos/bmwk.png" alt="Footer Logo" class="footer-image"> + </div> +</div> + +{% endblock %} \ No newline at end of file