mirror of
https://git.gfz-potsdam.de/naaice/tug.git
synced 2025-12-14 09:58:22 +01:00
4 lines
41 KiB
XML
4 lines
41 KiB
XML
<?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="<mxfile host="app.diagrams.net" modified="2023-10-17T09:18:50.013Z" agent="Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/118.0" etag="rtjpdY3mq8oJWifzAXnP" version="22.0.4" type="device">
 <diagram name="Seite-1" id="nGvXA32G2q4WGHVliUfI">
 <mxGraphModel dx="987" dy="-617" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="1" shadow="0">
 <root>
 <mxCell id="0" />
 <mxCell id="1" parent="0" />
 <mxCell id="2" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" parent="1" vertex="1">
 <mxGeometry x="590" y="1223" width="910" height="1061" as="geometry" />
 </mxCell>
 <mxCell id="3" value="Grid&amp;lt;T&amp;gt;" style="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;" parent="1" vertex="1">
 <mxGeometry x="645" y="1719" width="280" height="390" as="geometry" />
 </mxCell>
 <mxCell id="4" value="- dim:int&lt;br&gt;- col:int&lt;br&gt;- row:int&lt;br&gt;- domain_col: int&lt;br&gt;- domain_row: int&lt;br&gt;- delta_col: T&lt;br&gt;- delta_row: T" style="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;" parent="3" vertex="1">
 <mxGeometry y="26" width="280" height="114" as="geometry" />
 </mxCell>
 <mxCell id="5" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="3" vertex="1">
 <mxGeometry y="140" width="280" height="8" as="geometry" />
 </mxCell>
 <mxCell id="6" value="+ &lt;u&gt;Grid&lt;/u&gt;(col: int)&lt;br&gt;+ &lt;u&gt;Grid&lt;/u&gt;(row: int, col: int)&lt;br&gt;+ setConcentrations(concentrations: MatrixX&amp;lt;T&amp;gt;)&lt;br&gt;+ getConcentrations(): MatrixX&amp;lt;T&amp;gt;&lt;br&gt;+ setAlpha(alpha: MatrixX&amp;lt;T&amp;gt;)&lt;br&gt;+ setAlpha(alpha_x: MatrixX&amp;lt;T&amp;gt;, alpha_y: &lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&amp;nbsp; MatrixX&amp;lt;T&amp;gt;)&lt;br&gt;+ getAlphaX(): MatrixX&amp;lt;T&amp;gt;&lt;br&gt;+ getAlphaY(): MatrixX&amp;lt;T&amp;gt;&lt;br&gt;+ getDim(): int&lt;br&gt;+ getRow(): int&lt;br&gt;+ getCol(): int&lt;br&gt;+ setDomain(domain_col: int)&lt;br&gt;+ setDomain(domain_row: int, domain_col: int)&lt;br&gt;+ getDeltaCol(): T&lt;br&gt;+ getDeltaRow(): T" style="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;" parent="3" vertex="1">
 <mxGeometry y="148" width="280" height="242" as="geometry" />
 </mxCell>
 <mxCell id="7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.997;entryY=0.849;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="8" target="15" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="8" value="Boundary&amp;lt;T&amp;gt;" style="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;" parent="1" vertex="1">
 <mxGeometry x="1110" y="1723" width="360" height="210" as="geometry" />
 </mxCell>
 <mxCell id="9" value="- grid: Grid&lt;br&gt;- type: BC_TYPE&lt;br&gt;- left: std::vector&amp;lt;T&amp;gt;&lt;br&gt;- right: std::vector&amp;lt;T&amp;gt;&lt;br&gt;- top: std::vector&amp;lt;T&amp;gt;&lt;br&gt;- bottom: std::vector&amp;lt;T&amp;gt;" style="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;" parent="8" vertex="1">
 <mxGeometry y="26" width="360" height="94" as="geometry" />
 </mxCell>
 <mxCell id="10" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="8" vertex="1">
 <mxGeometry y="120" width="360" height="8" as="geometry" />
 </mxCell>
 <mxCell id="11" value="+ Boundary(grid: Grid, type: BC_TYPE)&lt;br&gt;+ getBoundaryConditionType(): BC_TYPE&lt;br&gt;&lt;div&gt;+ setBoundaryConditionValue(side: BC_SIDE,&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt;&lt;span style=&quot;white-space: pre;&quot;&gt;&#x9;&lt;/span&gt; value: std::vector&amp;lt;T&amp;gt;)&lt;/div&gt;+ getBoundaryConditionValue(): std::vector&amp;lt;T&amp;gt;" style="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;" parent="8" vertex="1">
 <mxGeometry y="128" width="360" height="82" as="geometry" />
 </mxCell>
 <mxCell id="12" value="Simulation&amp;lt;T, approach, solver&amp;gt;" style="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;" parent="1" vertex="1">
 <mxGeometry x="610" y="1269" width="350" height="260" as="geometry" />
 </mxCell>
 <mxCell id="13" value="- timestep: double&lt;br&gt;- iterations: int&lt;br&gt;- csv_output: CSV_OUTPUT&lt;br&gt;- grid: GRID&lt;br&gt;- bc: Boundary&lt;br&gt;" style="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;" parent="12" vertex="1">
 <mxGeometry y="26" width="350" height="84" as="geometry" />
 </mxCell>
 <mxCell id="14" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="12" vertex="1">
 <mxGeometry y="110" width="350" height="8" as="geometry" />
 </mxCell>
 <mxCell id="15" value="+ Simulation(grid: Grid, bc: Boundary, approach: APPROACH&lt;br&gt;+ setOutputCSV(csv_output: CSV_OUTPUT)&lt;br&gt;+ setTimestep(timestep: T)&lt;br&gt;+ getTimestep(): T&lt;br&gt;+ setIterations(iterations: int)&lt;br&gt;+ getIterations(): int&lt;br&gt;+ printConcentrationsConsole()&lt;br&gt;+ printConcentrationsCSV(ident: string, appendMode: bool)&lt;br&gt;+ run()" style="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;" parent="12" vertex="1">
 <mxGeometry y="118" width="350" height="142" as="geometry" />
 </mxCell>
 <mxCell id="16" value="FTCS" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="1580" y="1309" width="160" height="60" as="geometry" />
 </mxCell>
 <mxCell id="17" value="BTCS" style="rounded=0;whiteSpace=wrap;html=1;" parent="1" vertex="1">
 <mxGeometry x="1580" y="1389" width="160" height="60" as="geometry" />
 </mxCell>
 <mxCell id="18" value="" style="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;" parent="1" source="3" edge="1" target="15">
 <mxGeometry width="50" height="50" relative="1" as="geometry">
 <mxPoint x="540" y="1809" as="sourcePoint" />
 <mxPoint x="785" y="1549" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="19" value="" style="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;" parent="1" source="9" target="4" edge="1">
 <mxGeometry width="50" height="50" relative="1" as="geometry">
 <mxPoint x="1110" y="1796" as="sourcePoint" />
 <mxPoint x="930" y="1799" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="20" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;fontColor=#333333;strokeColor=#000000;labelBorderColor=default;textOpacity=50;" parent="1" vertex="1">
 <mxGeometry x="1560" y="1279" width="200" height="190" as="geometry" />
 </mxCell>
 <mxCell id="21" value="functionalities" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=17;" parent="1" vertex="1">
 <mxGeometry x="1550" y="1247" width="130" height="30" as="geometry" />
 </mxCell>
 <mxCell id="22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.005;exitY=0.581;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" source="20" edge="1">
 <mxGeometry width="50" height="50" relative="1" as="geometry">
 <mxPoint x="1190" y="1389" as="sourcePoint" />
 <mxPoint x="960" y="1389" as="targetPoint" />
 </mxGeometry>
 </mxCell>
 <mxCell id="23" value="&lt;b style=&quot;font-size: 18px;&quot;&gt;TUG API&lt;/b&gt;" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=18;" parent="1" vertex="1">
 <mxGeometry x="580" y="1174" width="100" height="40" as="geometry" />
 </mxCell>
 <mxCell id="24" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.487;entryY=1.004;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="25" target="11" edge="1">
 <mxGeometry relative="1" as="geometry" />
 </mxCell>
 <mxCell id="25" value="BoundaryElement&amp;lt;T&amp;gt;" style="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;" parent="1" vertex="1">
 <mxGeometry x="1180" y="2040" width="210" height="180" as="geometry" />
 </mxCell>
 <mxCell id="26" value="&lt;div&gt;- type: BC_TYPE&lt;/div&gt;&lt;div&gt;- value: T&lt;br&gt;&lt;/div&gt;" style="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;" parent="25" vertex="1">
 <mxGeometry y="26" width="210" height="44" as="geometry" />
 </mxCell>
 <mxCell id="27" value="" style="line;strokeWidth=1;fillColor=none;align=left;verticalAlign=middle;spacingTop=-1;spacingLeft=3;spacingRight=3;rotatable=0;labelPosition=right;points=[];portConstraint=eastwest;strokeColor=inherit;" parent="25" vertex="1">
 <mxGeometry y="70" width="210" height="8" as="geometry" />
 </mxCell>
 <mxCell id="28" value="&lt;div&gt;+ BoundaryElement()&lt;/div&gt;&lt;div&gt;+ BoundaryElement(value: T)&lt;/div&gt;&lt;div&gt;+ setType(type: BC_TYPE)&lt;/div&gt;&lt;div&gt;+ setValue(value: T)&lt;/div&gt;&lt;div&gt;+ getType(): BC_TYPE&lt;/div&gt;&lt;div&gt;+ getValue(): T&lt;/div&gt;" style="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;" parent="25" vertex="1">
 <mxGeometry y="78" width="210" height="102" as="geometry" />
 </mxCell>
 </root>
 </mxGraphModel>
 </diagram>
