Skip to content

Commit

Permalink
deploy: f34646f
Browse files Browse the repository at this point in the history
  • Loading branch information
visr committed Sep 2, 2024
1 parent 1835f18 commit cc69f33
Show file tree
Hide file tree
Showing 12 changed files with 30 additions and 30 deletions.
18 changes: 9 additions & 9 deletions concept/allocation.html
Original file line number Diff line number Diff line change
Expand Up @@ -574,7 +574,7 @@ <h2 data-number="4.3" class="anchored" data-anchor-id="the-optimization-constrai
<section id="example" class="level2" data-number="4.4">
<h2 data-number="4.4" class="anchored" data-anchor-id="example"><span class="header-section-number">4.4</span> Example</h2>
<p>The following is an example of an optimization problem for the example shown <a href="../guide/examples.html#model-with-allocation-user-demand">here</a>:</p>
<div id="860fd70d" class="cell" data-execution_count="1">
<div id="43c39fc0" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Ribasim</span></span>
Expand All @@ -597,24 +597,24 @@ <h2 data-number="4.4" class="anchored" data-anchor-id="example"><span class="hea
<span id="cb1-18"><a href="#cb1-18" aria-hidden="true" tabindex="-1"></a><span class="fu">println</span>(p.allocation.allocation_models[<span class="fl">1</span>].problem)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
</details>
<div class="cell-output cell-output-stdout">
<pre><code>Min F[(Basin #2, UserDemand #3)]² + F[(Basin #5, UserDemand #6)]²
<pre><code>Min F[(Basin #5, UserDemand #6)]² + F[(Basin #2, UserDemand #3)]²
Subject to
flow_conservation[TabulatedRatingCurve #7] : F[(Basin #5, TabulatedRatingCurve #7)] - F[(TabulatedRatingCurve #7, Terminal #8)] = 0
flow_conservation[Basin #5] : F[(UserDemand #6, Basin #5)] - F[(Basin #5, UserDemand #6)] + F[(LinearResistance #4, Basin #5)] - F[(Basin #5, LinearResistance #4)] - F[(Basin #5, TabulatedRatingCurve #7)] = 0
flow_conservation[Basin #2] : F[(FlowBoundary #1, Basin #2)] - F[(Basin #2, LinearResistance #4)] + F[(LinearResistance #4, Basin #2)] + F[(UserDemand #3, Basin #2)] - F[(Basin #2, UserDemand #3)] = 0
flow_conservation[LinearResistance #4] : F[(Basin #2, LinearResistance #4)] - F[(LinearResistance #4, Basin #2)] - F[(LinearResistance #4, Basin #5)] + F[(Basin #5, LinearResistance #4)] = 0
flow_conservation[Basin #2] : F[(UserDemand #3, Basin #2)] + F[(FlowBoundary #1, Basin #2)] - F[(Basin #2, LinearResistance #4)] + F[(LinearResistance #4, Basin #2)] - F[(Basin #2, UserDemand #3)] = 0
flow_conservation[Basin #5] : -F[(Basin #5, TabulatedRatingCurve #7)] + F[(UserDemand #6, Basin #5)] - F[(Basin #5, UserDemand #6)] + F[(LinearResistance #4, Basin #5)] - F[(Basin #5, LinearResistance #4)] = 0
flow_conservation[TabulatedRatingCurve #7] : -F[(TabulatedRatingCurve #7, Terminal #8)] + F[(Basin #5, TabulatedRatingCurve #7)] = 0
flow_conservation[Terminal #8] : F[(TabulatedRatingCurve #7, Terminal #8)] = 0
F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0
F[(UserDemand #3, Basin #2)] ≥ 0
F[(UserDemand #6, Basin #5)] ≥ 0
F[(FlowBoundary #1, Basin #2)] ≥ 0
F[(TabulatedRatingCurve #7, Terminal #8)] ≥ 0
F[(UserDemand #6, Basin #5)] ≥ 0
F[(Basin #2, LinearResistance #4)] ≥ 0
F[(LinearResistance #4, Basin #2)] ≥ 0
F[(Basin #2, UserDemand #3)] ≥ 0
F[(UserDemand #3, Basin #2)] ≥ 0
F[(Basin #5, UserDemand #6)] ≥ 0
F[(LinearResistance #4, Basin #5)] ≥ 0
F[(Basin #5, LinearResistance #4)] ≥ 0
F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0
F[(Basin #2, UserDemand #3)] ≥ 0
source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 172800
source_user[UserDemand #3] : F[(UserDemand #3, Basin #2)] ≤ 0
source_user[UserDemand #6] : F[(UserDemand #6, Basin #5)] ≤ 0
Expand Down
10 changes: 5 additions & 5 deletions guide/examples.html
Original file line number Diff line number Diff line change
Expand Up @@ -1294,23 +1294,23 @@ <h1 data-number="6"><span class="header-section-number">6</span> Guidance of mod
<div class="sourceCode cell-code" id="cb98"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb98-1"><a href="#cb98-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Set up outlet</span></span>
<span id="cb98-2"><a href="#cb98-2" aria-hidden="true" tabindex="-1"></a>model.outlet.add(</span>
<span id="cb98-3"><a href="#cb98-3" aria-hidden="true" tabindex="-1"></a> Node(<span class="dv">2</span>, Point(<span class="fl">0.0</span>, <span class="op">-</span><span class="fl">1.0</span>)),</span>
<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="dv">2</span> <span class="op">*</span> <span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_crest_level<span class="op">=</span>[<span class="fl">0.0</span>])],</span>
<span id="cb98-4"><a href="#cb98-4" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="dv">2</span> <span class="op">*</span> <span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_upstream_level<span class="op">=</span>[<span class="fl">0.0</span>])],</span>
<span id="cb98-5"><a href="#cb98-5" aria-hidden="true" tabindex="-1"></a>)</span>
<span id="cb98-6"><a href="#cb98-6" aria-hidden="true" tabindex="-1"></a>model.outlet.add(</span>
<span id="cb98-7"><a href="#cb98-7" aria-hidden="true" tabindex="-1"></a> Node(<span class="dv">5</span>, Point(<span class="fl">0.0</span>, <span class="op">-</span><span class="fl">3.0</span>)),</span>
<span id="cb98-8"><a href="#cb98-8" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_crest_level<span class="op">=</span>[<span class="fl">1.95</span>])],</span>
<span id="cb98-8"><a href="#cb98-8" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_upstream_level<span class="op">=</span>[<span class="fl">1.95</span>])],</span>
<span id="cb98-9"><a href="#cb98-9" aria-hidden="true" tabindex="-1"></a>)</span>
<span id="cb98-10"><a href="#cb98-10" aria-hidden="true" tabindex="-1"></a>model.outlet.add(</span>
<span id="cb98-11"><a href="#cb98-11" aria-hidden="true" tabindex="-1"></a> Node(<span class="dv">7</span>, Point(<span class="fl">1.0</span>, <span class="op">-</span><span class="fl">4.0</span>)),</span>
<span id="cb98-12"><a href="#cb98-12" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_crest_level<span class="op">=</span>[<span class="fl">1.45</span>])],</span>
<span id="cb98-12"><a href="#cb98-12" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_upstream_level<span class="op">=</span>[<span class="fl">1.45</span>])],</span>
<span id="cb98-13"><a href="#cb98-13" aria-hidden="true" tabindex="-1"></a>)</span>
<span id="cb98-14"><a href="#cb98-14" aria-hidden="true" tabindex="-1"></a>model.outlet.add(</span>
<span id="cb98-15"><a href="#cb98-15" aria-hidden="true" tabindex="-1"></a> Node(<span class="dv">9</span>, Point(<span class="fl">3.0</span>, <span class="op">-</span><span class="fl">4.0</span>)),</span>
<span id="cb98-16"><a href="#cb98-16" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_crest_level<span class="op">=</span>[<span class="fl">0.95</span>])],</span>
<span id="cb98-16"><a href="#cb98-16" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_upstream_level<span class="op">=</span>[<span class="fl">0.95</span>])],</span>
<span id="cb98-17"><a href="#cb98-17" aria-hidden="true" tabindex="-1"></a>)</span>
<span id="cb98-18"><a href="#cb98-18" aria-hidden="true" tabindex="-1"></a>model.outlet.add(</span>
<span id="cb98-19"><a href="#cb98-19" aria-hidden="true" tabindex="-1"></a> Node(<span class="dv">11</span>, Point(<span class="fl">4.0</span>, <span class="op">-</span><span class="fl">3.0</span>)),</span>
<span id="cb98-20"><a href="#cb98-20" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_crest_level<span class="op">=</span>[<span class="fl">0.45</span>])],</span>
<span id="cb98-20"><a href="#cb98-20" aria-hidden="true" tabindex="-1"></a> [outlet.Static(flow_rate<span class="op">=</span>[<span class="fl">0.5</span> <span class="op">/</span> <span class="dv">3600</span>], min_upstream_level<span class="op">=</span>[<span class="fl">0.45</span>])],</span>
<span id="cb98-21"><a href="#cb98-21" aria-hidden="true" tabindex="-1"></a>)</span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="cell-output cell-output-display" data-execution_count="71">
<pre><code>NodeData(node_id=11, node_type='Outlet', geometry=&lt;POINT (4 -3)&gt;)</code></pre>
Expand Down
Binary file modified guide/examples_files/figure-html/cell-18-output-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified guide/examples_files/figure-html/cell-19-output-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 7 additions & 7 deletions reference/node/basin.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion reference/node/discrete-control.html
Original file line number Diff line number Diff line change
Expand Up @@ -379,7 +379,7 @@ <h1 class="title">DiscreteControl</h1>


<p>Set parameters of other nodes based on model state conditions (e.g.&nbsp;Basin level). The table below shows which parameters are controllable for a given node type.</p>
<div id="b302cda0" class="cell" data-execution_count="1">
<div id="209a828c" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Ribasim</span></span>
Expand Down
2 changes: 1 addition & 1 deletion reference/node/manning-resistance.html
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@ <h1 data-number="2"><span class="header-section-number">2</span> Equations</h1>
\end{cases}
\end{align}
\]</span></p>
<div id="436b1175" class="cell" data-execution_count="1">
<div id="79460611" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
Expand Down
2 changes: 1 addition & 1 deletion reference/node/outlet.html
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ <h2 data-number="1.1" class="anchored" data-anchor-id="static"><span class="head
<td>(optional)</td>
</tr>
<tr>
<td>min_crest_level</td>
<td>min_upstream_level</td>
<td>Float64</td>
<td><span class="math inline">\(m\)</span></td>
<td>(optional)</td>
Expand Down
2 changes: 1 addition & 1 deletion reference/node/tabulated-rating-curve.html
Original file line number Diff line number Diff line change
Expand Up @@ -470,7 +470,7 @@ <h2 data-number="1.1" class="anchored" data-anchor-id="static"><span class="head
<section id="interpolation" class="level3" data-number="1.1.1">
<h3 data-number="1.1.1" class="anchored" data-anchor-id="interpolation"><span class="header-section-number">1.1.1</span> Interpolation</h3>
<p>The <span class="math inline">\(Q(h)\)</span> relationship of a tabulated rating curve is defined as a linear interpolation.</p>
<div id="2e52b81c" class="cell" data-execution_count="1">
<div id="9edecea7" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> numpy <span class="im">as</span> np</span>
Expand Down
2 changes: 1 addition & 1 deletion reference/test-models.html
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ <h1 class="title">Test models</h1>


<p>Ribasim developers use the following models in their testbench and in order to test new features.</p>
<div id="77fa8c77" class="cell" data-execution_count="1">
<div id="5885b642" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">import</span> ribasim_testmodels</span>
Expand Down
4 changes: 2 additions & 2 deletions reference/validation.html
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ <h1 class="title">Validation</h1>
<section id="connectivity" class="level1" data-number="1">
<h1 data-number="1"><span class="header-section-number">1</span> Connectivity</h1>
<p>In the table below, each column shows which node types are allowed to be downstream (or ‘down-control’) of the node type at the top of the column.</p>
<div id="dd155c3f" class="cell" data-execution_count="1">
<div id="cbd9c7c8" class="cell" data-execution_count="1">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb1"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="im">using</span> <span class="bu">Ribasim</span></span>
Expand Down Expand Up @@ -699,7 +699,7 @@ <h1 data-number="1"><span class="header-section-number">1</span> Connectivity</h
<section id="neighbor-amounts" class="level1" data-number="2">
<h1 data-number="2"><span class="header-section-number">2</span> Neighbor amounts</h1>
<p>The table below shows for each node type between which bounds the amount of in- and outneighbors must be, for both flow and control edges.</p>
<div id="94e4cd16" class="cell" data-execution_count="2">
<div id="ce4e1f84" class="cell" data-execution_count="2">
<details class="code-fold">
<summary>Code</summary>
<div class="sourceCode cell-code" id="cb2"><pre class="sourceCode julia code-with-copy"><code class="sourceCode julia"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a>flow_in_min <span class="op">=</span> <span class="fu">Vector</span><span class="dt">{String}</span>()</span>
Expand Down
4 changes: 2 additions & 2 deletions search.json
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,7 @@
"href": "reference/node/outlet.html#static",
"title": "Outlet",
"section": "1.1 Static",
"text": "1.1 Static\n\n\n\n\n\n\n\n\n\ncolumn\ntype\nunit\nrestriction\n\n\n\n\nnode_id\nInt32\n-\nsorted\n\n\ncontrol_state\nString\n-\n(optional) sorted per node_id\n\n\nactive\nBool\n-\n(optional, default true)\n\n\nflow_rate\nFloat64\n\\(m^3 s^{-1}\\)\nnon-negative\n\n\nmin_flow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n(optional, default 0.0)\n\n\nmax_flow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n(optional)\n\n\nmin_crest_level\nFloat64\n\\(m\\)\n(optional)",
"text": "1.1 Static\n\n\n\n\n\n\n\n\n\ncolumn\ntype\nunit\nrestriction\n\n\n\n\nnode_id\nInt32\n-\nsorted\n\n\ncontrol_state\nString\n-\n(optional) sorted per node_id\n\n\nactive\nBool\n-\n(optional, default true)\n\n\nflow_rate\nFloat64\n\\(m^3 s^{-1}\\)\nnon-negative\n\n\nmin_flow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n(optional, default 0.0)\n\n\nmax_flow_rate\nFloat64\n\\(m^3 s^{-1}\\)\n(optional)\n\n\nmin_upstream_level\nFloat64\n\\(m\\)\n(optional)",
"crumbs": [
"Reference",
"Nodes",
Expand Down Expand Up @@ -2272,7 +2272,7 @@
"href": "concept/allocation.html#example",
"title": "Allocation",
"section": "4.4 Example",
"text": "4.4 Example\nThe following is an example of an optimization problem for the example shown here:\n\n\nCode\nusing Ribasim\nusing Ribasim: NodeID\nusing SQLite\nusing ComponentArrays: ComponentVector\n\ntoml_path = normpath(@__DIR__, \"../../generated_testmodels/allocation_example/ribasim.toml\")\np = Ribasim.Model(toml_path).integrator.p\nu = ComponentVector(; storage = zeros(length(p.basin.node_id)))\n\nallocation_model = p.allocation.allocation_models[1]\nt = 0.0\npriority_idx = 1\n\nRibasim.set_flow!(p.graph, 1, 1.0, u)\nRibasim.set_objective_priority!(allocation_model, p, u, t, priority_idx)\nRibasim.set_initial_values!(allocation_model, p, u, t)\n\nprintln(p.allocation.allocation_models[1].problem)\n\n\nMin F[(Basin #2, UserDemand #3)]² + F[(Basin #5, UserDemand #6)]²\nSubject to\n flow_conservation[TabulatedRatingCurve #7] : F[(Basin #5, TabulatedRatingCurve #7)] - F[(TabulatedRatingCurve #7, Terminal #8)] = 0\n flow_conservation[LinearResistance #4] : F[(Basin #2, LinearResistance #4)] - F[(LinearResistance #4, Basin #2)] - F[(LinearResistance #4, Basin #5)] + F[(Basin #5, LinearResistance #4)] = 0\n flow_conservation[Basin #2] : F[(UserDemand #3, Basin #2)] + F[(FlowBoundary #1, Basin #2)] - F[(Basin #2, LinearResistance #4)] + F[(LinearResistance #4, Basin #2)] - F[(Basin #2, UserDemand #3)] = 0\n flow_conservation[Basin #5] : -F[(Basin #5, TabulatedRatingCurve #7)] + F[(UserDemand #6, Basin #5)] - F[(Basin #5, UserDemand #6)] + F[(LinearResistance #4, Basin #5)] - F[(Basin #5, LinearResistance #4)] = 0\n flow_conservation[Terminal #8] : F[(TabulatedRatingCurve #7, Terminal #8)] = 0\n F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0\n F[(UserDemand #3, Basin #2)] ≥ 0\n F[(FlowBoundary #1, Basin #2)] ≥ 0\n F[(TabulatedRatingCurve #7, Terminal #8)] ≥ 0\n F[(UserDemand #6, Basin #5)] ≥ 0\n F[(Basin #2, LinearResistance #4)] ≥ 0\n F[(LinearResistance #4, Basin #2)] ≥ 0\n F[(Basin #2, UserDemand #3)] ≥ 0\n F[(Basin #5, UserDemand #6)] ≥ 0\n F[(LinearResistance #4, Basin #5)] ≥ 0\n F[(Basin #5, LinearResistance #4)] ≥ 0\n source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 172800\n source_user[UserDemand #3] : F[(UserDemand #3, Basin #2)] ≤ 0\n source_user[UserDemand #6] : F[(UserDemand #6, Basin #5)] ≤ 0",
"text": "4.4 Example\nThe following is an example of an optimization problem for the example shown here:\n\n\nCode\nusing Ribasim\nusing Ribasim: NodeID\nusing SQLite\nusing ComponentArrays: ComponentVector\n\ntoml_path = normpath(@__DIR__, \"../../generated_testmodels/allocation_example/ribasim.toml\")\np = Ribasim.Model(toml_path).integrator.p\nu = ComponentVector(; storage = zeros(length(p.basin.node_id)))\n\nallocation_model = p.allocation.allocation_models[1]\nt = 0.0\npriority_idx = 1\n\nRibasim.set_flow!(p.graph, 1, 1.0, u)\nRibasim.set_objective_priority!(allocation_model, p, u, t, priority_idx)\nRibasim.set_initial_values!(allocation_model, p, u, t)\n\nprintln(p.allocation.allocation_models[1].problem)\n\n\nMin F[(Basin #5, UserDemand #6)]² + F[(Basin #2, UserDemand #3)]²\nSubject to\n flow_conservation[Basin #5] : F[(UserDemand #6, Basin #5)] - F[(Basin #5, UserDemand #6)] + F[(LinearResistance #4, Basin #5)] - F[(Basin #5, LinearResistance #4)] - F[(Basin #5, TabulatedRatingCurve #7)] = 0\n flow_conservation[Basin #2] : F[(FlowBoundary #1, Basin #2)] - F[(Basin #2, LinearResistance #4)] + F[(LinearResistance #4, Basin #2)] + F[(UserDemand #3, Basin #2)] - F[(Basin #2, UserDemand #3)] = 0\n flow_conservation[LinearResistance #4] : F[(Basin #2, LinearResistance #4)] - F[(LinearResistance #4, Basin #2)] - F[(LinearResistance #4, Basin #5)] + F[(Basin #5, LinearResistance #4)] = 0\n flow_conservation[TabulatedRatingCurve #7] : -F[(TabulatedRatingCurve #7, Terminal #8)] + F[(Basin #5, TabulatedRatingCurve #7)] = 0\n flow_conservation[Terminal #8] : F[(TabulatedRatingCurve #7, Terminal #8)] = 0\n F[(UserDemand #6, Basin #5)] ≥ 0\n F[(FlowBoundary #1, Basin #2)] ≥ 0\n F[(TabulatedRatingCurve #7, Terminal #8)] ≥ 0\n F[(Basin #2, LinearResistance #4)] ≥ 0\n F[(LinearResistance #4, Basin #2)] ≥ 0\n F[(UserDemand #3, Basin #2)] ≥ 0\n F[(Basin #5, UserDemand #6)] ≥ 0\n F[(LinearResistance #4, Basin #5)] ≥ 0\n F[(Basin #5, LinearResistance #4)] ≥ 0\n F[(Basin #5, TabulatedRatingCurve #7)] ≥ 0\n F[(Basin #2, UserDemand #3)] ≥ 0\n source[(FlowBoundary #1, Basin #2)] : F[(FlowBoundary #1, Basin #2)] ≤ 172800\n source_user[UserDemand #3] : F[(UserDemand #3, Basin #2)] ≤ 0\n source_user[UserDemand #6] : F[(UserDemand #6, Basin #5)] ≤ 0",
"crumbs": [
"Concepts",
"Implementation",
Expand Down

0 comments on commit cc69f33

Please sign in to comment.