diff --git a/README.md b/README.md index a9affe79a3518c067b123bc2b8e7523cde324e61..20c10476c0cd8e63abfea0fc8beab60ae71004f6 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,8 @@ The core model features a three-level structure in order to optimize entire city The three levels are prosumer, quarter, and city level. With its bottom-up approach, starting at the Prosumer level, complex structures can be approximated. This allows the user to analyze the impact of prosumer behavior on the upper city level. Different behavior patterns can originate from the electrification of heat demand, the use of demand side management, or applying electric mobility with bidirectional charging. <br> -**This project is constantly under development. As of now it is advised to use the Prosumer layer only.** +**This project is constantly under development. As of now it is advised to use the Prosumer layer only.** <br> +**Checkout the user manual in the user manual directory** [](https://www.fenaachen.net/projekte/fen-ineed-dc) [![DOI]()]() @@ -21,24 +22,30 @@ Different behavior patterns can originate from the electrification of heat deman ## Further Information -- [Model Usage](#model-usage) - - [Clone Repository](#clone-repository) - - [Install Environment](#install-environment) - - [Update Environment](#update-environment) - - [Update the yml file](#update-the-yml-file) - - [Install optimizing solvers](#install-optimizing-solvers) - - [Executing Prosumer Model](#executing-prosumer-model) -- [Contribution Guidelines](#contribution-guidelines) - - [Branches](#branches) - - [Merge into main branch](#merge-into-main-branch) - - [Environment File](#environment-file) - - [Modeling Language](#modeling-language) - - [Programming guidelines and Coding Style](#programming-guidelines) -- [Project Structure](#project-structure) - - [Main Folder](#main-folder) - - [Prosumer Library](#prosumer-library) - - [Component Library](#component-library) - - [Tools](#tools) +- [FOCUS-Framework](#focus-framework) + - [Features](#features) + - [Further Information](#further-information) + - [Model Usage](#model-usage) + - [Clone Repository](#clone-repository) + - [Install Environment](#install-environment) + - [Update Environment](#update-environment) + - [Update the yml file](#update-the-yml-file) + - [Install Optimizing Solvers](#install-optimizing-solvers) + - [Executing Prosumer Model](#executing-prosumer-model) + - [Contribution Guidelines](#contribution-guidelines) + - [Branches](#branches) + - [Merge into main branch](#merge-into-main-branch) + - [Environment File](#environment-file) + - [Modeling Language](#modeling-language) + - [Programming Guidelines and Coding Style](#programming-guidelines-and-coding-style) + - [Project Structure](#project-structure) + - [Repository FOCUS-framework](#repository-focus-framework) + - [Sub-repository Model\_Library](#sub-repository-model_library) + - [Sub-repository Tooling](#sub-repository-tooling) + - [Sub-repository GUI](#sub-repository-gui) + - [Sub-repository Database\_connector](#sub-repository-database_connector) + - [Copyright](#copyright) + - [Acknowledgements](#acknowledgements) ## Model Usage diff --git a/user_manual/.DS_Store b/user_manual/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9833e420b9cabe5549e44e8455803c364d34657d Binary files /dev/null and b/user_manual/.DS_Store differ diff --git a/user_manual/images.pptx b/user_manual/images.pptx new file mode 100644 index 0000000000000000000000000000000000000000..b9f3405ffa6fa202a865eaffc156faeb194e059b Binary files /dev/null and b/user_manual/images.pptx differ diff --git a/user_manual/images/adapterOverview.svg b/user_manual/images/adapterOverview.svg new file mode 100644 index 0000000000000000000000000000000000000000..e6edcad2c37255a467236db7adc27ec7d35b0790 --- /dev/null +++ b/user_manual/images/adapterOverview.svg @@ -0,0 +1 @@ +<svg width="3144" height="468" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-825 -1003)"><g><rect x="830.5" y="1117.5" width="627" height="241" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 986.19 1214)">Topology </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1023.41 1313)">Object</text><rect x="1887.5" y="1117.5" width="627" height="241" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2058.41 1264)">Adapter</text><rect x="2943.5" y="1010.5" width="1021" height="455" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3090.22 1214)">sub</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3222.56 1214)">-</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3246.07 1214)">Topology Object</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3377.8 1313)">Gri</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3483.22 1313)">d</text><path d="M1525.75 1224.25 1817.83 1224.25 1817.83 1251.75 1525.75 1251.75ZM1539.5 1279.25 1457 1238 1539.5 1196.75ZM1804.08 1196.75 1886.58 1238 1804.08 1279.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M68.75-13.7499 360.829-13.7497 360.829 13.7503 68.75 13.7501ZM82.5 41.2501 0 0 82.5-41.2499ZM347.079-41.2497 429.579 0.000360892 347.079 41.2503Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 2514 1238)"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/aggregationArchitectureBlock.svg b/user_manual/images/aggregationArchitectureBlock.svg new file mode 100644 index 0000000000000000000000000000000000000000..2e2ac22ca94342d24d4f263befe329fa1d942456 --- /dev/null +++ b/user_manual/images/aggregationArchitectureBlock.svg @@ -0,0 +1 @@ +<svg width="930" height="1242" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-362 -536)"><g><path d="M676.5 699.5C676.5 616.105 744.105 548.5 827.5 548.5 910.895 548.5 978.5 616.105 978.5 699.5 978.5 782.895 910.895 850.5 827.5 850.5 744.105 850.5 676.5 782.895 676.5 699.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="676.5" y="1006.5" width="302" height="302" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 802.663 1184)">A</text><path d="M833.875 850 833.875 972.229 820.125 972.229 820.125 850ZM847.625 965.354 827 1006.6 806.375 965.354Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M374.5 1616.5C374.5 1533.1 442.105 1465.5 525.5 1465.5 608.895 1465.5 676.5 1533.1 676.5 1616.5 676.5 1699.9 608.895 1767.5 525.5 1767.5 442.105 1767.5 374.5 1699.9 374.5 1616.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M978.5 1616.5C978.5 1533.1 1046.11 1465.5 1129.5 1465.5 1212.9 1465.5 1280.5 1533.1 1280.5 1616.5 1280.5 1699.9 1212.9 1767.5 1129.5 1767.5 1046.11 1767.5 978.5 1699.9 978.5 1616.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M3.16626-6.10249 274.483 134.669 268.151 146.874-3.16626 6.10249ZM274.713 119.298 301.829 156.603 255.716 155.913Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 826.829 1308)"/><path d="M830.166 1301.9 1101.48 1442.67 1095.15 1454.87 823.834 1314.1ZM1101.71 1427.3 1128.83 1464.6 1082.72 1463.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><rect x="743.5" y="1529.5" width="171" height="163" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 794.408 1637)">…</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/aggregationExampleOverview.svg b/user_manual/images/aggregationExampleOverview.svg new file mode 100644 index 0000000000000000000000000000000000000000..0c28e99140e384e447faad2c60f6ee9810d9f108 --- /dev/null +++ b/user_manual/images/aggregationExampleOverview.svg @@ -0,0 +1 @@ +<svg width="930" height="1247" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-2713 -458)"><g><path d="M3026.5 623C3026.5 539.881 3094.1 472.5 3177.5 472.5 3260.89 472.5 3328.5 539.881 3328.5 623 3328.5 706.119 3260.89 773.5 3177.5 773.5 3094.1 773.5 3026.5 706.119 3026.5 623Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3105.34 649)">root</text><rect x="3026.5" y="930.5" width="302" height="302" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3063.93 1008)">Period </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3077.06 1107)">Aggre</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3067.35 1206)">gation</text><path d="M3183.88 773 3183.88 895.229 3170.13 895.229 3170.12 773ZM3197.63 888.354 3177 929.604 3156.38 888.354Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2725.5 1539.5C2725.5 1456.1 2792.88 1388.5 2876 1388.5 2959.12 1388.5 3026.5 1456.1 3026.5 1539.5 3026.5 1622.9 2959.12 1690.5 2876 1690.5 2792.88 1690.5 2725.5 1622.9 2725.5 1539.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2806.48 1516)">Day</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2853.37 1615)">1</text><path d="M3328.5 1539.5C3328.5 1456.1 3396.1 1388.5 3479.5 1388.5 3562.89 1388.5 3630.5 1456.1 3630.5 1539.5 3630.5 1622.9 3562.89 1690.5 3479.5 1690.5 3396.1 1690.5 3328.5 1622.9 3328.5 1539.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3410.14 1516)">Day </text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3457.03 1615)">2</text><path d="M3.16626-6.10249 274.483 134.669 268.151 146.874-3.16626 6.10249ZM274.713 119.298 301.829 156.603 255.716 155.913Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 3176.83 1232)"/><path d="M3180.17 1225.9 3451.48 1366.67 3445.15 1378.87 3173.83 1238.1ZM3451.71 1351.3 3478.83 1388.6 3432.72 1387.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/aggregationVariablePlacement.svg b/user_manual/images/aggregationVariablePlacement.svg new file mode 100644 index 0000000000000000000000000000000000000000..30de1b38b59f60a86653742c082b70b33db917c7 --- /dev/null +++ b/user_manual/images/aggregationVariablePlacement.svg @@ -0,0 +1 @@ +<svg width="1554" height="1284" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-2406 -421)"><g><path d="M3026.5 623C3026.5 539.881 3094.1 472.5 3177.5 472.5 3260.89 472.5 3328.5 539.881 3328.5 623 3328.5 706.119 3260.89 773.5 3177.5 773.5 3094.1 773.5 3026.5 706.119 3026.5 623Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3105.34 649)">root</text><rect x="3026.5" y="930.5" width="302" height="302" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3063.93 1008)">Period </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3077.06 1107)">Aggre</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3067.35 1206)">gation</text><path d="M3183.88 773 3183.88 895.229 3170.13 895.229 3170.12 773ZM3197.63 888.354 3177 929.604 3156.38 888.354Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2725.5 1539.5C2725.5 1456.1 2792.88 1388.5 2876 1388.5 2959.12 1388.5 3026.5 1456.1 3026.5 1539.5 3026.5 1622.9 2959.12 1690.5 2876 1690.5 2792.88 1690.5 2725.5 1622.9 2725.5 1539.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2806.48 1516)">Day</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2853.37 1615)">1</text><path d="M3328.5 1539.5C3328.5 1456.1 3396.1 1388.5 3479.5 1388.5 3562.89 1388.5 3630.5 1456.1 3630.5 1539.5 3630.5 1622.9 3562.89 1690.5 3479.5 1690.5 3396.1 1690.5 3328.5 1622.9 3328.5 1539.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3410.14 1516)">Day </text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3457.03 1615)">2</text><path d="M3.16626-6.10249 274.483 134.669 268.151 146.874-3.16626 6.10249ZM274.713 119.298 301.829 156.603 255.716 155.913Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 3176.83 1232)"/><path d="M3180.17 1225.9 3451.48 1366.67 3445.15 1378.87 3173.83 1238.1ZM3451.71 1351.3 3478.83 1388.6 3432.72 1387.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M0.0168341-6.87498 579.362-5.45639 579.328 8.29356-0.0168341 6.87498ZM572.521-19.2232 613.72 1.50276 572.419 22.0267Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 2413 1082.5)"/><rect x="2413.5" y="887.5" width="521" height="195" stroke="#156082" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2524.53 941)">NONE_STATE:</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2466.09 1001)">pv</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2517.08 1001)">, </text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2541.72 1001)">inverter_pv,grid</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2876.3 1001)">, </text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2527.97 1062)">consumption</text><path d="M3.97757e-06-6.875 589.406-6.87466 589.406 6.87534-3.97757e-06 6.875ZM582.531-20.6247 623.781 0.000360892 582.531 20.6253Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 3951.78 622)"/><rect x="3431.5" y="427.5" width="521" height="195" stroke="#156082" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-opacity="1"/><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3493.14 541)">All</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3559.6 541)">other</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3685.07 541)">Variable</text><text fill="#000000" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="50" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3864.97 541)">s</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample.svg b/user_manual/images/architectureExample.svg new file mode 100644 index 0000000000000000000000000000000000000000..5512dae9b49caec3ce5630492333594ce85b2814 --- /dev/null +++ b/user_manual/images/architectureExample.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2484 538.814 2536 501 2588 538.814 2568.14 600 2503.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExampleTree.svg b/user_manual/images/architectureExampleTree.svg new file mode 100644 index 0000000000000000000000000000000000000000..0cbf6bf25cd67b6389bc7d986603ef24901aa0e9 --- /dev/null +++ b/user_manual/images/architectureExampleTree.svg @@ -0,0 +1 @@ +<svg width="2310" height="1426" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-495 -91)"><g><rect x="1456.5" y="432.5" width="157" height="157" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1510.1 537)">A</text><path d="M1.07413-6.79057 632.676 93.1159 630.528 106.697-1.07413 6.79057ZM628.033 78.4605 665.554 105.277 621.588 119.204Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2199.55 327)"/><path d="M1540.87 588.824 1543.52 692.23 1529.78 692.582 1527.13 589.176ZM1557.09 685.005 1537.53 726.77 1515.86 686.062Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><rect x="943.5" y="1048.5" width="159" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 999.187 1154)">S</text><path d="M1.99394-6.5795 484.682 139.701 480.694 152.86-1.99394 6.5795ZM482.09 124.548 515.586 156.25 470.127 164.025Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1537.59 892)"/><path d="M1373.5 1423C1373.5 1377.44 1410.44 1340.5 1456 1340.5 1501.56 1340.5 1538.5 1377.44 1538.5 1423 1538.5 1468.56 1501.56 1505.5 1456 1505.5 1410.44 1505.5 1373.5 1468.56 1373.5 1423Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M940.5 1423C940.5 1377.44 977.437 1340.5 1023 1340.5 1068.56 1340.5 1105.5 1377.44 1105.5 1423 1105.5 1468.56 1068.56 1505.5 1023 1505.5 977.437 1505.5 940.5 1468.56 940.5 1423Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M507.5 1423C507.5 1377.44 544.436 1340.5 590 1340.5 635.563 1340.5 672.5 1377.44 672.5 1423 672.5 1468.56 635.563 1505.5 590 1505.5 544.436 1505.5 507.5 1468.56 507.5 1423Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1022.2 1206)"/><path d="M1028.87 1206 1028.88 1304.85 1015.13 1304.85 1015.12 1206ZM1042.63 1297.98 1022 1339.23 1001.38 1297.98Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1024.02 1199.43 1424.37 1322.55 1420.33 1335.69 1019.98 1212.57ZM1421.84 1307.39 1455.2 1339.23 1409.71 1346.82Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1455.5 810C1455.5 764.436 1492.66 727.5 1538.5 727.5 1584.34 727.5 1621.5 764.436 1621.5 810 1621.5 855.563 1584.34 892.5 1538.5 892.5 1492.66 892.5 1455.5 855.563 1455.5 810Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1544.08 888.796 1761.16 1300.93 1748.99 1307.33 1531.92 895.204ZM1770.12 1288.44 1771.09 1334.54 1733.62 1307.66Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1"/><path d="M1688.5 1417.5C1688.5 1371.66 1725.66 1334.5 1771.5 1334.5 1817.34 1334.5 1854.5 1371.66 1854.5 1417.5 1854.5 1463.34 1817.34 1500.5 1771.5 1500.5 1725.66 1500.5 1688.5 1463.34 1688.5 1417.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1583 1069.81 1635 1032 1687 1069.81 1667.14 1131 1602.86 1131Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1610.23 1120)">R</text><rect x="2467.5" y="435.5" width="157" height="157" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2521.39 540)">A</text><path d="M2202.05 320.438 2514.98 418.18 2510.88 431.304 2197.95 333.562ZM2512.52 403.005 2545.74 434.99 2500.22 442.379Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2287.5 810C2287.5 764.436 2324.44 727.5 2370 727.5 2415.56 727.5 2452.5 764.436 2452.5 810 2452.5 855.563 2415.56 892.5 2370 892.5 2324.44 892.5 2287.5 855.563 2287.5 810Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2545.48 592)"/><path d="M2628.5 810C2628.5 764.436 2665.66 727.5 2711.5 727.5 2757.34 727.5 2794.5 764.436 2794.5 810 2794.5 855.563 2757.34 892.5 2711.5 892.5 2665.66 892.5 2628.5 855.563 2628.5 810Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2550.35 586.677 2688.94 699.977 2680.24 710.622 2541.65 597.323ZM2692.32 684.98 2711.21 727.056 2666.21 716.916Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M2089.5 216.5C2089.5 155.196 2139.2 105.5 2200.5 105.5 2261.8 105.5 2311.5 155.196 2311.5 216.5 2311.5 277.804 2261.8 327.5 2200.5 327.5 2139.2 327.5 2089.5 277.804 2089.5 216.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_1.svg b/user_manual/images/architectureExample_1.svg new file mode 100644 index 0000000000000000000000000000000000000000..bddc90e431d72def68d5456b8c6527f629ff2d89 --- /dev/null +++ b/user_manual/images/architectureExample_1.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2484.5 539.315 2536.5 501.5 2588.5 539.315 2568.64 600.5 2504.36 600.5Z" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_2.svg b/user_manual/images/architectureExample_2.svg new file mode 100644 index 0000000000000000000000000000000000000000..5c303a22606b58066207a0f489659fa76693e175 --- /dev/null +++ b/user_manual/images/architectureExample_2.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2484 538.814 2536 501 2588 538.814 2568.14 600 2503.86 600Z" fill="#D1D1D1" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_3.svg b/user_manual/images/architectureExample_3.svg new file mode 100644 index 0000000000000000000000000000000000000000..b0fa8096ba6cdff8af4cd8d54cb1735921ad7a28 --- /dev/null +++ b/user_manual/images/architectureExample_3.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E8E8E8" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E8E8E8" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2484.5 539.315 2536.5 501.5 2588.5 539.315 2568.64 600.5 2504.36 600.5Z" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E8E8E8" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_4.svg b/user_manual/images/architectureExample_4.svg new file mode 100644 index 0000000000000000000000000000000000000000..7efed18c08620d9495fd9e2c38eeccf8c95d08c0 --- /dev/null +++ b/user_manual/images/architectureExample_4.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2484.5 539.315 2536.5 501.5 2588.5 539.315 2568.64 600.5 2504.36 600.5Z" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_5.svg b/user_manual/images/architectureExample_5.svg new file mode 100644 index 0000000000000000000000000000000000000000..35494cc7731b52597cab99ac6ebd3e4ac3be75b8 --- /dev/null +++ b/user_manual/images/architectureExample_5.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#E97132" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#E97132" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#E97132" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#D1D1D1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#D1D1D1" fill-rule="nonzero" fill-opacity="1"/><path d="M2484.5 539.315 2536.5 501.5 2588.5 539.315 2568.64 600.5 2504.36 600.5Z" stroke="#D1D1D1" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#D1D1D1" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394 538.814 1446 501 1498 538.814 1478.14 600 1413.86 600Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/architectureExample_6.svg b/user_manual/images/architectureExample_6.svg new file mode 100644 index 0000000000000000000000000000000000000000..e33255946e26a16f4d6908cd2e5c4c885e0b6be9 --- /dev/null +++ b/user_manual/images/architectureExample_6.svg @@ -0,0 +1 @@ +<svg width="2896" height="1889" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-87 -123)"><g><path d="M1978.5 249.5C1978.5 188.196 2028.2 138.5 2089.5 138.5 2150.8 138.5 2200.5 188.196 2200.5 249.5 2200.5 310.804 2150.8 360.5 2089.5 360.5 2028.2 360.5 1978.5 310.804 1978.5 249.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.5959-6.36608 888.448 354.859 883.256 367.591-2.5959 6.36608ZM887.273 339.53 917.682 374.204 871.697 377.727Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2010.68 327)"/><path d="M2171.87 321.321 2688.4 673.705 2680.65 685.063 2164.13 332.679ZM2690.47 658.472 2712.92 698.757 2667.22 692.547Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M1010.5 784.5C1010.5 738.661 1047.66 701.5 1093.5 701.5 1139.34 701.5 1176.5 738.661 1176.5 784.5 1176.5 830.34 1139.34 867.5 1093.5 867.5 1047.66 867.5 1010.5 830.34 1010.5 784.5Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="1552.5" y="946.5" width="158" height="158" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1607.79 1052)">S</text><rect x="397.5" y="948.5" width="157" height="156" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 451.262 1052)">A</text><path d="M1.27259-6.75619 526.409 92.1578 523.863 105.67-1.27259 6.75619ZM522.198 77.3729 558.917 105.277 514.562 117.91Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1034.92 842)"/><path d="M1152.45 835.279 1598.5 931.48 1595.6 944.921 1149.55 848.72ZM1594.67 916.59 1630.65 945.448 1585.98 956.913Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M101.5 1322C101.5 1276.44 138.436 1239.5 184 1239.5 229.563 1239.5 266.5 1276.44 266.5 1322 266.5 1367.56 229.563 1404.5 184 1404.5 138.436 1404.5 101.5 1367.56 101.5 1322Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M590.5 1321C590.5 1275.44 627.437 1238.5 673 1238.5 718.564 1238.5 755.5 1275.44 755.5 1321 755.5 1366.56 718.564 1403.5 673 1403.5 627.437 1403.5 590.5 1366.56 590.5 1321Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M481.163 1099.46 596.909 1231.07 586.584 1240.15 470.838 1108.54ZM602.693 1216.83 614.447 1261.42 571.718 1244.07Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M3.86533-5.6855 209.037 133.802 201.306 145.173-3.86533 5.6855ZM211.082 118.565 233.599 158.814 187.89 152.678Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 475.599 1104)"/><rect x="102.5" y="1539.5" width="158" height="158" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 158.061 1644)">S</text><path d="M98.5002 1915C98.5002 1869.44 135.437 1832.5 181 1832.5 226.564 1832.5 263.5 1869.44 263.5 1915 263.5 1960.56 226.564 1997.5 181 1997.5 135.437 1997.5 98.5002 1960.56 98.5002 1915Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M6.87396-0.119449 8.61602 100.131-5.13191 100.37-6.87396 0.119449ZM22.2445 93.018 2.3393 134.62-18.9993 93.7346Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 183.339 1404)"/><path d="M6.87495-0.0263799 7.25913 100.095-6.49077 100.148-6.87495 0.0263799ZM20.9826 93.1675 0.516076 134.496-20.2671 93.3257Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 181.516 1697)"/><path d="M386.5 1915C386.5 1869.44 423.436 1832.5 469 1832.5 514.563 1832.5 551.5 1869.44 551.5 1915 551.5 1960.56 514.563 1997.5 469 1997.5 423.436 1997.5 386.5 1960.56 386.5 1915Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M183.918 1690.78 439.693 1810.68 433.857 1823.13 178.082 1703.23ZM439.305 1795.31 467.9 1831.5 421.795 1832.66Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M1982.5 1321C1982.5 1275.44 2019.44 1238.5 2065 1238.5 2110.56 1238.5 2147.5 1275.44 2147.5 1321 2147.5 1366.56 2110.56 1403.5 2065 1403.5 2019.44 1403.5 1982.5 1366.56 1982.5 1321Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1548.5 1321C1548.5 1275.44 1585.66 1238.5 1631.5 1238.5 1677.34 1238.5 1714.5 1275.44 1714.5 1321 1714.5 1366.56 1677.34 1403.5 1631.5 1403.5 1585.66 1403.5 1548.5 1366.56 1548.5 1321Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M1115.5 1321C1115.5 1275.44 1152.44 1238.5 1198 1238.5 1243.56 1238.5 1280.5 1275.44 1280.5 1321 1280.5 1366.56 1243.56 1403.5 1198 1403.5 1152.44 1403.5 1115.5 1366.56 1115.5 1321Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2.02093-6.57126 402.367 116.552 398.326 129.694-2.02093 6.57126ZM399.838 101.388 433.203 133.227 387.712 140.816Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1631.2 1104)"/><path d="M1637.88 1104 1637.88 1202.85 1624.13 1202.85 1624.13 1104ZM1651.63 1195.98 1631 1237.23 1610.38 1195.98Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M1633.02 1097.43 2033.37 1220.55 2029.33 1233.69 1628.98 1110.57ZM2030.84 1205.39 2064.2 1237.23 2018.71 1244.82Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M2630.5 782C2630.5 736.437 2667.44 699.5 2713 699.5 2758.56 699.5 2795.5 736.437 2795.5 782 2795.5 827.564 2758.56 864.5 2713 864.5 2667.44 864.5 2630.5 827.564 2630.5 782Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="2634.5" y="943.5" width="157" height="157" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2688.08 1048)">A</text><path d="M2718.87 864 2718.88 908.879 2705.12 908.879 2705.12 864ZM2732.62 902.004 2712 943.254 2691.38 902.004Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M2453.5 1318C2453.5 1272.44 2490.66 1235.5 2536.5 1235.5 2582.34 1235.5 2619.5 1272.44 2619.5 1318 2619.5 1363.56 2582.34 1400.5 2536.5 1400.5 2490.66 1400.5 2453.5 1363.56 2453.5 1318Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2806.5 1318C2806.5 1272.44 2843.66 1235.5 2889.5 1235.5 2935.34 1235.5 2972.5 1272.44 2972.5 1318 2972.5 1363.56 2935.34 1400.5 2889.5 1400.5 2843.66 1400.5 2806.5 1363.56 2806.5 1318Z" stroke="#AEAEAE" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M4.17813-5.45975 153.364 108.706 145.007 119.625-4.17813 5.45975ZM156.26 93.6084 176.484 135.056 131.191 126.367Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 2712.48 1100)"/><path d="M2716.18 1094.54 2865.36 1208.71 2857.01 1219.63 2707.82 1105.46ZM2868.26 1193.61 2888.48 1235.06 2843.19 1226.37Z" fill="#AEAEAE" fill-rule="nonzero" fill-opacity="1"/><path d="M2484.5 539.315 2536.5 501.5 2588.5 539.315 2568.64 600.5 2504.36 600.5Z" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2511.02 588)">R</text><path d="M1394.5 539.315 1446.5 501.5 1498.5 539.315 1478.64 600.5 1414.36 600.5Z" stroke="#AEAEAE" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#AEAEAE" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1420.86 589)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/connectionsOneToOne.svg b/user_manual/images/connectionsOneToOne.svg new file mode 100644 index 0000000000000000000000000000000000000000..58d32a9460f465ec996ac4c7084cc06218b78460 --- /dev/null +++ b/user_manual/images/connectionsOneToOne.svg @@ -0,0 +1 @@ +<svg width="2534" height="358" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-880 -357)"><g><rect x="883.5" y="365.5" width="775" height="343" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1061.64 563)">pv.output_1</text><rect x="2634.5" y="365.5" width="775" height="343" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2745.12 563)">inverter.input_1</text><path d="M1658 522.25 2565.18 522.25 2565.18 549.75 1658 549.75ZM2551.43 494.75 2633.93 536 2551.43 577.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/connectionsSum.svg b/user_manual/images/connectionsSum.svg new file mode 100644 index 0000000000000000000000000000000000000000..611f85489c7453c3c819358875ec17a0ae0ad4cf --- /dev/null +++ b/user_manual/images/connectionsSum.svg @@ -0,0 +1 @@ +<svg width="3630" height="1017" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-385 -1219)"><g><path d="M2087.5 1470C2087.5 1376.94 2164.51 1301.5 2259.5 1301.5 2354.49 1301.5 2431.5 1376.94 2431.5 1470 2431.5 1563.06 2354.49 1638.5 2259.5 1638.5 2164.51 1638.5 2087.5 1563.06 2087.5 1470Z" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="275" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2185.5 1558)">+</text><rect x="1879.5" y="1865.5" width="760" height="364" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2047.43 2024)">grid.input_1</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2022.04 2123)">grid.output_1</text><rect x="2960.5" y="1298.5" width="1050" height="343" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3053.9 1446)">my_prosumer_1.input_1</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3028.51 1545)">my_prosumer_1.output_1</text><rect x="390.5" y="1298.5" width="1168" height="343" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 460.232 1446)">my_asset_adapter_1.input_1</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 434.84 1545)">my_asset_adapter_1.output_1</text><path d="M68.75-13.75 460.476-13.7497 460.476 13.7503 68.75 13.75ZM82.5 41.2501 0 0 82.5-41.2499ZM446.726-41.2497 529.226 0.000360892 446.726 41.2503Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 1558 1469)"/><path d="M2499.75 1455.25 2891.48 1455.25 2891.48 1482.75 2499.75 1482.75ZM2513.5 1510.25 2431 1469 2513.5 1427.75ZM2877.73 1427.75 2960.23 1469 2877.73 1510.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M13.7501 68.75 13.7503 158.247-13.7497 158.247-13.7499 68.75ZM-41.2499 82.5001 0 0 41.2501 82.4999ZM41.2502 144.497 0.000360892 226.997-41.2498 144.497Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 2259 1865)"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/districtOverview.svg b/user_manual/images/districtOverview.svg new file mode 100644 index 0000000000000000000000000000000000000000..91f5f6b6d89dd75550455d27f72d6509460fd9a4 --- /dev/null +++ b/user_manual/images/districtOverview.svg @@ -0,0 +1 @@ +<svg width="3525" height="2145" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-215 -165)"><g><rect x="220.5" y="967.5" width="763" height="211" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 274.596 1049)">my_prosumer_1_a</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 484.582 1148)">dapter</text><rect x="220.5" y="1178.5" width="763" height="330" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 311.848 1320)">MemberAdapter</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 379.727 1419)">input/output</text><path d="M1756.5 1238C1756.5 1122.85 1855.22 1029.5 1977 1029.5 2098.78 1029.5 2197.5 1122.85 2197.5 1238 2197.5 1353.15 2098.78 1446.5 1977 1446.5 1855.22 1446.5 1756.5 1353.15 1756.5 1238Z" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="330" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1887.95 1344)">+</text><rect x="2969.5" y="967.5" width="763" height="211" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3023.32 1049)">my_prosumer_2_a</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3233.3 1148)">dapter</text><rect x="2969.5" y="1178.5" width="763" height="330" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3060.57 1320)">MemberAdapter</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3128.45 1419)">input/output</text><rect x="1595.5" y="170.5" width="763" height="211" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1909.44 302)">grid</text><rect x="1595.5" y="381.5" width="763" height="331" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1732.08 523)">ElectricalGrid</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1754.08 622)">input/output</text><rect x="1595.5" y="1763.5" width="763" height="212" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1648.03 1896)">my_asset_adapter</text><rect x="1595.5" y="1975.5" width="763" height="330" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1734.34 2117)">AssetAdapter</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1754.08 2216)">input/output</text><path d="M1989.75 780.75 1989.75 960.784 1962.25 960.784 1962.25 780.75ZM1934.75 794.5 1976 712 2017.25 794.5ZM2017.25 947.034 1976 1029.53 1934.75 947.034Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M2265.75 1223.25 2900.64 1223.25 2900.64 1250.75 2265.75 1250.75ZM2279.5 1278.25 2197 1237 2279.5 1195.75ZM2886.89 1195.75 2969.39 1237 2886.89 1278.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M68.75-13.75 703.637-13.7497 703.637 13.7503 68.75 13.75ZM82.5 41.25 0 0 82.5-41.25ZM689.887-41.2497 772.387 0.000360892 689.887 41.2503Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 1755.39 1237)"/><path d="M13.7501 68.75 13.7503 248.784-13.7497 248.784-13.7499 68.75ZM-41.2499 82.5 0 0 41.2501 82.5ZM41.2503 235.034 0.000360892 317.534-41.2497 235.034Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 1976 1763.53)"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/extraConfigDiagram.svg b/user_manual/images/extraConfigDiagram.svg new file mode 100644 index 0000000000000000000000000000000000000000..59d9ca5f78e1f31eef8b70fed43582df840891e5 --- /dev/null +++ b/user_manual/images/extraConfigDiagram.svg @@ -0,0 +1 @@ +<svg width="3493" height="870" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-201 -802)"><g><rect x="1898.5" y="807.5" width="1788" height="211" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="110" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2613.72 948)">pv.json</text><rect x="1898.5" y="1018.5" width="1788" height="650" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2130.94 1172)">"</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2159.44 1172)">specific_capital_expenditure</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3182.51 1172)">": 1000,</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2486.19 1271)">"</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2514.7 1271)">service_life</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2915.49 1271)">": 15,</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1988.58 1370)">"</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2018.94 1370)">factor_effort_maintenance_operation</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3345.47 1370)">": 0.02,</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2178.12 1469)">"</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2208.49 1469)">temperature_coefficient</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3067.72 1469)">": 0.0043,</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2556.68 1568)">"NOCT": 45.5</text><rect x="219.5" y="807.5" width="1077" height="211" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="92" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 472.12 942)">Configuration</text><rect x="219.5" y="1018.5" width="1077" height="587" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 252.149 1140)">Components:</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 252.149 1239)">“</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 289.388 1239)">pv</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 372.232 1239)">”:</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 318.607 1338)">type: “</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 546.353 1338)">PVGenerator</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 999.713 1338)">”</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 318.607 1437)">model: “</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 654.405 1437)">pv.json</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 919.803 1437)">”</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 318.607 1536)">capacity: 10</text><path d="M982 1403.25 1828.8 1403.25 1828.8 1430.75 982 1430.75ZM1815.05 1375.75 1897.55 1417 1815.05 1458.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/reductionArchitectureBlock.svg b/user_manual/images/reductionArchitectureBlock.svg new file mode 100644 index 0000000000000000000000000000000000000000..527bc687d35b653a1151a12a13954fd91f7f4d83 --- /dev/null +++ b/user_manual/images/reductionArchitectureBlock.svg @@ -0,0 +1 @@ +<svg width="326" height="1086" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-1993 -536)"><g><path d="M2005.5 699.5C2005.5 616.105 2073.1 548.5 2156.5 548.5 2239.9 548.5 2307.5 616.105 2307.5 699.5 2307.5 782.895 2239.9 850.5 2156.5 850.5 2073.1 850.5 2005.5 782.895 2005.5 699.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2159.88 849.962 2162.24 1274.02 2148.49 1274.1 2146.12 850.039ZM2175.95 1267.07 2155.56 1308.43 2134.7 1267.3Z" fill="#61CBF4" fill-rule="nonzero" fill-opacity="1"/><path d="M2005.5 1459.5C2005.5 1376.11 2073.1 1308.5 2156.5 1308.5 2239.9 1308.5 2307.5 1376.11 2307.5 1459.5 2307.5 1542.89 2239.9 1610.5 2156.5 1610.5 2073.1 1610.5 2005.5 1542.89 2005.5 1459.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M2101 1061.2 2153 1023 2205 1061.2 2185.14 1123 2120.86 1123Z" fill="#83CBEB" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2128.25 1111)">R</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/simple_prosumerFlowchart.svg b/user_manual/images/simple_prosumerFlowchart.svg new file mode 100644 index 0000000000000000000000000000000000000000..54aa5d5e284934d38085e09f9c0179c745b1d433 --- /dev/null +++ b/user_manual/images/simple_prosumerFlowchart.svg @@ -0,0 +1 @@ +<svg width="3805" height="601" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-297 -1159)"><g><path d="M304.5 1299.4C304.5 1276.81 322.812 1258.5 345.4 1258.5L838.6 1258.5C861.188 1258.5 879.5 1276.81 879.5 1299.4L879.5 1626.6C879.5 1649.19 861.188 1667.5 838.6 1667.5L345.4 1667.5C322.812 1667.5 304.5 1649.19 304.5 1626.6Z" stroke="#FFFFFF" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 499.997 1440)">Build </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 370.265 1526)">Architecture</text><path d="M936 1419.4 997 1419.4 997 1391 1058 1462 997 1533 997 1504.6 936 1504.6Z" fill="#AAB6C1" fill-rule="evenodd" fill-opacity="1"/><path d="M1109.5 1299.4C1109.5 1276.81 1127.81 1258.5 1150.4 1258.5L1642.6 1258.5C1665.19 1258.5 1683.5 1276.81 1683.5 1299.4L1683.5 1626.6C1683.5 1649.19 1665.19 1667.5 1642.6 1667.5L1150.4 1667.5C1127.81 1667.5 1109.5 1649.19 1109.5 1626.6Z" stroke="#FFFFFF" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1143.93 1357)">Create </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1143.93 1443)">configuration</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1143.93 1547)">•</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1185.18 1547)">Loading input </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1185.18 1612)">data</text><path d="M1740 1419.4 1801 1419.4 1801 1391 1862 1462 1801 1533 1801 1504.6 1740 1504.6Z" fill="#AAB6C1" fill-rule="evenodd" fill-opacity="1"/><path d="M1913.5 1299.4C1913.5 1276.81 1931.81 1258.5 1954.4 1258.5L2446.6 1258.5C2469.19 1258.5 2487.5 1276.81 2487.5 1299.4L2487.5 1626.6C2487.5 1649.19 2469.19 1667.5 2446.6 1667.5L1954.4 1667.5C1931.81 1667.5 1913.5 1649.19 1913.5 1626.6Z" stroke="#FFFFFF" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1948.14 1357)">Creating the </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1948.14 1443)">Topology</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1948.14 1547)">•</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1989.39 1547)">Creating the </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="60" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1989.39 1612)">Prosumer</text><path d="M2545 1419.4 2605.5 1419.4 2605.5 1391 2666 1462 2605.5 1533 2605.5 1504.6 2545 1504.6Z" fill="#AAB6C1" fill-rule="evenodd" fill-opacity="1"/><path d="M2717.5 1299.4C2717.5 1276.81 2735.81 1258.5 2758.4 1258.5L3250.6 1258.5C3273.19 1258.5 3291.5 1276.81 3291.5 1299.4L3291.5 1626.6C3291.5 1649.19 3273.19 1667.5 3250.6 1667.5L2758.4 1667.5C2735.81 1667.5 2717.5 1649.19 2717.5 1626.6Z" stroke="#FFFFFF" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 2774.89 1483)">Optimization</text><path d="M3349 1419.4 3410 1419.4 3410 1391 3471 1462 3410 1533 3410 1504.6 3349 1504.6Z" fill="#AAB6C1" fill-rule="evenodd" fill-opacity="1"/><path d="M3521.5 1299.4C3521.5 1276.81 3539.81 1258.5 3562.4 1258.5L4055.6 1258.5C4078.19 1258.5 4096.5 1276.81 4096.5 1299.4L4096.5 1626.6C4096.5 1649.19 4078.19 1667.5 4055.6 1667.5L3562.4 1667.5C3539.81 1667.5 3521.5 1649.19 3521.5 1626.6Z" stroke="#FFFFFF" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-rule="evenodd" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3691.63 1440)">Saving </text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="700" font-stretch="normal" font-size="78" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3673.92 1526)">Results</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/simple_prosumerStructure.svg b/user_manual/images/simple_prosumerStructure.svg new file mode 100644 index 0000000000000000000000000000000000000000..f4454d399ccf84587c99c475ea0bf9ae33ae8a47 --- /dev/null +++ b/user_manual/images/simple_prosumerStructure.svg @@ -0,0 +1 @@ +<svg width="3484" height="1338" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-311 -440)"><g><rect x="316.5" y="769.5" width="627" height="241" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 588.328 916)">pv</text><rect x="316.5" y="1010.5" width="627" height="439" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 403.895 1107)">PVGenerator</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 511.145 1206)">output</text><rect x="1633.5" y="776.5" width="762" height="223" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1818.91 914)">inverter_pv</text><rect x="1633.5" y="999.5" width="762" height="444" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1724.07 1099)">PowerElectronic</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1921.95 1198)">input</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 1895.32 1297)">output</text><rect x="2975.5" y="447.5" width="627" height="224" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3221.86 585)">grid</text><rect x="2975.5" y="671.5" width="627" height="369" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3044.49 783)">ElectricalGrid</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3196.66 882)">input</text><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3170.01 981)">output</text><rect x="3008.5" y="1324.5" width="594" height="224" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3068.2 1462)">consumption</text><rect x="3008.5" y="1548.5" width="594" height="223" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#46B1E1" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3213.15 1686)">input</text><path d="M816 1163.25 1796.4 1163.25 1796.4 1190.75 816 1190.75ZM1782.65 1135.75 1865.15 1177 1782.65 1218.25Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M2205.15 1263.25 3107.6 1627.6 3097.3 1653.1 2194.85 1288.75ZM3105.14 1596.95 3166.2 1666.08 3074.26 1673.45Z" fill="#156082" fill-rule="nonzero" fill-opacity="1"/><path d="M5.76024-12.4853 853.497 378.629 841.977 403.6-5.76024 12.4853ZM852.532 347.898 910.163 419.916 817.971 422.81Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(1 0 0 -1 2200 1274.92)"/><path d="M3432 956 3771.34 956" stroke="#156082" stroke-width="27.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="none" fill-rule="evenodd"/><path d="M3772 956 3779.21 1666.75" stroke="#156082" stroke-width="27.5" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="none" fill-rule="evenodd"/><path d="M1.4319e-05-13.75 277.802-13.7497 277.802 13.7503-1.4319e-05 13.75ZM264.052-41.2497 346.552 0.000360892 264.052 41.2503Z" fill="#156082" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 3778.55 1667)"/></g></g></svg> \ No newline at end of file diff --git a/user_manual/images/stageArchitectureBlock.svg b/user_manual/images/stageArchitectureBlock.svg new file mode 100644 index 0000000000000000000000000000000000000000..7061b1e6c5869d8b73deae0f6dade70ad6d1b315 --- /dev/null +++ b/user_manual/images/stageArchitectureBlock.svg @@ -0,0 +1 @@ +<svg width="930" height="1242" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" overflow="hidden"><g transform="translate(-2942 -554)"><g><path d="M3255.5 716.5C3255.5 633.105 3323.11 565.5 3406.5 565.5 3489.9 565.5 3557.5 633.105 3557.5 716.5 3557.5 799.895 3489.9 867.5 3406.5 867.5 3323.11 867.5 3255.5 799.895 3255.5 716.5Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><rect x="3255.5" y="1023.5" width="302" height="302" stroke="#4EA72E" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#4EA72E" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3382.95 1201)">S</text><path d="M3412.87 867 3412.88 989.228 3399.12 989.228 3399.12 867ZM3426.62 982.353 3406 1023.6 3385.38 982.353Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><path d="M2953.5 1633C2953.5 1549.88 3021.1 1482.5 3104.5 1482.5 3187.9 1482.5 3255.5 1549.88 3255.5 1633 3255.5 1716.12 3187.9 1783.5 3104.5 1783.5 3021.1 1783.5 2953.5 1716.12 2953.5 1633Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M3557.5 1633C3557.5 1549.88 3625.1 1482.5 3708.5 1482.5 3791.9 1482.5 3859.5 1549.88 3859.5 1633 3859.5 1716.12 3791.9 1783.5 3708.5 1783.5 3625.1 1783.5 3557.5 1716.12 3557.5 1633Z" stroke="#46B1E1" stroke-width="20.625" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#FFFFFF" fill-rule="evenodd" fill-opacity="1"/><path d="M3.16626-6.10249 274.483 134.669 268.151 146.874-3.16626 6.10249ZM274.713 119.298 301.829 156.603 255.716 155.913Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1" transform="matrix(-1 0 0 1 3405.83 1325)"/><path d="M3409.17 1318.9 3680.48 1459.67 3674.15 1471.87 3402.83 1331.1ZM3680.71 1444.3 3707.83 1481.6 3661.71 1480.91Z" fill="#4EA72E" fill-rule="nonzero" fill-opacity="1"/><rect x="3321.5" y="1551.5" width="171" height="163" stroke="#042433" stroke-width="6.875" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="8" stroke-opacity="1" fill="#156082" fill-opacity="1"/><text fill="#FFFFFF" fill-opacity="1" font-family="Aptos,Aptos_MSFontService,sans-serif" font-style="normal" font-variant="normal" font-weight="400" font-stretch="normal" font-size="83" text-anchor="start" direction="ltr" writing-mode="lr-tb" unicode-bidi="normal" text-decoration="none" transform="matrix(1 0 0 1 3372.35 1659)">…</text></g></g></svg> \ No newline at end of file diff --git a/user_manual/user_manual.md b/user_manual/user_manual.md new file mode 100644 index 0000000000000000000000000000000000000000..ac058b45c191b2e44be566215105a2d7bd3c6063 --- /dev/null +++ b/user_manual/user_manual.md @@ -0,0 +1,1670 @@ +# FOCUS Framework User Manual + +The FOCUS Framework provides a solution for modelling and simulating complex energy systems. It enables users to create a representation of energy networks including the possibility of higher abstraction levels, like districts combining mulitple prosumers. With its bottom-up approach complex structures can be approximated. This allows the user to analyze the impact of prosumer behaviour on the lowest level on the city level on top. + +For a quick start there are explanations of some of the examples in the /examples folder at the [Examples](#first-example-examplessimple_prosumer) section of this document. + +# Table of Contents +- [FOCUS Framework User Manual](#focus-framework-user-manual) +- [Table of Contents](#table-of-contents) +- [Structure Overview](#structure-overview) +- [Topology](#topology) + - [Initialization](#initialization) + - [Methods](#methods) + - [Topology.optimize(...)](#topologyoptimize) + - [component\_iden\_strs](#component_iden_strs) + - [strategy](#strategy) + - [sub\_configurations](#sub_configurations) + - [Solver Settings](#solver-settings) + - [Topology.save\_results(...)](#topologysave_results) + - [Advanced Methods](#advanced-methods) + - [Topology.build\_model(...)](#topologybuild_model) + - [Topology.get\_components(...)](#topologyget_components) + - [Prosumer Class](#prosumer-class) + - [Methods](#methods-1) + - [District and DistrictAsset Classes](#district-and-districtasset-classes) + - [DistrictAsset Class](#districtasset-class) + - [District Class](#district-class) + - [Methods](#methods-2) + - [City and CityAsset Classes](#city-and-cityasset-classes) + - [CityAsset Class](#cityasset-class) + - [City Class](#city-class) + - [Methods](#methods-3) +- [Configuration](#configuration) + - [Components](#components) + - [Component Categories and Attributes](#component-categories-and-attributes) + - [Capacity](#capacity) + - [State of Energy (first\_soe/final\_soe) for energy storage components](#state-of-energy-first_soefinal_soe-for-energy-storage-components) + - [Additional model logic for component variables](#additional-model-logic-for-component-variables) + - [Adapters for Members / Assets](#adapters-for-members--assets) + - [Member List](#member-list) + - [Asset List](#asset-list) + - [Connections](#connections) + - [Additional model logic for Connectors \& Capacities](#additional-model-logic-for-connectors--capacities) + - [Other parameters](#other-parameters) + - [Input data](#input-data) + - [Component Configuration Files](#component-configuration-files) + - [service\_life / specific\_capital\_expenditure / factor\_effort\_maintenance\_operation](#service_life--specific_capital_expenditure--factor_effort_maintenance_operation) + - [ComponentPart](#componentpart) +- [Architecture](#architecture) + - [Initialization of the Architecture](#initialization-of-the-architecture) + - [Period Aggregation](#period-aggregation) + - [Dynamic Reduction](#dynamic-reduction) + - [Stochastic Stage](#stochastic-stage) + - [Identifiers](#identifiers) + - [Profiles](#profiles) + - [Profile.from\_csv(...)](#profilefrom_csv) +- [Running the Framework - Examples](#running-the-framework---examples) + - [First Example (`/examples/simple_prosumer`)](#first-example-examplessimple_prosumer) + - [Code Explanation - simple\_prosumer](#code-explanation---simple_prosumer) + - [1. Setting up the time structure](#1-setting-up-the-time-structure) + - [2. Loading input data](#2-loading-input-data) + - [3. Setting up Prosumer configuration](#3-setting-up-prosumer-configuration) + - [4. Creating and Optimizing the Prosumer Object](#4-creating-and-optimizing-the-prosumer-object) + - [5. Saving the Results](#5-saving-the-results) + - [Model Explanation (JSON Files)](#model-explanation-json-files) + - [1. prosumer.json](#1-prosumerjson) + - [2. pv.json](#2-pvjson) + - [3. inverter\_pv.json](#3-inverter_pvjson) + - [Input Data (CSV File)](#input-data-csv-file) + - [Second Example (`/examples/aggregation`)](#second-example-examplesaggregation) + - [Code Explanation - aggregation](#code-explanation---aggregation) + - [1. Setting up the time structure with a period aggregation](#1-setting-up-the-time-structure-with-a-period-aggregation) + - [2. Loading the input data into a Profile dictionary](#2-loading-the-input-data-into-a-profile-dictionary) + - [3. Setting up the Prosumer configuration](#3-setting-up-the-prosumer-configuration) + - [4. Creating and Optimizing the Prosumer Object](#4-creating-and-optimizing-the-prosumer-object-1) + - [5. Saving the results](#5-saving-the-results-1) + - [Model Explanation (JSON Files)](#model-explanation-json-files-1) + - [Input Data(CSV File)](#input-datacsv-file) + - [Third Example (`/examples/district`)](#third-example-examplesdistrict) + - [Code Explanation](#code-explanation) + - [1. Setting up the time structure and loading the input data in the profile](#1-setting-up-the-time-structure-and-loading-the-input-data-in-the-profile) + - [2. Setting up the different Prosumers \& optimizing them](#2-setting-up-the-different-prosumers--optimizing-them) + - [3. Creating the District Asset](#3-creating-the-district-asset) + - [4. Creating the District and loading the input data](#4-creating-the-district-and-loading-the-input-data) + - [5. Optimizing the district and saving the results](#5-optimizing-the-district-and-saving-the-results) + - [Model Explanation (JSON Files)](#model-explanation-json-files-2) + + + +# Structure Overview + +The framework divides the optimization problem in two main parts: [Topology](#topology-class) and [Architecture](#architecture). +The **Topology** part focuses on the physical elements of the energy system and the relationships between them in the system, definining different [components](#components), [connections](#connections) between them and the [additional model logic](#additional-model-logic-for-component-variables) for the topology. Components within the topology can be hierarchically organized allowing for abstraction layers like districts (containing multiple prosumers and district-wide assets) and cities (containing multiple districts and city-wide assets). +The **Architecture** part manages the optimization, handling input data and refactoring between different time scales and resolutions. It supports different modeling techniques including dynamic reductions, temporal aggregations and stochastic stages. + +# Topology + +The `Topology` Class is the parent class of the classes used to model the physical aspects of the energy system: [`Prosumer`](#prosumer-class), [`District`](#district-class), [`DistrictAsset`](#districtasset-class), [`City`](#city-class) and [`CityAsset`](#cityasset-class) all inherit from this class. `Topology` **should not** be used by itself, but it is helpful for explaining how to use the Framework. +Since `District`, `DistrictAsset`, `City` and `CityAsset` all inherit from the Topology class, they also have the same methods, sometimes with minor modifications. + +## Initialization + +```PYTHON +topology = Topology(name, configuration, members, assets) +``` +**Parameters** + +- ```name```: unique identifier for this `Topology` instance +- ```configuration```: dictionary/JSON defining components, connections and additional model logic. See [configuration](#configuration). +- ```members```: dictionary of the member entities; These can be any `Topology`. They have to be [optimized](#topologyoptimize) individually beforehand! +- ```assets```: dictionary of the asset entities. These can be any `Topology`. They will be optimized together with the `City` or `District`. + +## Methods + +### Topology.optimize(...) + +```PYTHON +topology.optimize(key, architecture, component_iden_strs, strategy, sub_configurations) +``` +**Parameters** + +- ```key```(str): unique identifier for this optimization run +- ```architecture```: model architecture, see [Architecture](#architecture) +- ```component_iden_strs```: mapping of component variables to architecture parts, see [`component_iden_strs`](#component_iden_strs) +- ```strategy```: optimization objectives, see [`strategy`](#strategy) +- ```sub_configurations```: configuration for subassets with their own architectures, see [`sub_configurations`](#sub_configurations) + +#### component_iden_strs + +The ```component_iden_strs``` is used to decribe where in the [Architecture](#architecture) the different variables of a component should be placed. It´s a dictionary made of: + +- a tuple consisting of (`component_name`, [`ComponentPart`](#componentpart)) +- identifier defining under which part in the architecture the variables of the component should be placed. For the exact syntax of these identifiers, see [Identifiers](#identifiers). Identifiers used here should be **complete**. + +**Example** (from [Second Example](#4-creating-and-optimizing-the-prosumer-object-1)): + +```PYTHON +{ + ("pv", ComponentPart.NONE_STATE): "a_0(,)", + ... +} +``` + +This places the none state variables of "pv" in the first aggregation. + +#### strategy + +There are several optimization strategies. You can choose one or more at a time. This has to be a ```string``` or a ```list of strings```. It can also be a dict with `{str: [objectives]}` for a multi-objective problem. + +- "```annuity```" - optimizes for cost per year +- "```peak_power_cost```" - optimizes for peak power cost +- "```co_2_emissions```" - optimizes for co2-emissions + +#### sub_configurations + +Contains a dictionary of name and configurations for **assets** in the topology hierarchy. +Each of the subconfigurations contains: +- Unique identifier for the optimization run +- Architecture configuration +- Component Identifiers +- Stategy +- Further nested sub-configurations + +**These are the same you would expect for [Topology.optimize(...)](#topologyoptimize)**. + +**Example** (from [Third Example](#5-optimizing-the-district-and-saving-the-results)): + +```PYTHON +{"my_asset": ("sized", architecture, {}, ["annuity"], {})} +``` + +Here the parameters used to [optimize](#topologyoptimize) my_asset are: + +- ```key```: "sized", +- ```architecture```: architecture, +- ```component_iden_strs```: {} +- ```strategy```: ["annuity"], +- ```sub_configurations```: {} + + +#### Solver Settings + +The default solver for this framework is Gurobi (gurobi 9.0.3) +The default solver parameters (which can be modified in topology.py) are: + +- ```MIPGap```:0.01 +- ```Presolve```: 2 +- ```TimeLimit```: 200 seconds + +The solver can be changed in ```Model_Library / optimization_model.py : OptimizationModel.solve()``` using the instructions in the comments of the method. Every solver that is able to have pyomo model inputs can be used. + +### Topology.save_results(...) + +```PYTHON +topology.save_results(path, keys) +``` + +**Parameters** + +- ```path```: results directory +- ```keys```: list of keys of previous optimization runs, that should be saved + - **None**: saves results from last used key + - **str**: saves results for specified key + - **List[str]**: saves results for multiple keys + +**Output Format** +Results are saved as Excel files with: + +- Filename: topology_name.xlsx +- Sheets: Named by optimization keys +- Content: Data for all optimized variables + +## Advanced Methods + +### Topology.build_model(...) + +```PYTHON +model = topology.build_model(architecture, component_iden_strs, strategy, sub_model_configurations) +``` +Constructs the optimization model with constrains and objective functions. + +### Topology.get_components(...) + +```PYTHON +components = topology.get_components(self, kind=ComponentKind.ALL, commodity=ComponentCommodity.ALL) +``` + +Sorts the components by kind and comodity and returns a list of the components in the topology meeting the critera. + +## Prosumer Class + +The prosumer is the lowest building block in the topology pyramid. It represents an entity that can both produce and/or consume and/or store energy. This could for example be a household with solar panels. + +**Initialization** + +```python +prosumer = Prosumer(name, configuration) +``` + +For parameters, see [Topology](#topology-class). + +### Methods + +**Prosumer.optimize(...)** + +```python +prosumer.optimize(key, architecture:, component_iden_strs, strategy, sub_configurations) +``` + +**Parameters** + +- ```sub_configurations```: Since the Prosumer has no assets or members, the sub_configurations dictionary should remain empty. +- otherwise same as [Topology.optimize(...)](#topologyoptimize). + +## District and DistrictAsset Classes + +### DistrictAsset Class + +DistrictAssets represent shared resources within a district, like a powerplant. + +```PYTHON +district_asset = DistrictAsset(name, configuration) +``` + +For parameters, see [Topology](#topology-class). + +DistrictAssets don´t have to be optimized individually, they will automatically be optimized with the corresponding parent `Topology`. + +### District Class + +Districts represent areas containing multiple prosumers and shared resources. They serve as an intermediary level in the hierarchy between the individual prosumers and the city. + +```PYTHON +district = District(name, configuration, prosumers, district_assets) +``` + +For parameters, see [Topology](#topology-class). + +#### Methods + +**District.optimize(...)** + +```python +ditrict.optimize(key, architecture, component_iden_strs, strategy, sub_configurations) +``` + +For parameters, see [Topology.optimize(...)](#topologyoptimize). + +## City and CityAsset Classes + +### CityAsset Class + +CityAssets represent shared assets between all districts of a city. + +```PYTHON +city_asset = CityAsset(name, configuration) +``` + +For parameters, see [Topology](#topology-class). + +CityAssets don´t have to be optimized individually, they will automatically be optimized with the corresponding parent `Topology`. + +### City Class + +Cities represent the top level in the topology hierarchy. The can combine multiple districts and city-wide assets into one big energy system. + +```PYTHON +city = City(name, configuration, districts, city_assets) +``` + +For parameters, see [Topology](#topology-class). + +#### Methods + +**City.optimize(...)** + +```Python +city.optimize(key, architecture, component_iden_strs, strategy, sub_configurations) +``` + +For parameters, see [Topology.optimize(...)](#topologyoptimize). + + +# Configuration + +The configuration specifies the system's components, their connections, additional logic, members, assets and extra parameters. + +For better readability and ease of use its recommended to write the configuration in a JSON file. + +The configuration is one big json dictionary: + +```JSON +{ + "components": { + "component1":{...}, + "component2":{...} + }, + "connections": [ + {...}, + {...} + ], + "additional_model_logic":{...}, + "members":[...], + "assets":[...], + "extra_parameter1":..., + "extra_parameter2":..., + ... + +} +``` + +The keys are: + - ```components```: dictionary of the different components, as defined in [components](#components) + - ```connections```: list of the connections between the different components, as defined in [connections](#connections) + - ```additional_model_logic```: dictionary of the additional model logic as described in [additional_model_logic for multiple components](#additional-model-logic-for-multiple-components) + - ```members```: list of names of all the [members](#member-list) of the sub-Topologies + - ```assets```: list of names of all the [assets](#asset-list) of the sub-Topologies + - one for each additional parameter (see [other parameters](#other-parameters)) + +To see what a full configuration file looks like, look at the [examples](#model-explanation-json-files) at the end. + + +## Components + +Components describe the lowest level of the system. They define the model equivalent of physical components or certain physyical aspects of the system like consumption. Each component has to be defined with a unique identifier and their specific attributes in a dictionary. + +**Example** (from First Example / [pv.json](#2-pvjson)) + +```JSON +{ +"pv": { + "type": "PVGenerator", + "model": "pv.json", + "min_capacity": 10, + "max_capacity": 10 + } +} +``` + +This example defines a component with id "pv" of type PVGenerator with the following attributes: + +- ```type```: type of component +- ```model```: name of the model configuration file, see [extra configuration files](#extra-configuration-files) +- ```min_capacity```/```max_capacity```: capacity range of the component + +All components must have a **unique identifier (id)** and a **type attribute**. Additional attributes are specific to the **type** of each component. + + +### Component Categories and Attributes + +The following table is an overview of the different **available components** (Type), if they need a **capacity** (Capacity), what **attributes** (Configuration) they need in the configuration, if they need an additional [JSON file](#extra-configuration-files) (Model) for the model and if they need additional [input data](#input-data) (Input Data). + +Some attributes are **required** in the configuration or the model json for the components. + +These are written **bold** in the following table, the others are optional + +Base types are parent classes and can not be used in the configuration. They are marked in ***bold cursive*** and start with "Base": + +| Type | Capacity | Configuration | Model | Input Data | +| --------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| ***BaseBusBar*** | NONE | **`type`** | no | | +| ElectricalBusBar | NONE | **`type`** | no | | +| ***BaseComponent*** | REQUIRED | **```type```**: string (type name), **```model```**: string (model name), **```capacity```**: float | **```efficiency```**: float, (```specific_capital_expenditure```:float, ```factor_effort_maintenance_operation```: float) | | +| AbsorptionChiller | REQUIRED | same as BaseComponent | same as BaseComponent | | +| CompressorChiller | REQUIRED | same as BaseComponent | same as BaseComponent | | +| BiPowerElectronic | REQUIRED | same as BaseComponent | **```rated_power_side_a```**: string ("input"; "output"), **```rated_power_side_b```**: string ("input"; "output"), **```efficiency_a```**: float, **```efficiency_b```**: float, same as BaseComponent | | +| PowerElectronic | REQUIRED | same as BaseComponent | same as BaseComponent | | +| PVGenerator | REQUIRED | same as BaseComponent | **```NOCT```**: float, **```temperature_coefficent```**: float, same as BaseComponent | **```irradiance```, ```temperature```, ```power_factors```** (needs either ```power_factors``` or ```temperature``` **and** ```irradiance```). If ```power_factors``` is provided, ```temperature``` and ```irradiance``` is ignored. | +| CHP | REQUIRED | same as BaseComponent | **```thermal_efficiency```**: float, **```electric_efficiency```**: float, same as BaseComponent | | +| ElectricalBoiler | REQUIRED | same as BaseComponent | same as BaseComponent | | +| GasBoiler | REQUIRED | same as BaseComponent | same as BaseComponent | | +| GasHeatPump | REQUIRED | same as BaseComponent | same as BaseComponent | | +| HeatExchanger | REQUIRED | same as BaseComponent | same as BaseComponent | | +| HeatPump | REQUIRED | same as BaseComponent | same as BaseComponent | **```temperature```** | +| SolarThermalCollector | REQUIRED | same as BaseComponent | same as BaseComponent | **```irradiance```** | +| Electrolyzer | REQUIRED | same as BaseComponent | same as BaseComponent | | +| FuelCell | REQUIRED | same as BaseComponent | **```thermal_efficiency```**: float, **```electric_efficiency```**: float, same as BaseComponent | | +| ElectricRadiator | REQUIRED | same as BaseComponent | same as BaseComponent | | +| Radiator | REQUIRED | same as BaseComponent | same as BaseComponent | | +| ***BaseConsumption*** | NONE | **```type```** | not needed | | +| ColdConsumption | NONE | **```type```** | not needed | | +| ElectricalConsumption | NONE | **```type```** | not needed | | +| HotWaterConsumption | NONE | **```type```** | not needed | | +| HeatConsumption | NONE | **```type```** | not needed | | +| ***BaseGeneration*** | NONE | **```type```** | not needed | **```generation```** | +| ElectricalGeneration | NONE | **```type```** | not needed | **```generation```** | +| ***BaseGrid*** | OPTIONAL | **```type```** , [```capacity```](#capacity), ```price```, ```injection_price```, ```peak_power_cost```, ```co2_emisions``` | not needed | | +| ColdGrid | OPTIONAL | same as BaseGrid | not needed | | +| ElectricalGrid | OPTIONAL | same as BaseGrid | not needed | | +| GasGrid | OPTIONAL | same as BaseGrid | not needed | | +| HeatGrid | OPTIONAL | same as BaseGrid | not needed | | +| ***BaseStorage*** | REQUIRED | **```type```**, **```model```**, **```capacity```**, [```first_soe```, ```final_soe```](#state-of-energy-first_soefinal_soe-for-energy-storage-components) | **```input_efficiency```**: float, **```output_efficiency```**: float, **```e2p_in```**:float, **```e2p_out```**: float, **```self_discharging_loss```**:float | | +| Battery | REQUIRED | same as BaseStorage | same as BaseStorage | | +| HeatStorage | REQUIRED | same as BaseStorage | same as BaseStorage | | +| HydrogenStorage | REQUIRED | same as BaseStorage | same as BaseStorage | + +### Capacity + +The ```capacity``` attribute of components can be **none**, **optional** or **required**. +Capacity can be also be defined as a single value or as a capacity range: + +- Single value: + ```JSON + "inverter_pv": { + "type": "PowerElectronic", + "model": "inverter_pv.json", + "capacity": 10, + } + ``` +- Capacity range: + + ```JSON + "inverter_pv": { + "type": "PowerElectronic", + "model": "inverter_pv.json", + "min_capacity": 10, + "max_capacity": 12 + } + ``` + +Depending on the capacity attribute of your component, the configuration of the ```capacity```/```min_capacity```/```max_capacity``` is handled differently in the model: + +| | NONE | OPTIONAL | REQUIRED | +| ---------------------------------------------------------------- | ------- | ------------------------------------------------------------ | -------------------------------------------------------- | +| ```min_capacity``` Specified | ignored | uses ```min_capacity```; ```max_capacity``` as free variable | uses ```min_capacity```; ```max_capacity``` free variable | +| ```max_capacity``` Specified | ignored | uses ```max_capacity```; ```min_capacity``` as free variable | uses ```max_capacity```; ```min_capacity``` free variable | +| ```min_capacity``` & ```max_capacity``` Specified | ignored | uses ```min_capacity``` and ```max_capacity``` | uses ```min_capacity``` and ```max_capacity``` | +| ```capacity``` Specified | ignored | uses ```capacity``` | uses ```capacity``` | +| ```min_capacity```/```max_capacity``` & ```capacity``` Specified | ignored | uses ```capacity``` | uses ```capacity``` | + +--- + +### State of Energy (first_soe/final_soe) for energy storage components + +These attributes define the state of energy of energy storages at the start and end of the model period. The attributes ```first_soe``` (start value) and ```final_soe``` (end value) can be defined as either fixed values or constraints: +Using a **Value**: + +```JSON +"component_name": { + [...] + "first_soe": 1.0, + "final_soe": 0.5, + [...] +} +``` + +Using a **Constraint**: +The state of energy is dynamically applied to the model: + +```JSON +"component_name": { + [...] + "final_soe": { + "sense": ">=", + "value": [1.0, "first_soe"] + } + [...] +} +``` + +- ```sense```: "==", "<=" or ">=" +- ```value```: a tuple [factor: int/float, variable]. The example above sets the end state of energy equal or greater than the beginning state. + +### Additional model logic for component variables + +For each component additional logic to add further constrains on component variables can be included in the configuration. The penalties/factors are applied to all objective functions regardless of number of objectives and strategies. +There are two types of additional logic for components: + + **```RampPenalty```** +A RampPenalty adds a cost to changes in the component variable to discourage rapid increases/decreases. +```JSON +"component_name": { + [...] + "additional_model_logic": { + "penalty_name": { + "type": "RampPenalty", + "variable": "variable_id", + "variable_ub": 1, + "objective_factor": 0.001 + } + } +} +``` + +- ```variable```: component variable +- ```variable_ub```: the upper bound for variable. Can either be "```capacity```" or a set value (float) +- ```objective_factor```: scaling factor for the penalty + +**```additional_operational_objective```** +An additional_operational_objective adds a custom scaling factor to a components variable. +```JSON +"component_name": { + [...] + "additional_model_logic": { + "penalty_name": { + "type": "additional_operational_objective", + "value": [factor, variable] + } + } +} +``` + +- ```value```: list consisting of a scaling **factor** (int/float) and a **variable** name (string) of the component + +### Adapters for Members / Assets +Adapters are used to link lower level Topology objects to higher level ones. +They are for example used to link the Prosumer or DistrictAsset objects to a District. + +<p align="center"> +<img src="images/adapterOverview.svg" height=70> +</p> + +There are two types of Adapters: +- **MemberAdapters**: for linking `Topology` objects to under another `Topology` object as a member +- **AssetAdapters**: for linking `Topology` objects to under another `Topology` object as an asset + +The name of the member or asset need to be in the member/asset list. + +They are also part of the **component** dictionary and are created like this: + +**configuration.json** +```JSON +{ + "components":{ + "asset_adapter_name": { + "type": "AssetAdapter", + "asset": "asset_name", + "grid": "grid_name" + }, + "member_adapter_name": { + "type": "MemberAdapter", + "member": "member_name", + "grid": "grid_name" + }, + ... + } +} +``` +- ```adapter_name```: name for the adapter +- ```type```: either MemberAdapter or AssetAdapter +- ```member```or ```asset```: the name of the member or asset +- ```grid```: the name of the grid; needs to be a sub-class of ***BaseGrid*** + +## Member List +The Member list contains the names for all the members of the Topology object. It has to be in the configuration if there are member to be included in the model. +```JSON + "members": ["my_prosumer_1", "my_prosumer_2"], +``` + +## Asset List +The Asset list contains the names for all the assets of the Topology object. It has to be in the configuration if there are assets to be included in the model. +```JSON +"assets": ["my_asset"], +``` + +## Connections + +Connections define how components are linked to each other. The **```connections```** array contains these connections, with two different types available to define their behavior + +- **```OneToOne```** + This defines a connection from one source to one destination + - ```type```: "OneToOne" + - ```from```: source + - ```to```: destination + + Example: + + <p align="center"> + <img src="images/connectionsOneToOne.svg" height=70> + </p> + + ```JSON + "connections": [ + { + "type": "OneToOne", + "from": "pv.output_1", + "to": "inverter_pv.input_1" + }, + [...] + ] + ``` + +- **```Sum```** + The sum connection sums the input/outputs of all members of the sum connection together. A sum connection must always include both input and output connectors of the component. + - ```type```: "Sum" + - ```members```: array listing component ids + + + + Example: + + <p align="center"> + <img src="images/connectionsSum.svg" height=180> + </p> + + ```JSON + "connections": [ + { + "type": "Sum", + "members": [ + "grid.input_1", + "grid.output_1", + "my_prosumer_1_adapter.input_1", + "my_prosumer_1_adapter.output_1", + "my_asset_adapter.input_1", + "my_asset_adapter.output_1" + ] + }, + [...] + ] + ``` + +Connections themselves can also have several optional attributes + +- ```loss_factor```: defines the loss factor for the connection, with the default value 0. The `loss_factor` is applied by multiplying the sum of the input flows by 1 - `loss_factor`, thereby reducing the output flows. +- ```capacity```: defines the capacity of the connection with default **None**. `capacity`is applied by adding a constraint that ensures the sum of the connections input flows does not exceed the `capacity` value. + + Example of a ```OneToOne``` connection with all configuration options: + + ```JSON + "connections": [ + { + "type": "OneToOne", + "from": "pv.output_1", + "to": "inverter_pv.input_1", + "loss_factor": 0.01, + "capacity": 5 + }, + [...] + ] + + ``` + +## Additional model logic for Connectors & Capacities + +In addition to the [additional model logic for component variables](#additional-model-logic-for-component-variables) there are a few more ways to impose additional constraints on the model. These are constraints on the connections or variables of multiple components: + + - ```ConnectorEnable```: + ConnectorEnable allows to activate/deactivate a specific connection for each timestep of the model. + + ```JSON + "additional_model_logic": { + "logic_name": { + "type": "ConnectorEnable", + "connectors": [ + "component.output_1" + ] + }, + [...] + } + ``` + + For this to work, there needs to be boolean enable data (True/False) included in the model. See [input data](#input-data). + + - ```ConnectionEnable```: + ConnectionEnable allows to activate/deactivate a specific connection for each timestep of the model. + + ```JSON + "additional_model_logic": { + "logic_name": { + "type": "ConnectionEnable", + "connections": [ + { + "from": "component1.output_1", + "to": "component2.input_1" + }, + { + "from": "component2.output_1", + "to": "component1.input_1" + } + ] + }, + [...] + } + ``` + + For this to work, there needs to be boolean enable data (True/False) included in the model. See [input data](#input-data) and [profiles](#profiles). + + - ```EqualCapacity```: + EqualCapacity is used to link the values of two different capacities together, so they are the same value. + ```JSON + "additional_model_logic": { + "logic_name": { + "type": "EqualCapacity", + "components": ["component1", "component2"] + }, + [...] + } + ``` + +## Other parameters + +In addition to the configuration of components and connections, various system-wide parameters can be defined: + +- ```planning_horizon```: defines number of years for which the system is planned +- ```price_change_factor```: a factor that dictates how prices change per time period (inflation rate) +- ```interest_factor```: represents the interest rates (e.g. 1.05 for 5% rate) + +## Input data + +Some of the components require additional input data, which should be loaded into the model at runtime. To handle this, a [Profile](#profiles) object - designed to match the dynamic structure of the [Architecture](#architecture) - has to be used. +The details on formatting and handling of this data are explained in the [Profiles](#profiles) section and illustrated by some [examples](#running-the-framework---examples). +The [table](#component-categories-and-attributes) of the component attributes indicates whether a component requires input data (Input-Data column). + +## Component Configuration Files + +Certain components require a dedicated componenent model JSON file to define the additional attributes of the component. This file provides more configuration options for the component. +If there are multiple components with the same attributes they can use the same json file. +The [table](#component-categories-and-attributes) above specifies the available attributes and if they are required or not. The json contains a dictionary with key:value pairs corresponding to the attributes in the table. + +**Example** +<p align="center"> +<img src="images/extraConfigDiagram.svg" height=150> +</p> + +***configuration.json*** +```JSON +{ + "components": { + "pv": { + "type": "PVGenerator", + "model": "pv.json", + "capacity": 10, + } + } +} +``` +**pv.json** +```JSON +{ + "specific_capital_expenditure": 1000, + "service_life": 15, + "factor_effort_maintenance_operation": 0.02, + "temperature_coefficient": 0.0043, + "NOCT": 45.5 +} +``` + +### service_life / specific_capital_expenditure / factor_effort_maintenance_operation + +All components that require a component model json file and have a **capacity** can have these attributes in their model file. + +- ```service_life```: float, expected lifetime in years; default: None +- ```specific_capital_expenditure```: float, cost per unit of capacity for installation; default: 0 +- ```factor_effort_maintenace_operation```: float, cost per year per capacity; default: 0 + +For these configuration options to be considered in the model, one of the objectives of the optimization must be **annuity**, otherwise they will be ignored. + +## ComponentPart + +ComponentPart is an enum which describes the different types of variables within components. It is used to categorize the different types of variables of the component in the optimization model. + +- ```ComponentPart.NONE_STATE``` - for non-state variables +- ```ComponentPart.STATE``` - state variables +- ```ComponentPart.DESIGN``` - design variables: model values +- ```ComponentPart.ALL``` - all variables - refers to all three kinds + +For the purposes of mapping input data to the right Block in the Architecture use **ComponentPart.NONE_STATE**; the others are for internal use in the framework. + + +# Architecture + +The Architecture mostly works behind the scenes to define the mathematical structure of the optimization model. It is built like a tree which is organized hierarchially and represents how the model is structured and data is linked. + +In the following example a model of the standard household with both electricity and heating demands is used to illustrate the construction of the architecture. The objective is to represent the energy usage over one week while accounting for various patterns - daily cycles, the differences between weekdays and weekends, changes in the temporal resolution and stochastic influences such as weather. + +The diagram below provides an overview over an example architecture where the nodes of the tree are called blocks (blue circles in the diagram) and the parts in between linking the different blocks together are called dynamics. + +<p align="center"> +<img src="images/architectureExampleTree.svg" height=250> +</p> + +```PYTHON +hourly_steps = np.full(24 * 7, 3600, dtype=int) +architecture = Architecture(DynamicTree(hourly_steps).root()) + +daily_periods = [24 * [3600]] +architecture.root.add_period_aggregation(daily_periods, [0] * 7) + +day_types = [ + [10 * 3600, 2 * 3600, 4 * 3600, 8 * 3600], + [8 * 3600, 8 * 3600, 8 * 3600] +] +weekly_pattern = [0, 0, 0, 0, 0, 1, 1] +architecture.root.add_period_aggregation(day_types, weekly_pattern) + +heating_reduction = [6 * 3600] * 4 +architecture.root.period(0,0).add_dynamic_reduction(heating_reduction) + +weather_probabilities = [0.5, 0.3, 0.2] +architecture.period(0,0).add_stochastic_stage(weather_probabilities) +``` + +This simple example establishes an architecture that differentiates between daily profiles, adjusts the resolution for specific processes (e.g. heating) and incorporates external uncertainties (here weather). The following sections explain each of these elements in further detail: + +## Initialization of the Architecture + +```PYTHON +hourly_steps = np.full(24 * 7, 3600, dtype=int) +architecture = Architecture(DynamicTree(hourly_steps).root()) +``` + +The Architecture object is initialized with the root of a DynamicTree, which represents the entire temporal span of the model. The dynamic tree is constructed with a np-array with length of the desired time-step count and the number of seconds per time step as the fill value. The framework supports different time-step lengths and counts. + +## Period Aggregation +Period Aggregations allow the user to group similar time periods - such as weekdays vs weekends - together in order to capture recurring patters of the system effectively in the model. By consolidating time intervals with similar characteristics together, period aggregations simplify the the representations of these patterns and also reduce computational load. +Each period aggregation creates dedicated blocks for every defined group of periods in the architecture. +Each period can have an arbitrary amount of time steps with arbitrary lengths, but they need to add up to the length of each period. + +```PYTHON +architecture.root.add_period_aggregation(periods, period_order) +``` + + <p align="center"> + <img src="images/aggregationArchitectureBlock.svg" height="150"> + </p> + +In the example above the period aggregation is used twice: + +Once it it used to represent the week as one representative day: + +```PYTHON +daily_periods = [24 * [3600]] +architecture.root.add_period_aggregation(daily_periods, [0] * 7) +``` +and once more to represent the week as weekday and weekend: + +```PYTHON +day_types = [ + [10 * 3600, 2 * 3600, 4 * 3600, 8 * 3600], + [8 * 3600, 8 * 3600, 8 * 3600] +] +weekly_pattern = [0, 0, 0, 0, 0, 1, 1] +architecture.root.add_period_aggregation(day_types, weekly_pattern) +``` + +To add more parts under the periods of the aggregation the ```period(aggregation_index,period_index)```function on the upper block. The aggregation index counts up from 0, so to access the second period of the second aggregation under the root block use ```architecture.root.period(1,1)```. + +In the example the period aggregation could be used to represent the energy requirements of the household for the typical weekday and typical weekend. + +## Dynamic Reduction + +A Dynamic Reduction enables lowering the time resolution for specific sections of the model, thereby reduction computational complexity for components that don't require the full detail provided by the time steps of the block above. In practice the Dynamic Reduction adds one block to the architecture that operates at a coarser temporal resolution. This block is useful when modeling components with slower dynamic changes, where a larger stepsize is completely sufficient to capture the essential behavior without compromising overall model accuracy. + +```python +architecture.root.add_dynamic_reduction(d_steps) +``` + +```d_steps``` is a list with the reduced time steps. len(d_steps) * length of time step has to be the same as the same as in the level above. + + <p align="center"> + <img src="images/reductionArchitectureBlock.svg" height="150"> + </p> + +In the example the dynamic reduction is used in the first aggregation to reduct the stepsize from 1 hour to 6 hours: +```PYTHON +heating_reduction = [6 * 3600] * 4 +architecture.root.period(0,0).add_dynamic_reduction(heating_reduction) +``` + +To add more parts under the reduction or to access it for other reasons use the ```reduction(reduction_index)```function on the block above the reduction. Indices for reduction blocks start at 0, so e.g. to access the first reduction block under the root use ```architecture.root.reduction(0)```. +In the example a period reduction could be used for a heating system, that due to thermal inertia wouldn't need to be modeled as fine as an electrical system. + +## Stochastic Stage +Randomness can be incorporated in the model using the Stochastic Stage, which allows multiple scenarios with assigned probabilities to be integrated. Each scenario adds their own block to the model. A stochastic stage can be used to model different random influences on the model, like weather or other uncertainties. + +```python +architecture.root.add_stochastic_stage(probabilities) +``` +<p align="center"> +<img src="images/stageArchitectureBlock.svg" height="150"> +</p> + +```PYTHON +weather_probabilities = [0.5, 0.3, 0.2] +architecture.root.add_stochastic_stage(weather_probabilities) +``` + +In the example the stochastic stage could be used to model the influence of three different weather conditions on the output of a PV-Generator over the entire week. + +## Identifiers + +Identifiers recursively identify single or groups of pieces of the Architecture. +The identifier describes the path from the top down through the Architecture to reach the wanted piece(s). +Indexes start with 0. Sub-identifiers can be empty to describe the current block or dynamic. + +1. **Empty** "" + - base structure +2. **Dynamic Reduction** "r_X.A" + - ```X```: reduction index + - ```A```: sub-identifiers +3. **Period Aggregation** "a_X(A_1,A_2,...,A_n)" + - ```X```: aggregation index + - ```A_n```: sub-identifier +4. **Period** "p_X_Y.A" + - ```X```: aggregation index + - ```Y```: period index + - ```A```: sub identifier +5. **Stochastic Stage** "d_X(A_1, ..., A_n)" + - ```X```: stage index + - ```A_n```: sub-identifier +6. **Scenario** "s_X_Y.A" + - ```X```: stage index + - ```Y```: scenario index + - ```A```: sub-identifier + + Parts that can have multiple patterns/scenarios (Aggregation/Stage) can recursively define the path further down the tree for each of there children A_n; for this they use "sub-identifiers" in the parenthesis. + +Identifiers can be classified in two different ways: + +- **singular**: the identifier only consists of r-, p- and s- pieces. It describes a path to one specific block. +- **complete**: the identifier doesn't include any p- or s- pieces. This means it's possible to resample all data back to the root node. + + +<p align="center"> +<img src="images/architectureExample.svg" height=350> +</p> + +**Example Traversal** + +Some of the examples of the tree from the model above are explained here: + +1. **r_0.a_0(,)** + - first reduction -> first period_aggregation + - not singular, complete + +<p align="center"> +<img src="images/architectureExample_1.svg" height=200> +</p> + +2. **r_0.p_0_1.** + - first reduction -> (first period_aggregation) -> second period + - singular, not complete + +<p align="center"> +<img src="images/architectureExample_2.svg" height=200> +</p> + +3. **r_0.p_0_0.s_0_1.** + - first reduction -> (first period_aggregation) -> first period -> (first stochastic_stage) -> second scenario + - singular, not complete + +<p align="center"> +<img src="images/architectureExample_3.svg" height=200> +</p> + +4. **r_0.s_0_2.** + - first reduction -> (first stochastic stage) -> third scenario + - singular, not complete + +<p align="center"> +<img src="images/architectureExample_4.svg" height=200> +</p> + +5. **r_0.a_(d_0(,),)** + - first reduction -> first period_aggregation -> first stochastic stage and second period + - not singular, complete + +<p align="center"> +<img src="images/architectureExample_5.svg" height=200> +</p> + +6. **""** (empty identifier) + - root identifier + - singular, complete + +<p align="center"> +<img src="images/architectureExample_6.svg" height=200> +</p> + +## Profiles + +The Profile class is used to store values and associate them with the specific dynamic structure required by the corresponding Architecture. +It supports both numeric and boolean data types and provides capabilites to resample between the different dynamic structures. Values can be imported directly using the constructor of ```Profile``` or imported from a .csv files using ```Profile.from_csv(...)```. +A profile object can be thought of as a list of data values combined with a corresponding dynamic that describes how the data is set up in the model. + +**Notes**: +- boolean profiles can only be resampled if the resampling process of the data is bool-safe. +- the dynamic structure and the provided values must match in shape + +```Python +profile = Profile(values, dynamic) +``` + +**Parameters** +- ```values```: input values, np-array +- ```dynamic```: the ArchitectureDynamic that is used with the input data. Use architecture.get_dynamic(...) + + +### Profile.from_csv(...) + +The input .csv file is tested for issues concerning the fit of the data to the given architecture. CSV files must have a matching index structure with the provided dynamic. + +```PYTHON +input_profiles = Profile.from_csv("data.csv", dynamic) +``` +**Parameters** +- ```path```: path to the .csv file with the input data +- ```dynamic```: the dynamic that is used with the input data. Use architecture.get_dynamic(...) + +**Return**: this method returns a dictionary with key: column name and value: profile object with data. + +**Data Structure** + +The input data for different parts needs different index structures. Data thats supposed to be under the root block doesn´t need any indices, just time-series data with the resolution of the Architecture; Period Aggregation needs the aggregated data in a 2-index structure with first index the period and second index the time step (see [Example 2 - Input Data](#input-datacsv-file)). The Stochastic Stage needs the input data in a two index structure with first index stage number and second index time step and Dynamic Reduction needs only one index for the time step. +Input data multiple steps down from the root of the model needs even more complicated indices to denote the parts of the model it should be linked to. + +To find out the required index structure especially for larger architecture it is easiest to first use an empty .csv file and then use a debugger to find the expected_index variable of the from_csv(...) method where the framework throws the empty file error and use this as a guide for the index structure of the csv file. + +<p align="center"> +<img src="images/architectureExample.svg" height=200> +</p> + +Here are a few examples for the input data of different parts of the tree: + +- **r_0.a_0(,)**: -> expected_index (from debugger): + + ```MultiIndex([(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5)])``` + + **data.csv** index structure: + + | Period (index1) | Time Step (index2) | + | ---------------- | ------------------- | + | 0 | 0, 1, 2, 3, 4, 5 | + | 1 | 0, 1, 2, 3, 4, 5 | + + +- **r_0.a_(d_0(,),)**: -> expected_index (from debugger): + + ```MultiIndex([(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 0, 5), (0, 1, 0), (0, 1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 1, 5), (1, 0, 0), (1, 1, 0), (1, 2, 0), (1, 3, 0), (1, 4, 0), (1, 5, 0)])``` + + **data.csv** index structure: + + | index1 | index2 | index3 | (description)| + | ------------- | ---------------- | ---------------- | - | + | 0 | 0 | 0, 1, 2, 3, 4, 5 | stochastic stage block 0| + | 0 | 1 | 0, 1, 2, 3, 4, 5 | stochastic stage block 1| + | 1 | 0, 1, 2, 3, 4, 5 | 0 | period aggregation block 1| + + +# Running the Framework - Examples + +## First Example (`/examples/simple_prosumer`) + +The first example describes a simple electricity system of a household with solar panels connected to an electrical grid. + +<p align="center"> +<img src="images/simple_prosumerStructure.svg" height=220> +</p> + +```PYTHON +from Model_Library.architecture import Architecture, Profile +from Model_Library.dynamics import DynamicTree +from Model_Library.topology import Prosumer + +import json +import numpy as np + +architecture = Architecture(DynamicTree(np.full(24, 3600, dtype=int)).root()) + +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("")) + +with open("prosumer.json") as f: + prosumer_json = json.load(f) + +prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] +prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] +prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" +] + +prosumer = Prosumer("my_prosumer", prosumer_json) + +prosumer.optimize("sized", architecture, {}, ["annuity", "peak_power_cost"], {}) + +prosumer.save_results("output_files") +``` + +### Code Explanation - simple_prosumer + +<p align="center"> +<img src="images/simple_prosumerFlowchart.svg" height=90> +</p> + +The model is used by following these steps. + +#### 1. Setting up the time structure + +```PYTHON +architecture = Architecture(DynamicTree(np.full(24, 3600, dtype=int)).root()) +``` + +- creates a time structure representing 24 Hours (with 3600 seconds each) + +#### 2. Loading input data + +```PYTHON +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("")) +``` + +- loading the time series data from data.csv into a [Profile](#profile-class) object. In this example its irradiance, temperature, electricity_demand. +- assigns the data to the time structure provided by the architecture + + For the temperature column of the input data a simplified profile object could look like this: + + | | Description | Data | + |----------|----------------------------------------------------------|------------------------------| + | dynamic | Links to the dynamic of the corresponding architecture | SimpleArchitectureDynamic object| + | values | Values from the .csv file | [-0.2, -0.1, 0.1, ..., 3.4] | + | is_bool | Checks if data type is boolean | false | + +Since this example only uses the root node of the Architecture, architecture.get_dynamic("") returns a SimpleArchitectureDynamic object to use for the profile. + +#### 3. Setting up Prosumer configuration + +```PYTHON +with open("prosumer.json") as f: + prosumer_json = json.load(f) + +prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] +prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] +prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" +] +``` + +- loading the prosumer configuration from prosumer.json +- integrate the time series data Profile objects from the input_profiles dictionary into the appropriate components + - PV requires irradiance and temperature + - consumption requires electricity_demand + +#### 4. Creating and Optimizing the Prosumer Object + +```PYTHON +prosumer = Prosumer("my_prosumer", prosumer_json) + +prosumer.optimize("sized", architecture, {}, ["annuity", "peak_power_cost"], {}) +``` + +- creating the Prosumer object using the configuration from earlier +- optimizing the system using + - the identifier "sized" + - the architecture + - an empty dict for component identifiers, this means all components are at the root block of the architecture + - optimization objectives: "annuity" and "peak_power_cost" + - an empty dictionary for sub-configurations, since the prosumer has no assets + +#### 5. Saving the Results + +```PYTHON +prosumer.save_results("output_files") +``` +- Saving the Results to the "output_files" directory in an xlsx format. + +### Model Explanation (JSON Files) + +Short explanation of the JSON files: + +#### 1. prosumer.json + +```JSON +{ + "components": { + //Defines the PV-Generator Object + "pv": { + "type": "PVGenerator", + "model": "pv.json", + "min_capacity": 10, + "max_capacity": 10 + }, + //Defines the Inverter of the PV-Generator + "inverter_pv": { + "type": "PowerElectronic", + "model": "inverter_pv.json", + "min_capacity": 10, + "max_capacity": 10 + }, + //Defines the Electrical Grid + "grid": { + "type": "ElectricalGrid", + "price": 0.3046, + "injection_price": 0.0793 + }, + //Defines the Consumption + "consumption": { + "type": "ElectricalConsumption" + } + }, + //Definitions of energy flow with the connections list + "connections": [ + { + "type": "OneToOne", + "from": "pv.output_1", + "to": "inverter_pv.input_1" + }, + { + "type": "OneToOne", + "from": "inverter_pv.output_1", + "to": "grid.input_1" + }, + { + "type": "OneToOne", + "from": "inverter_pv.output_1", + "to": "consumption.input_1" + }, + { + "type": "OneToOne", + "from": "grid.output_1", + "to": "consumption.input_1" + } + ], + //Defining additional attributes of the model + "planning_horizon": 20, + "price_change_factor": 1.02, + "interest_factor": 1.05 +} +``` + +- defines the components and connections of the entire system and some additional values + +#### 2. pv.json + +```JSON +{ + //Defines further Attributes of the PV-Generator, these are not Component-Specific and could be used for multiple PV-Generators. + "specific_capital_expenditure": 1000, + "service_life": 15, + "factor_effort_maintenance_operation": 0.02, + "temperature_coefficient": 0.0043, + "NOCT": 45.5 +} +``` + +#### 3. inverter_pv.json + +```JSON +{ + //Defines further Attributes of the Inverter + "specific_capital_expenditure": 242, + "service_life": 15, + "factor_effort_maintenance_operation": 0.02, + "efficiency": 0.9694, + "rated_power_side": "input" +} +``` + +All characteristic values can be found [here](#component-categories-and-attributes). + +### Input Data (CSV File) + + +|irradiance|temperature|electricity_demand| +|----------|-----------|------------------| +|0.903952639192718|-0.2 |0.2172824994776384| +[23 more lines] + +Since all components of the model are in the root node, no indices need to be specified in the .csv file. +This example includes a 24 hour dataset matching the 24 hour time structure from the Architecture. + +There are 3 columns: + +- ```irradiance```, ```temperature``` -> these are required for the PV component +- ```electricity_demand``` -> this is required for the consumption component + +## Second Example (`/examples/aggregation`) + +This example is a bit more complex. It uses a temporal aggregation with two example day to describe a 10 day period. Otherwise it is the same prosumer as the simple_prosumer example. + +```PYTHON +from Model_Library.architecture import Architecture, Profile +from Model_Library.component.core import ComponentPart +from Model_Library.dynamics import DynamicTree +from Model_Library.topology import Prosumer + +import json +import numpy as np + +architecture = Architecture(DynamicTree(np.full(240, 3600, dtype=int)).root()) +architecture.root.add_period_aggregation( + [[12 * 3600, 1 * 3600, 11 * 3600], [7 * 3600, 8 * 3600, 9 * 3600]], + [0, 0, 1, 1, 0, 1, 0, 1, 1, 0] +) + +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("a_0(,)")) + +with open("prosumer.json") as f: + prosumer_json = json.load(f) + +prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] +prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] +prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" +] + +prosumer = Prosumer("my_prosumer", prosumer_json) + +prosumer.optimize( + "sized", + architecture, + { + ("pv", ComponentPart.NONE_STATE): "a_0(,)", + ("inverter_pv", ComponentPart.NONE_STATE): "a_0(,)", + ("grid", ComponentPart.NONE_STATE): "a_0(,)", + ("consumption", ComponentPart.NONE_STATE): "a_0(,)", + }, + ["annuity"], + {}, +) + +prosumer.save_results("output_files") +``` + +### Code Explanation - aggregation + +#### 1. Setting up the time structure with a period aggregation + +```PYTHON +architecture = Architecture(DynamicTree(np.full(240, 3600, dtype=int)).root()) +architecture.root.add_period_aggregation( + [[12 * 3600, 1 * 3600, 11 * 3600], [7 * 3600, 8 * 3600, 9 * 3600]], + [0, 0, 1, 1, 0, 1, 0, 1, 1, 0] +) +``` + +- creates time structure representing 240 hours/10 days with 3600 seconds +- adds a period aggregation to the root node with two different period types: + - Period 0: Day divided into 12 Hours, 1 Hour, 11 Hours + - Period 1: Day divided into 7 Hours, 8 Hours, 9 Hours +- the [0, 0, 1, 1, 0, 1, 0, 1, 1, 0] Array determines the sequence of periods over the whole 10 days +<p align="center"> +<img src="images/aggregationExampleOverview.svg" height="200"> +</p> + +#### 2. Loading the input data into a Profile dictionary + +```PYTHON +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("a_0(,)")) +``` + +- loads the aggregated data from the .csv file into Profile objects +- maps the data to the aggregation block specified by ["a_0(,)"](#block-identifiers) +- unlike the first example, the data in data.csv has two periods with 3 values each + + +#### 3. Setting up the Prosumer configuration + +```PYTHON +prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] +prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] +prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" +] +``` + +- same as in the [first example](#3-setting-up-prosumer-configuration) + +#### 4. Creating and Optimizing the Prosumer Object + +```PYTHON +prosumer = Prosumer("my_prosumer", prosumer_json) + +prosumer.optimize( + "sized", + architecture, + { + ("pv", ComponentPart.NONE_STATE): "a_0(,)", + ("inverter_pv", ComponentPart.NONE_STATE): "a_0(,)", + ("grid", ComponentPart.NONE_STATE): "a_0(,)", + ("consumption", ComponentPart.NONE_STATE): "a_0(,)", + }, + ["annuity"], + {}, +) + +``` + +- creates the prosumer object with the configuration +- each none-state variable of the components get explicitly assigned to the aggregation dynamic in component_iden_strs + +<p align="center"> +<img src="images/aggregationVariablePlacement.svg" height="200"> +</p> + +#### 5. Saving the results + +```PYTHON +prosumer.save_results("output_files") +``` + +- the same as in the [first example](#5-saving-the-results) + +### Model Explanation (JSON Files) + +The JSON Model is the same as in the first [example](#model-explanation-json-files). + +### Input Data(CSV File) + +The data in this example is a bit more complex since it needs to match the time structure of the aggregation. For that there are now two columns for the different indeces + +|***(period)***|***(step)*** |irradiance |temperature |electricity_demand| +|------|------|-----------|------------|------------------| +|0 |0 |26.99297186|0.458333333 |0.303301789 | +|0 |1 |69.61964239|2.6 |0.4874752 | +|0 |2 |9.737929804|2.627272727 |0.491499482 | +|1 |0 |0.386325544|4.057142857 |0.189637601 | +|1 |1 |64.74740572|4.025 |0.46511345 | +|1 |2 |2.433504788|-0.911111111|0.500020777 | + +- first column: Period index (0 or 1) +- second column: Step within period (0,1 or 2) + +The input data for a period aggregation always needs two columns; one for the period and one for the steps. + +## Third Example (`/examples/district`) +This example models an entire district with multiple prosumers and one shared district asset. To connect the different lower levels like Prosumer or Asset the framework uses adapters. + + +<p align=center> +<img src="images/districtOverview.svg" height=300> +</p> + +```PYTHON +from Model_Library.architecture import Architecture, Profile +from Model_Library.dynamics import DynamicTree +from Model_Library.topology import District, DistrictAsset, Prosumer + +import json +import numpy as np + +architecture = Architecture(DynamicTree(np.full(24, 3600, dtype=int)).root()) + +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("")) + +prosumer_paths = { + "my_prosumer_1": "prosumer_1.json", + "my_prosumer_2": "prosumer_2.json", +} + +prosumers = dict() +for prosumer_name, prosumer_path in prosumer_paths.items(): + with open(prosumer_path) as f: + prosumer_json = json.load(f) + + prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] + prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] + prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" + ] + + prosumers[prosumer_name] = Prosumer(prosumer_name, prosumer_json) + +for prosumer_name, prosumer in prosumers.items(): + prosumer.optimize("sized", architecture, {}, ["annuity"], {}) + + prosumer.save_results("output_files") + +with open("asset.json") as f: + district_asset_json = json.load(f) + +district_asset = DistrictAsset("my_asset", district_asset_json) + +with open("district.json") as f: + district_json = json.load(f) + +district_json["components"]["grid"]["price"] = input_profiles["electricity_price"] +district_json["components"]["grid"]["injection_price"] = input_profiles[ + "electricity_price" +] + +district = District( + "my_district", district_json, prosumers, {"my_asset": district_asset} +) + + +district.optimize( + "sized", + architecture, + {}, + ["annuity"], + {"my_asset": ("sized", architecture, {}, ["annuity"], {})}, +) + +district.save_results("output_files") +``` + +### Code Explanation + +#### 1. Setting up the time structure and loading the input data in the profile + +```PYTHON +architecture = Architecture(DynamicTree(np.full(24, 3600, dtype=int)).root()) + +input_profiles = Profile.from_csv("data.csv", architecture.get_dynamic("")) +``` + +- same as the [first example](#1-setting-up-the-time-structure) + +#### 2. Setting up the different Prosumers & optimizing them + +```PYTHON +prosumer_paths = { + "my_prosumer_1": "prosumer_1.json", + "my_prosumer_2": "prosumer_2.json", +} + +prosumers = dict() +for prosumer_name, prosumer_path in prosumer_paths.items(): + with open(prosumer_path) as f: + prosumer_json = json.load(f) + + prosumer_json["components"]["pv"]["irradiance"] = input_profiles["irradiance"] + prosumer_json["components"]["pv"]["temperature"] = input_profiles["temperature"] + prosumer_json["components"]["consumption"]["consumption"] = input_profiles[ + "electricity_demand" + ] + + prosumers[prosumer_name] = Prosumer(prosumer_name, prosumer_json) + +for prosumer_name, prosumer in prosumers.items(): + prosumer.optimize("sized", architecture, {}, ["annuity"], {}) + + prosumer.save_results("output_files") +``` + +- creating prosumers using the prosumer_path dictionary and saving them in the prosumers dictionary +- the prosumers are set up like in the [first example.](#3-setting-up-prosumer-configuration); the only difference is that my_prosumer_2 has a battery and bi-power electronic for the battery +- each prosumer is optimized on its own + +#### 3. Creating the District Asset + +```PYTHON +with open("asset.json") as f: + district_asset_json = json.load(f) + +district_asset = DistrictAsset("my_asset", district_asset_json) +``` + +- the DistrictAsset is created in the same way a prosumer would be + +#### 4. Creating the District and loading the input data + +```PYTHON +with open("district.json") as f: + district_json = json.load(f) + +district_json["components"]["grid"]["price"] = input_profiles["electricity_price"] +district_json["components"]["grid"]["injection_price"] = input_profiles[ + "electricity_price" +] + +district = District( + "my_district", district_json, prosumers, {"my_asset": district_asset} +) +``` + +- the data from the profile for the grid is loaded into the district_json. +- the district object gets created. In this step the district_asset is passed in a dictionary with its id. + +#### 5. Optimizing the district and saving the results + +```PYTHON +district.optimize( + "sized", + architecture, + {}, + ["annuity"], + {"my_asset": ("sized", architecture, {}, ["annuity"], {})}, +) +district.save_results("output_files") + +``` + +- the district object is optimized and the results are save in /output_files +- since the asset is optimized with the District itself, it is passed as subconfiguration with its own configuration and objective, while the prosumer objects had to be optimized explicitly in advance + +### Model Explanation (JSON Files) + +**district.json:** +```json +{ + //define the members of the district + "members": ["my_prosumer_1", "my_prosumer_2"], + //define assets of the district + "assets": ["my_asset"], + //define components + "components": { + //electrical grid + "grid": { + "type": "ElectricalGrid" + }, + //adapter for my_prosumer_1 + "my_prosumer_1_adapter": { + "type": "MemberAdapter", + "member": "my_prosumer_1", + "grid": "grid" + }, + //adapter for my_prosumer_2 + "my_prosumer_2_adapter": { + "type": "MemberAdapter", + "member": "my_prosumer_2", + "grid": "grid" + }, + // adapter for my_asset + "my_asset_adapter": { + "type": "AssetAdapter", + "asset": "my_asset", + "grid": "grid" + } + }, + //define connections + "connections": [ + { + //sum connection adds all these inputs and outputs together + "type": "Sum", + "members": [ + "grid.input_1", + "grid.output_1", + "my_prosumer_1_adapter.input_1", + "my_prosumer_1_adapter.output_1", + "my_prosumer_2_adapter.input_1", + "my_prosumer_2_adapter.output_1", + "my_asset_adapter.input_1", + "my_asset_adapter.output_1" + ] + } + ] +} +``` + +To connect the Prosumers and DistrictAsset to the District, [Member-/AssetAdapters](#adapters-for-members--assets) are used. \ No newline at end of file