</mxfile>
"><defs><style xmlns="http://www.w3.org/1999/xhtml" id="MJX-SVG-styles">
mjx-container[jax="SVG"] {
 direction: ltr;
}

mjx-container[jax="SVG"] > svg {
 overflow: visible;
 min-height: 1px;
 min-width: 1px;
}

mjx-container[jax="SVG"] > svg a {
 fill: blue;
 stroke: blue;
}

mjx-container[jax="SVG"][display="true"] {
 display: block;
 text-align: center;
 margin: 1em 0;
}

mjx-container[jax="SVG"][display="true"][width="full"] {
 display: flex;
}

mjx-container[jax="SVG"][justify="left"] {
 text-align: left;
}

mjx-container[jax="SVG"][justify="right"] {
 text-align: right;
}

g[data-mml-node="merror"] > g {
 fill: red;
 stroke: red;
}

g[data-mml-node="merror"] > rect[data-background] {
 fill: yellow;
 stroke: none;
}

g[data-mml-node="mtable"] > line[data-line], svg[data-table] > g > line[data-line] {
 stroke-width: 70px;
 fill: none;
}

g[data-mml-node="mtable"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {
 stroke-width: 70px;
 fill: none;
}

g[data-mml-node="mtable"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {
 stroke-dasharray: 140;
}

g[data-mml-node="mtable"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {
 stroke-linecap: round;
 stroke-dasharray: 0,140;
}

g[data-mml-node="mtable"] > g > svg {
 overflow: visible;
}

[jax="SVG"] mjx-tool {
 display: inline-block;
 position: relative;
 width: 0;
 height: 0;
}

[jax="SVG"] mjx-tool > mjx-tip {
 position: absolute;
 top: 0;
 left: 0;
}

mjx-tool > mjx-tip {
 display: inline-block;
 padding: .2em;
 border: 1px solid #888;
 font-size: 70%;
 background-color: #F8F8F8;
 color: black;
 box-shadow: 2px 2px 5px #AAAAAA;
}

g[data-mml-node="maction"][data-toggle] {
 cursor: pointer;
}

mjx-status {
 display: block;
 position: fixed;
 left: 1em;
 bottom: 1em;
 min-width: 25%;
 padding: .2em .4em;
 border: 1px solid #888;
 font-size: 90%;
 background-color: #F8F8F8;
 color: black;
}

foreignObject[data-mjx-xml] {
 font-family: initial;
 line-height: normal;
 overflow: visible;
}

mjx-container[jax="SVG"] path[data-c], mjx-container[jax="SVG"] use[data-c] {
 stroke-width: 3;
}
</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<T></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<T></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<T>)<br />+ getConcentrations(): MatrixX<T><br />+ setAlpha(alpha: MatrixX<T>)<br />+ setAlpha(alpha_x: MatrixX<T>, alpha_y: <span style="white-space: pre;"> </span><span style="white-space: pre;"> </span> MatrixX<T>)<br />+ getAlphaX(): MatrixX<T><br />+ getAlphaY(): MatrixX<T><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<T></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<T></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<T><br />- right: std::vector<T><br />- top: std::vector<T><br />- bottom: std::vector<T></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<T>)</div>+ getBoundaryConditionValue(): std::vector<T></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<T, approach, solver></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<T, approach, solver></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<T></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<T></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> |