tug/docs_sphinx/images/class_diagram.svg
Max Lübke 8456f2212d BREAKING CHANGE: tug as header-only library
build: installation of library is now possible
2023-10-19 12:20:39 +02:00

4 lines
41 KiB
XML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than draw.io -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1181px" height="1111px" viewBox="-0.5 -0.5 1181 1111" content="&lt;mxfile host=&quot;app.diagrams.net&quot; modified=&quot;2023-10-17T09:18:50.013Z&quot; agent=&quot;Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0&quot; etag=&quot;rtjpdY3mq8oJWifzAXnP&quot; version=&quot;22.0.4&quot; type=&quot;device&quot;&gt;&#xA; &lt;diagram name=&quot;Seite-1&quot; id=&quot;nGvXA32G2q4WGHVliUfI&quot;&gt;&#xA; &lt;mxGraphModel dx=&quot;987&quot; dy=&quot;-617&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;1&quot; pageScale=&quot;1&quot; pageWidth=&quot;827&quot; pageHeight=&quot;1169&quot; math=&quot;1&quot; shadow=&quot;0&quot;&gt;&#xA; &lt;root&gt;&#xA; &lt;mxCell id=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#xA; &lt;mxCell id=&quot;2&quot; value=&quot;&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=none;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;590&quot; y=&quot;1223&quot; width=&quot;910&quot; height=&quot;1061&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;3&quot; value=&quot;Grid&amp;amp;lt;T&amp;amp;gt;&quot; style=&quot;swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;645&quot; y=&quot;1719&quot; width=&quot;280&quot; height=&quot;390&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;4&quot; value=&quot;- dim:int&amp;lt;br&amp;gt;- col:int&amp;lt;br&amp;gt;- row:int&amp;lt;br&amp;gt;- domain_col: int&amp;lt;br&amp;gt;- domain_row: int&amp;lt;br&amp;gt;- delta_col: T&amp;lt;br&amp;gt;- delta_row: T&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;3&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;26&quot; width=&quot;280&quot; height=&quot;114&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;5&quot; value=&quot;&quot; style=&quot;line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;&quot; parent=&quot;3&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;140&quot; width=&quot;280&quot; height=&quot;8&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;6&quot; value=&quot;+ &amp;lt;u&amp;gt;Grid&amp;lt;/u&amp;gt;(col: int)&amp;lt;br&amp;gt;+ &amp;lt;u&amp;gt;Grid&amp;lt;/u&amp;gt;(row: int, col: int)&amp;lt;br&amp;gt;+ setConcentrations(concentrations: MatrixX&amp;amp;lt;T&amp;amp;gt;)&amp;lt;br&amp;gt;+ getConcentrations(): MatrixX&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;+ setAlpha(alpha: MatrixX&amp;amp;lt;T&amp;amp;gt;)&amp;lt;br&amp;gt;+ setAlpha(alpha_x: MatrixX&amp;amp;lt;T&amp;amp;gt;, alpha_y: &amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;amp;nbsp; MatrixX&amp;amp;lt;T&amp;amp;gt;)&amp;lt;br&amp;gt;+ getAlphaX(): MatrixX&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;+ getAlphaY(): MatrixX&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;+ getDim(): int&amp;lt;br&amp;gt;+ getRow(): int&amp;lt;br&amp;gt;+ getCol(): int&amp;lt;br&amp;gt;+ setDomain(domain_col: int)&amp;lt;br&amp;gt;+ setDomain(domain_row: int, domain_col: int)&amp;lt;br&amp;gt;+ getDeltaCol(): T&amp;lt;br&amp;gt;+ getDeltaRow(): T&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;3&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;148&quot; width=&quot;280&quot; height=&quot;242&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;7&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.997;entryY=0.849;entryDx=0;entryDy=0;entryPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;8&quot; target=&quot;15&quot; edge=&quot;1&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;8&quot; value=&quot;Boundary&amp;amp;lt;T&amp;amp;gt;&quot; style=&quot;swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1110&quot; y=&quot;1723&quot; width=&quot;360&quot; height=&quot;210&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;9&quot; value=&quot;- grid: Grid&amp;lt;br&amp;gt;- type: BC_TYPE&amp;lt;br&amp;gt;- left: std::vector&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;- right: std::vector&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;- top: std::vector&amp;amp;lt;T&amp;amp;gt;&amp;lt;br&amp;gt;- bottom: std::vector&amp;amp;lt;T&amp;amp;gt;&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;8&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;26&quot; width=&quot;360&quot; height=&quot;94&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;10&quot; value=&quot;&quot; style=&quot;line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;&quot; parent=&quot;8&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;120&quot; width=&quot;360&quot; height=&quot;8&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;11&quot; value=&quot;+ Boundary(grid: Grid, type: BC_TYPE)&amp;lt;br&amp;gt;+ getBoundaryConditionType(): BC_TYPE&amp;lt;br&amp;gt;&amp;lt;div&amp;gt;+ setBoundaryConditionValue(side: BC_SIDE,&amp;amp;nbsp;&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;white-space: pre;&amp;quot;&amp;gt;&amp;#x9;&amp;lt;/span&amp;gt; value: std::vector&amp;amp;lt;T&amp;amp;gt;)&amp;lt;/div&amp;gt;+ getBoundaryConditionValue(): std::vector&amp;amp;lt;T&amp;amp;gt;&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;8&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;128&quot; width=&quot;360&quot; height=&quot;82&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;12&quot; value=&quot;Simulation&amp;amp;lt;T, approach, solver&amp;amp;gt;&quot; style=&quot;swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;610&quot; y=&quot;1269&quot; width=&quot;350&quot; height=&quot;260&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;13&quot; value=&quot;- timestep: double&amp;lt;br&amp;gt;- iterations: int&amp;lt;br&amp;gt;- csv_output: CSV_OUTPUT&amp;lt;br&amp;gt;- grid: GRID&amp;lt;br&amp;gt;- bc: Boundary&amp;lt;br&amp;gt;&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;12&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;26&quot; width=&quot;350&quot; height=&quot;84&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;14&quot; value=&quot;&quot; style=&quot;line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;&quot; parent=&quot;12&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;110&quot; width=&quot;350&quot; height=&quot;8&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;15&quot; value=&quot;+ Simulation(grid: Grid, bc: Boundary, approach: APPROACH&amp;lt;br&amp;gt;+ setOutputCSV(csv_output: CSV_OUTPUT)&amp;lt;br&amp;gt;+ setTimestep(timestep: T)&amp;lt;br&amp;gt;+ getTimestep(): T&amp;lt;br&amp;gt;+ setIterations(iterations: int)&amp;lt;br&amp;gt;+ getIterations(): int&amp;lt;br&amp;gt;+ printConcentrationsConsole()&amp;lt;br&amp;gt;+ printConcentrationsCSV(ident: string, appendMode: bool)&amp;lt;br&amp;gt;+ run()&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;12&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;118&quot; width=&quot;350&quot; height=&quot;142&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;16&quot; value=&quot;FTCS&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1580&quot; y=&quot;1309&quot; width=&quot;160&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;17&quot; value=&quot;BTCS&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1580&quot; y=&quot;1389&quot; width=&quot;160&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;18&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1.007;entryDx=0;entryDy=0;entryPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;3&quot; edge=&quot;1&quot; target=&quot;15&quot;&gt;&#xA; &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;540&quot; y=&quot;1809&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;785&quot; y=&quot;1549&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;19&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;rounded=0;exitX=0;exitY=0.532;exitDx=0;exitDy=0;exitPerimeter=0;entryX=1.003;entryY=0.472;entryDx=0;entryDy=0;entryPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;9&quot; target=&quot;4&quot; edge=&quot;1&quot;&gt;&#xA; &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;1110&quot; y=&quot;1796&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;930&quot; y=&quot;1799&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;20&quot; value=&quot;&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=none;fontColor=#333333;strokeColor=#000000;labelBorderColor=default;textOpacity=50;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1560&quot; y=&quot;1279&quot; width=&quot;200&quot; height=&quot;190&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;21&quot; value=&quot;functionalities&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=17;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1550&quot; y=&quot;1247&quot; width=&quot;130&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;22&quot; value=&quot;&quot; style=&quot;endArrow=classic;html=1;rounded=0;exitX=0.005;exitY=0.581;exitDx=0;exitDy=0;exitPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;20&quot; edge=&quot;1&quot;&gt;&#xA; &lt;mxGeometry width=&quot;50&quot; height=&quot;50&quot; relative=&quot;1&quot; as=&quot;geometry&quot;&gt;&#xA; &lt;mxPoint x=&quot;1190&quot; y=&quot;1389&quot; as=&quot;sourcePoint&quot; /&gt;&#xA; &lt;mxPoint x=&quot;960&quot; y=&quot;1389&quot; as=&quot;targetPoint&quot; /&gt;&#xA; &lt;/mxGeometry&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;23&quot; value=&quot;&amp;lt;b style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;TUG API&amp;lt;/b&amp;gt;&quot; style=&quot;text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=18;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;580&quot; y=&quot;1174&quot; width=&quot;100&quot; height=&quot;40&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;24&quot; style=&quot;edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.487;entryY=1.004;entryDx=0;entryDy=0;entryPerimeter=0;&quot; parent=&quot;1&quot; source=&quot;25&quot; target=&quot;11&quot; edge=&quot;1&quot;&gt;&#xA; &lt;mxGeometry relative=&quot;1&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;25&quot; value=&quot;BoundaryElement&amp;amp;lt;T&amp;amp;gt;&quot; style=&quot;swimlane;fontStyle=1;align=center;verticalAlign=top;childLayout=stackLayout;horizontal=1;startSize=26;horizontalStack=0;resizeParent=1;resizeParentMax=0;resizeLast=0;collapsible=1;marginBottom=0;whiteSpace=wrap;html=1;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry x=&quot;1180&quot; y=&quot;2040&quot; width=&quot;210&quot; height=&quot;180&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;26&quot; value=&quot;&amp;lt;div&amp;gt;- type: BC_TYPE&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;- value: T&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;25&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;26&quot; width=&quot;210&quot; height=&quot;44&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;27&quot; value=&quot;&quot; style=&quot;line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;&quot; parent=&quot;25&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;70&quot; width=&quot;210&quot; height=&quot;8&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;mxCell id=&quot;28&quot; value=&quot;&amp;lt;div&amp;gt;+ BoundaryElement()&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ BoundaryElement(value: T)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ setType(type: BC_TYPE)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ setValue(value: T)&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ getType(): BC_TYPE&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;+ getValue(): T&amp;lt;/div&amp;gt;&quot; style=&quot;text;strokeColor=none;fillColor=none;align=left;verticalAlign=top;spacingLeft=4;spacingRight=4;overflow=hidden;rotatable=0;points=[[0,0.5],[1,0.5]];portConstraint=eastwest;whiteSpace=wrap;html=1;&quot; parent=&quot;25&quot; vertex=&quot;1&quot;&gt;&#xA; &lt;mxGeometry y=&quot;78&quot; width=&quot;210&quot; height=&quot;102&quot; as=&quot;geometry&quot; /&gt;&#xA; &lt;/mxCell&gt;&#xA; &lt;/root&gt;&#xA; &lt;/mxGraphModel&gt;&#xA; &lt;/diagram&gt;&#xA;&lt;/mxfile&gt;&#xA;"><defs><style xmlns="http://www.w3.org/1999/xhtml" id="MJX-SVG-styles">&#xa;mjx-container[jax="SVG"] {&#xa; direction: ltr;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"] &gt; svg {&#xa; overflow: visible;&#xa; min-height: 1px;&#xa; min-width: 1px;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"] &gt; svg a {&#xa; fill: blue;&#xa; stroke: blue;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"][display="true"] {&#xa; display: block;&#xa; text-align: center;&#xa; margin: 1em 0;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"][display="true"][width="full"] {&#xa; display: flex;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"][justify="left"] {&#xa; text-align: left;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"][justify="right"] {&#xa; text-align: right;&#xa;}&#xa;&#xa;g[data-mml-node="merror"] &gt; g {&#xa; fill: red;&#xa; stroke: red;&#xa;}&#xa;&#xa;g[data-mml-node="merror"] &gt; rect[data-background] {&#xa; fill: yellow;&#xa; stroke: none;&#xa;}&#xa;&#xa;g[data-mml-node="mtable"] &gt; line[data-line], svg[data-table] &gt; g &gt; line[data-line] {&#xa; stroke-width: 70px;&#xa; fill: none;&#xa;}&#xa;&#xa;g[data-mml-node="mtable"] &gt; rect[data-frame], svg[data-table] &gt; g &gt; rect[data-frame] {&#xa; stroke-width: 70px;&#xa; fill: none;&#xa;}&#xa;&#xa;g[data-mml-node="mtable"] &gt; .mjx-dashed, svg[data-table] &gt; g &gt; .mjx-dashed {&#xa; stroke-dasharray: 140;&#xa;}&#xa;&#xa;g[data-mml-node="mtable"] &gt; .mjx-dotted, svg[data-table] &gt; g &gt; .mjx-dotted {&#xa; stroke-linecap: round;&#xa; stroke-dasharray: 0,140;&#xa;}&#xa;&#xa;g[data-mml-node="mtable"] &gt; g &gt; svg {&#xa; overflow: visible;&#xa;}&#xa;&#xa;[jax="SVG"] mjx-tool {&#xa; display: inline-block;&#xa; position: relative;&#xa; width: 0;&#xa; height: 0;&#xa;}&#xa;&#xa;[jax="SVG"] mjx-tool &gt; mjx-tip {&#xa; position: absolute;&#xa; top: 0;&#xa; left: 0;&#xa;}&#xa;&#xa;mjx-tool &gt; mjx-tip {&#xa; display: inline-block;&#xa; padding: .2em;&#xa; border: 1px solid #888;&#xa; font-size: 70%;&#xa; background-color: #F8F8F8;&#xa; color: black;&#xa; box-shadow: 2px 2px 5px #AAAAAA;&#xa;}&#xa;&#xa;g[data-mml-node="maction"][data-toggle] {&#xa; cursor: pointer;&#xa;}&#xa;&#xa;mjx-status {&#xa; display: block;&#xa; position: fixed;&#xa; left: 1em;&#xa; bottom: 1em;&#xa; min-width: 25%;&#xa; padding: .2em .4em;&#xa; border: 1px solid #888;&#xa; font-size: 90%;&#xa; background-color: #F8F8F8;&#xa; color: black;&#xa;}&#xa;&#xa;foreignObject[data-mjx-xml] {&#xa; font-family: initial;&#xa; line-height: normal;&#xa; overflow: visible;&#xa;}&#xa;&#xa;mjx-container[jax="SVG"] path[data-c], mjx-container[jax="SVG"] use[data-c] {&#xa; stroke-width: 3;&#xa;}&#xa;</style></defs><g><rect x="10" y="49" width="910" height="1061" fill="none" stroke="rgb(0, 0, 0)" pointer-events="all"/><path d="M 65 571 L 65 545 L 345 545 L 345 571" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 65 571 L 65 935 L 345 935 L 345 571" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 65 571 L 345 571" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 278px; height: 1px; padding-top: 552px; margin-left: 66px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Grid&lt;T&gt;</div></div></div></foreignObject><text x="205" y="564" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Grid&lt;T&gt;</text></switch></g><rect x="65" y="571" width="280" height="114" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 270px; height: 1px; padding-top: 578px; margin-left: 71px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 110px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">- dim:int<br />- col:int<br />- row:int<br />- domain_col: int<br />- domain_row: int<br />- delta_col: T<br />- delta_row: T</div></div></div></foreignObject><text x="71" y="590" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">- dim:int...</text></switch></g><path d="M 65 689 L 345 689" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="65" y="693" width="280" height="242" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 270px; height: 1px; padding-top: 700px; margin-left: 71px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 238px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">+ <u>Grid</u>(col: int)<br />+ <u>Grid</u>(row: int, col: int)<br />+ setConcentrations(concentrations: MatrixX&lt;T&gt;)<br />+ getConcentrations(): MatrixX&lt;T&gt;<br />+ setAlpha(alpha: MatrixX&lt;T&gt;)<br />+ setAlpha(alpha_x: MatrixX&lt;T&gt;, alpha_y: <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span>  MatrixX&lt;T&gt;)<br />+ getAlphaX(): MatrixX&lt;T&gt;<br />+ getAlphaY(): MatrixX&lt;T&gt;<br />+ getDim(): int<br />+ getRow(): int<br />+ getCol(): int<br />+ setDomain(domain_col: int)<br />+ setDomain(domain_row: int, domain_col: int)<br />+ getDeltaCol(): T<br />+ getDeltaRow(): T</div></div></div></foreignObject><text x="71" y="712" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">+ Grid(col: int)...</text></switch></g><path d="M 710 549 L 710 333.62 L 385.32 333.56" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 380.07 333.56 L 387.07 330.06 L 385.32 333.56 L 387.07 337.06 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 530 575 L 530 549 L 890 549 L 890 575" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 530 575 L 530 759 L 890 759 L 890 575" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 530 575 L 890 575" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 358px; height: 1px; padding-top: 556px; margin-left: 531px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Boundary&lt;T&gt;</div></div></div></foreignObject><text x="710" y="568" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Boundary&lt;T&gt;</text></switch></g><rect x="530" y="575" width="360" height="94" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 350px; height: 1px; padding-top: 582px; margin-left: 536px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 90px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">- grid: Grid<br />- type: BC_TYPE<br />- left: std::vector&lt;T&gt;<br />- right: std::vector&lt;T&gt;<br />- top: std::vector&lt;T&gt;<br />- bottom: std::vector&lt;T&gt;</div></div></div></foreignObject><text x="536" y="594" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">- grid: Grid...</text></switch></g><path d="M 530 673 L 890 673" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="530" y="677" width="360" height="82" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 350px; height: 1px; padding-top: 684px; margin-left: 536px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 78px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">+ Boundary(grid: Grid, type: BC_TYPE)<br />+ getBoundaryConditionType(): BC_TYPE<br /><div>+ setBoundaryConditionValue(side: BC_SIDE, </div><div><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> value: std::vector&lt;T&gt;)</div>+ getBoundaryConditionValue(): std::vector&lt;T&gt;</div></div></div></foreignObject><text x="536" y="696" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">+ Boundary(grid: Grid, type: BC_TYPE)...</text></switch></g><path d="M 30 121 L 30 95 L 380 95 L 380 121" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 30 121 L 30 355 L 380 355 L 380 121" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 30 121 L 380 121" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 348px; height: 1px; padding-top: 102px; margin-left: 31px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">Simulation&lt;T, approach, solver&gt;</div></div></div></foreignObject><text x="205" y="114" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Simulation&lt;T, approach, solver&gt;</text></switch></g><rect x="30" y="121" width="350" height="84" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 340px; height: 1px; padding-top: 128px; margin-left: 36px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 80px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">- timestep: double<br />- iterations: int<br />- csv_output: CSV_OUTPUT<br />- grid: GRID<br />- bc: Boundary<br /></div></div></div></foreignObject><text x="36" y="140" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">- timestep: double...</text></switch></g><path d="M 30 209 L 380 209" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="30" y="213" width="350" height="142" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 340px; height: 1px; padding-top: 220px; margin-left: 36px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 138px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">+ Simulation(grid: Grid, bc: Boundary, approach: APPROACH<br />+ setOutputCSV(csv_output: CSV_OUTPUT)<br />+ setTimestep(timestep: T)<br />+ getTimestep(): T<br />+ setIterations(iterations: int)<br />+ getIterations(): int<br />+ printConcentrationsConsole()<br />+ printConcentrationsCSV(ident: string, appendMode: bool)<br />+ run()</div></div></div></foreignObject><text x="36" y="232" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">+ Simulation(grid: Grid, bc: Boundary, approach: APPROACH...</text></switch></g><rect x="1000" y="135" width="160" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 165px; margin-left: 1001px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">FTCS</div></div></div></foreignObject><text x="1080" y="169" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">FTCS</text></switch></g><rect x="1000" y="215" width="160" height="60" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 158px; height: 1px; padding-top: 245px; margin-left: 1001px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">BTCS</div></div></div></foreignObject><text x="1080" y="249" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">BTCS</text></switch></g><path d="M 205 545 L 205 362.36" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 205 357.11 L 208.5 364.11 L 205 362.36 L 201.5 364.11 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 530 625.01 L 352.21 624.81" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 346.96 624.81 L 353.96 621.32 L 352.21 624.81 L 353.95 628.32 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="980" y="105" width="200" height="190" fill="none" stroke="#000000" pointer-events="all"/><rect x="970" y="73" width="130" height="30" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 88px; margin-left: 1035px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 17px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">functionalities</div></div></div></foreignObject><text x="1035" y="93" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="17px" text-anchor="middle">functionalities</text></switch></g><path d="M 981 215.39 L 386.37 215" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 381.12 215 L 388.12 211.51 L 386.37 215 L 388.12 218.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="0" y="0" width="100" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 20px; margin-left: 50px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;"><b style="font-size: 18px;">TUG API</b></div></div></div></foreignObject><text x="50" y="25" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="18px" text-anchor="middle">TUG API</text></switch></g><path d="M 705 866 L 705 812.52 L 705.28 765.7" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 705.31 760.45 L 708.77 767.47 L 705.28 765.7 L 701.77 767.42 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 600 892 L 600 866 L 810 866 L 810 892" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 600 892 L 600 1046 L 810 1046 L 810 892" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 600 892 L 810 892" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 208px; height: 1px; padding-top: 873px; margin-left: 601px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">BoundaryElement&lt;T&gt;</div></div></div></foreignObject><text x="705" y="885" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">BoundaryElement&lt;T&gt;</text></switch></g><rect x="600" y="892" width="210" height="44" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 200px; height: 1px; padding-top: 899px; margin-left: 606px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 40px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>- type: BC_TYPE</div><div>- value: T<br /></div></div></div></div></foreignObject><text x="606" y="911" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">- type: BC_TYPE...</text></switch></g><path d="M 600 940 L 810 940" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><rect x="600" y="944" width="210" height="102" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 200px; height: 1px; padding-top: 951px; margin-left: 606px;"><div style="box-sizing: border-box; font-size: 0px; text-align: left; max-height: 98px; overflow: hidden;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;"><div>+ BoundaryElement()</div><div>+ BoundaryElement(value: T)</div><div>+ setType(type: BC_TYPE)</div><div>+ setValue(value: T)</div><div>+ getType(): BC_TYPE</div><div>+ getValue(): T</div></div></div></div></foreignObject><text x="606" y="963" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">+ BoundaryElement()...</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>