Repository: DHI/mikepluspy (language: python)

Issue:
Doc refinement
It's to create a workflow to build docs. And make a nicely introduction page.


Discussion / hints:

Fix patch:
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 0000000..4d51454
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,30 @@
+name: Documentation
+
+on:
+  push:
+    branches:    
+      - main
+
+jobs:
+  build:
+
+    runs-on: windows-latest
+
+    steps:
+    - uses: actions/checkout@v2
+    - name: Set up Python 3.8
+      uses: actions/setup-python@v4
+      with:
+        python-version: "3.8"
+        
+    - name: Install mikeplus
+      run: pip install .[dev]
+    
+    - name: MkDocs
+      run: mkdocs build
+    
+    - name: Deploy to GitHub Pages
+      uses: peaceiris/actions-gh-pages@v3
+      with:
+        github_token: ${{ secrets.GITHUB_TOKEN }}
+        publish_dir: site
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e2035dc..3cd7c7a 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,11 @@
-# mikeplus script Changelog
+# MIKE+Py Changelog
 
 ## [Unreleased]
 
-## [0.1] - 2023-08-30
+## [2024.1.0] - 2024-01-30
 
 ### Added
 
-- Ability to add query database methods
-- Ability to add engine launcher (mike1d and epanet)
-- Ability to run some tools
+- Ability to read/write MIKE+ database
+- Ability to run engines (MIKE 1D, EPANET, SWMM)
+- Ability to run some initial tools
diff --git a/LICENSE b/LICENSE
index 57fc08a..bd8256c 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,21 +1,201 @@
-MIT License
-
-Copyright (c) 2023 wuwwen
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2024 DHI A/S
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
diff --git a/README.md b/README.md
index bf47658..98739df 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1,37 @@
-# MIKE+ Script: Python script to access mike+ data, engines and tools
+![logo](https://raw.githubusercontent.com/DHI/mikepluspy/main/images/logo/mikeplus-py.svg)
+# MIKE+Py: automate your workflows.
 
-For read res1d and xns11 files, please use mikeio1d(https://github.com/DHI/mikeio1d).
+MIKE+Py is a python interface for MIKE+. Its main features include:
+* Modifying the MIKE+ database in a way that is consistent with the GUI.
+* Run different kinds of simulations (e.g. MIKE 1D, EPANET, SWMM)
+* Access certain GUI tools pythonically (e.g. import/export tool).
 
-For other MIKE files (Dfs0, Dfs1, Dfs2, Dfsu,...) use the related package [MIKE IO](https://github.com/DHI/mikeio)
+> [!CAUTION]
+> MIKE+Py is experimental and under development.
+> * Be aware that there may be bugs or unexpected behavior - use with caution.
+> * Always make copies of your MIKE+ databases and verify the outcome of scripts.
+> * If you encounter any issues or have any feedback, please report them on [GitHub Issues](https://github.com/DHI/mikepluspy/issues).
 
 ## Requirements
+* MIKE+ 2024 update 1 (or greater) with valid license
+* Python x64 3.8 to 3.12
 * Windows operating system
-* Python x64 3.6, 3.7 or 3.8 
-* Python.Net 3.0 or above
-
-## Where can I get help?
-* General help, new ideas and feature requests - [GitHub Discussions](http://github.com/DHI/mikeio/discussions) 
-* Bugs - [GitHub Issues](https://github.com/DHI/mikeplus-python/issues) 
 
 ## Installation
-Please install MIKE+ 2024 software first.
 
-From PyPI:
+The version of MIKE+Py you install must match the version of MIKE+ installed on your desktop. 
+
+> [!NOTE]
+> MIKE+Py is not yet available on PyPI since it is in the initial development stages.
+
+| MIKE+ Version | Install command|
+|:--------------|:---------------|
+| MIKE+ 2024 update 1 | `pip install https://github.com/DHI/mikepluspy/archive/refs/tags/v2024.1-latest.zip` |
 
-`pip install mikeplus`
 
 ## Examples
-Please check the jupyter notebook here: https://github.com/DHI/mikeplus-python/tree/main/notebooks
\ No newline at end of file
+Please check out the jupyter notebooks here: https://github.com/DHI/mikepluspy/tree/main/notebooks
+
+## Where can I get help?
+* General help, new ideas and feature requests - [GitHub Discussions](http://github.com/DHI/mikepluspy/discussions) 
+* Bugs - [GitHub Issues](https://github.com/DHI/mikepluspy/issues) 
\ No newline at end of file
diff --git a/docs/index.md b/docs/index.md
index 5567b47..cea47ab 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,9 +1,40 @@
-# mikeplus Documentation
+![logo](https://raw.githubusercontent.com/DHI/mikepluspy/main/images/logo/mikeplus-py.svg)
+# MIKE+Py: automate your workflows.
 
-## Install
-```
-pip install mikeplus
-```
+MIKE+Py is a python interface for MIKE+. Its main features include:
+* Modifying the MIKE+ database in a way that is consistent with the GUI.
+* Run different kinds of simulations (e.g. MIKE 1D, EPANET, SWMM)
+* Access certain GUI tools pythonically (e.g. import/export tool).
+
+> [!CAUTION]
+> MIKE+Py is experimental and under development.
+> * Be aware that there may be bugs or unexpected behavior - use with caution.
+> * Always make copies of your MIKE+ databases and verify the outcome of scripts.
+> * If you encounter any issues or have any feedback, please report them on [GitHub Issues](https://github.com/DHI/mikepluspy/issues).
+
+## Requirements
+* MIKE+ 2024 (or greater) with valid license
+* Python x64 3.8 to 3.12
+* Windows operating system
+
+## Installation
+
+The version of MIKE+Py you install must match the version of MIKE+ installed on your desktop. 
+
+> [!NOTE]
+> MIKE+Py is not yet available on PyPI since it is in the initial development stages.
+
+| MIKE+ Version | Install command|
+|:--------------|:---------------|
+| MIKE+ 2024    | `pip install https://github.com/DHI/mikepluspy/archive/refs/tags/v2024.0-latest.zip` |
+
+
+## Examples
+Please check out the jupyter notebooks here: https://github.com/DHI/mikepluspy/tree/main/notebooks
+
+## Where can I get help?
+* General help, new ideas and feature requests - [GitHub Discussions](http://github.com/DHI/mikepluspy/discussions) 
+* Bugs - [GitHub Issues](https://github.com/DHI/mikepluspy/issues) 
 
 
 ## Getting started
diff --git a/images/logo/mikeplus-py.eps b/images/logo/mikeplus-py.eps
new file mode 100644
index 0000000..1de86d7
Binary files /dev/null and b/images/logo/mikeplus-py.eps differ
diff --git a/images/logo/mikeplus-py.jpg b/images/logo/mikeplus-py.jpg
new file mode 100644
index 0000000..65db966
Binary files /dev/null and b/images/logo/mikeplus-py.jpg differ
diff --git a/images/logo/mikeplus-py.png b/images/logo/mikeplus-py.png
new file mode 100644
index 0000000..aab1ff0
Binary files /dev/null and b/images/logo/mikeplus-py.png differ
diff --git a/images/logo/mikeplus-py.svg b/images/logo/mikeplus-py.svg
new file mode 100644
index 0000000..a2b4000
--- /dev/null
+++ b/images/logo/mikeplus-py.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 28.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
+<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 892.4 204.2" style="enable-background:new 0 0 892.4 204.2;" xml:space="preserve">
+<style type="text/css">
+	.st0{fill:#01C4FF;}
+	.st1{fill:#004165;}
+</style>
+<g>
+	<g>
+		<path class="st0" d="M689.3,156.7h-26.9V3.3c5.1-0.9,11.2-1.7,18.2-2.3c7-0.6,13.8-1,20.3-1c20.7,0,36.5,4.5,47.4,13.4
+			c10.9,8.9,16.3,21.8,16.3,38.5c0,9.1-1.6,16.9-4.9,23.4c-3.3,6.5-7.7,11.9-13.3,16.3c-5.6,4.4-12.3,7.6-20,9.6
+			c-7.7,2.1-16.2,3.1-25.3,3.1c-1.9,0-4,0-6.1,0c-2.1,0-4-0.1-5.8-0.4V156.7z M689.3,81c1.2,0.3,2.8,0.4,4.6,0.4c1.8,0,3.6,0,5.4,0
+			c12.6,0,22.2-2.4,28.6-7.1c6.4-4.8,9.6-12.2,9.6-22.2c0-8.9-3.1-15.8-9.2-20.7c-6.1-4.9-15.4-7.4-27.7-7.4c-1.6,0-3.4,0-5.5,0
+			c-2.1,0-4,0.3-5.8,0.8V81z"/>
+		<path class="st0" d="M832.9,132L865.5,40h26.9l-63.2,164.1h-25.6L820,162L771.8,40h27.9L832.9,132z"/>
+	</g>
+	<g>
+		<path class="st1" d="M82.7,156.5L45.6,35.3l-19,121.2H0L25,0h33.5l37.9,124.1L133.6,0h33.7L192,156.5h-26.9l-19-121.2l-37.1,121.2
+			H82.7z"/>
+		<path class="st1" d="M236.6,156.5h-26.9V0h26.9V156.5z"/>
+		<path class="st1" d="M255.8,0h26.9v156.5h-26.9V0z M343.5,0h32.1l-61.4,76.9l65.6,79.6h-32.7l-63.5-77.2L343.5,0z"/>
+		<path class="st1" d="M483.7,132.8v23.7h-97.2V0h95.6v23.7h-69v42.1h64V89h-64v43.7H483.7z"/>
+	</g>
+	<g>
+		<path class="st1" d="M513.9,89.1V65.9h45.5V20.4h23.2v45.5h45.5v23.2h-45.5v45.5h-23.2V89.1H513.9z"/>
+	</g>
+</g>
+</svg>
diff --git a/mikeplus/__init__.py b/mikeplus/__init__.py
index 0016686..72b1ee4 100644
--- a/mikeplus/__init__.py
+++ b/mikeplus/__init__.py
@@ -1,6 +1,6 @@
 import clr
 
-__version__ = "0.1.0"
+__version__ = "2024.1.0"
 
 clr.AddReference("DHI.Mike.Install, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c513450b5d0bf0bf")
 from DHI.Mike.Install import MikeImport, MikeProducts
diff --git a/mikeplus/datatableaccess.py b/mikeplus/datatableaccess.py
index a198d1d..7c7d034 100644
--- a/mikeplus/datatableaccess.py
+++ b/mikeplus/datatableaccess.py
@@ -48,7 +48,7 @@ def open_database(self):
         """Open database
         """
         if self.is_database_open():
-            self.close_database()
+            return
         data_source = BaseDataSource.Create(self._file_path)
         data_source.OpenDatabase()
         datatables = DataTableContainer(True)
diff --git a/mikeplus/engines/engine1d.py b/mikeplus/engines/engine1d.py
index 6bb86d7..7cf1f8d 100644
--- a/mikeplus/engines/engine1d.py
+++ b/mikeplus/engines/engine1d.py
@@ -1,4 +1,4 @@
-import os.path
+from pathlib import Path
 import subprocess
 from DHI.Mike.Install import MikeImport, MikeProducts
 
@@ -13,42 +13,44 @@ def __init__(self,
         self._result_file = None
 
     def run(self,
-            simMuid=None):
+            simMuid=None, verbose=False):
         """Run MIKE1D simulation
 
         Parameters
         ----------
         simMuid : string, optional
             simulation muid, it will use the current active simulation muid if simMuid is None, by default None.
+        verbose : bool, optional
+            print log file or not, by default False.
 
         Examples
         --------
         >>>data_access = DataTableAccess(muppOrSqlite)
         >>>data_access.open_database()
-        >>>engine = Engine1D(data_access.datatables)
+        >>>engine = Egnine1D(data_access.datatables)
         >>>engine.run()
         >>>data_access.close_database()
         """
         if simMuid is None:
             muid = self._dataTables["msm_Project"].GetMuidsWhere("ActiveProject=1")
             if muid is None and muid.Count == 0:
-                print("Simulation id can't be none.")
-                return
+                raise ValueError("Simulation id can't be none.")
             simMuid = muid[0]
 
         product_info = MikeImport.ActiveProduct()
-        mike1d_exec = os.path.join(product_info.InstallRoot, 'bin', 'x64', 'DHI.Mike1D.Application.exe')
-        dbOrMuppFile = self._dataTables.DataSource.BaseFullPath
-        dir = os.path.dirname(os.path.abspath(dbOrMuppFile))
-        file = os.path.basename(dbOrMuppFile)
-        file_name = file.split('.')[0]
-        log_file = os.path.join(dir, file_name + '_' + simMuid + '.log')
-        self._result_file = os.path.join(dir, file_name + '_' + simMuid + '.res1d')
-        print("Simulation is started. Simulation id is '" + simMuid + "'")
-        subprocess.run([mike1d_exec, str(dbOrMuppFile), "-simulationid=" + simMuid, "-logfilename=" + log_file])
-        if self._print_log(log_file) is False:
-            print("Simulation is finished without logFile generated.")
-
+        mike1d_exec = Path(product_info.InstallRoot) / 'bin' / 'x64' / 'DHI.Mike1D.Application.exe'
+        dbOrMuppFile = Path(self._dataTables.DataSource.BaseFullPath)
+        dir = dbOrMuppFile.parent
+        file_name = dbOrMuppFile.stem
+        log_file = Path(dir) / f"{file_name}_{simMuid}.log"
+        self._result_file = Path(dir) / f"{file_name}_{simMuid}.res1d"
+        if verbose:
+            print(f"Simulation is started. Simulation id is '{simMuid}'.")
+        subprocess.run([mike1d_exec, str(dbOrMuppFile), f"-simulationid={simMuid}", f"-logfilename={log_file}"])
+        if verbose:
+            if self._print_log(log_file) is False:
+                print("Simulation is finished without logFile generated.")
+                
     @property
     def result_file(self):
         """Get the current simulation result file path
@@ -61,7 +63,7 @@ def result_file(self):
         return self._result_file
 
     def _print_log(self, logFile):
-        if os.path.exists(logFile):
+        if Path(logFile).exists():
             with open(logFile) as f:
                 lines = f.readlines()
                 for line in lines:
diff --git a/mikeplus/engines/epanet.py b/mikeplus/engines/epanet.py
index d9a076b..4dbaaba 100644
--- a/mikeplus/engines/epanet.py
+++ b/mikeplus/engines/epanet.py
@@ -15,13 +15,15 @@ def __init__(self,
         self._result_file = None
 
     def run_engine_epanet(self,
-                          simMuid=None):
+                          simMuid=None, verbose=False):
         """Run EPANET simulation
 
         Parameters
         ----------
         simMuid : string, optional
             simulation muid, it will use the current active simulation muid if simMuid is None, by default None
+        verbose : bool, optional
+            print log file or not, by default False
         
         Examples
         --------
@@ -34,9 +36,10 @@ def run_engine_epanet(self,
         if simMuid is None:
             simMuid = self._get_active_muid()
             if simMuid is None:
-                print("Simulation id can't be none.")
-                return
-        print("Simulation id is " + simMuid)
+                raise ValueError("Simulation id can't be none.")
+        
+        if verbose:
+            print("Simulation id is " + simMuid)
         engine_tool = EngineTool()
         engine_tool.DataTables = self._dataTables
         cancel_source = CancellationTokenSource()
@@ -47,10 +50,13 @@ def run_engine_epanet(self,
         dir = os.path.dirname(os.path.abspath(self._result_file))
         file_name = os.path.splitext(os.path.split(self._result_file)[1])[0]
         log_file = os.path.join(dir, file_name + '.log')
-        if self._print_log(log_file) is False:
-            if (success is False):
+        if verbose:
+            log_file_made = self._print_log(log_file)
+
+            if not success:
                 print("Simulation failed.")
-            else:
+
+            if not log_file_made:
                 print("Simulation is finished without logFile generated.")
 
     @property
diff --git a/mikeplus/engines/swmm.py b/mikeplus/engines/swmm.py
index b9c5452..b6b2a45 100644
--- a/mikeplus/engines/swmm.py
+++ b/mikeplus/engines/swmm.py
@@ -14,13 +14,15 @@ def __init__(self,
         self._result_file = None
 
     def run(self,
-            simMuid=None):
+            simMuid=None, verbose=False):
         """Run SWMM simulation
 
         Parameters
         ----------
         simMuid : string, optional
             simulation muid, it will use the current active simulation muid if simMuid is None, by default None
+        verbose : bool, optional
+            print log file or not, by default False
         
         Examples
         --------
@@ -33,9 +35,10 @@ def run(self,
         if simMuid is None:
             simMuid = self._get_active_muid()
             if simMuid is None:
-                print("Simulation id can't be none.")
-                return
-        print("Simulation id is " + simMuid)
+                raise ValueError("Simulation id can't be none.")
+        
+        if verbose:            
+            print("Simulation id is " + simMuid)
         engine_tool = EngineTool()
         engine_tool.DataTables = self._dataTables
         cancel_source = CancellationTokenSource()
@@ -46,10 +49,12 @@ def run(self,
         dir = os.path.dirname(os.path.abspath(self._result_file))
         file_name = os.path.splitext(os.path.split(self._result_file)[1])[0]
         log_file = os.path.join(dir, file_name + '.log')
-        if self._print_log(log_file) is False:
-            if (success is False):
+        if verbose:
+            if not success:
                 print("Simulation failed.")
-            else:
+                
+            log_file_made = self._print_log(log_file)
+            if log_file_made is False:
                 print("Simulation is finished without logFile generated.")
 
     @property
diff --git a/notebooks/add_many_section_discharge_result_specifications.ipynb b/notebooks/add_many_section_discharge_result_specifications.ipynb
new file mode 100644
index 0000000..fd6a08c
--- /dev/null
+++ b/notebooks/add_many_section_discharge_result_specifications.ipynb
@@ -0,0 +1,342 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Add many \"Section discharge\" result specifications\n",
+    "\n",
+    "This example shows how to add multiple \"Section discharge\" result specifications for 2D overland models. Basic workflow is:\n",
+    "\n",
+    "1. Import section coordinates.\n",
+    "2. Create result specification for each section.\n",
+    "3. Add result specifications to a particular simulation ID."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Setup a dummy database to work with"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from test_utils import create_sqlite_db\n",
+    "db_path = \"my_model.sqlite\"\n",
+    "create_sqlite_db(db_path)"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Required imports"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from mikeplus import DataTableAccess\n",
+    "from System import Nullable\n",
+    "\n",
+    "# Note: GeoPandas and Contextily is not installed by default with MIKE+Py\n",
+    "import geopandas as gpd\n",
+    "import contextily as cx"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 1. Import section coordinates."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>id</th>\n",
+       "      <th>name</th>\n",
+       "      <th>geometry</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>0</th>\n",
+       "      <td>None</td>\n",
+       "      <td>Section A</td>\n",
+       "      <td>LINESTRING (718491.472 6197313.657, 718488.758...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>1</th>\n",
+       "      <td>None</td>\n",
+       "      <td>Section B</td>\n",
+       "      <td>LINESTRING (718414.203 6197320.587, 718457.219...</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>2</th>\n",
+       "      <td>None</td>\n",
+       "      <td>Section C</td>\n",
+       "      <td>LINESTRING (718346.568 6197339.455, 718355.316...</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "     id       name                                           geometry\n",
+       "0  None  Section A  LINESTRING (718491.472 6197313.657, 718488.758...\n",
+       "1  None  Section B  LINESTRING (718414.203 6197320.587, 718457.219...\n",
+       "2  None  Section C  LINESTRING (718346.568 6197339.455, 718355.316..."
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Read sections from shapefile into GeoDataFrame\n",
+    "gdf = gpd.read_file(\"../tests/testdata/notebooks/sections.shp\")\n",
+    "gdf"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGCCAYAAADKYjiQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADRD0lEQVR4nOydd4BdZZ3+P+972u0zKaRBiFICQQJEEAFRSgpFAReFYMGogIKVIqu4y29FV2IDxIaLgLioGxWMFCUCSpEmEAxNBKkCaZBk7sxtp76/P849d2YykzLJnZk7M+9ndwxz595z3tvOec63PF+hlFJoNBqNRqPRtBByuBeg0Wg0Go1GszFaoGg0Go1Go2k5tEDRaDQajUbTcmiBotFoNBqNpuXQAkWj0Wg0Gk3LoQWKRqPRaDSalkMLFI1Go9FoNC2HFigajUaj0WhaDi1QNBqNRqPRtBxaoGg0Go1Go2k5xpxAeeCBBzjyyCPJZrO0t7dz+OGHU61WN3n/e+65h+OOO45p06YhhOB3v/tdn/usWbOGj370o0ybNo1MJsPRRx/NP//5z8bfX3rpJYQQ/f785je/GdD6Ozo6+PSnP83UqVNJpVLMmjWLP/zhDwPahkaj0Wg0rc6oEyiHH3441157bb9/e+CBBzj66KNZsGABDz30EA8//DCf+cxnkHLTL0O5XGbfffflBz/4Qb9/V0rx3ve+lxdeeIEbb7yRv/3tb8yYMYN58+ZRLpcBmD59OqtWrer1c9FFF5HNZjnmmGO2+rl5nsf8+fN56aWXuP7663nmmWf4yU9+wo477rjV29BoNBqNZiRgDvcChpJzzjmHz33uc3zpS19q3Lb77rtv9jHHHHPMZkXEP//5Tx588EGefPJJ3vKWtwDwox/9iEmTJvF///d/nH766RiGwZQpU3o9bunSpSxcuJBcLte47bXXXuPcc8/ltttuQ0rJoYceyuWXX86b3vQmAK655hrWr1/P/fffj2VZAMyYMWNAr4FGo9FoNCOBURdB2RRr167lr3/9K5MmTeKQQw5h8uTJHHbYYdx7773btV3XdQFIpVKN2wzDwLbtTW57+fLlrFixgtNOO61xW6VS4YgjjiCXy3HPPfdw7733ksvlOProo/E8D4CbbrqJgw8+mE9/+tNMnjyZvffem4svvpgwDLfrOWg0Go1G02qMGYHywgsvAPCVr3yFM844g2XLlvHWt76VuXPn9qoXGSh77rknM2bM4IILLmDDhg14nsc3vvENVq9ezapVq/p9zNVXX82sWbM45JBDGrctWbIEKSVXXXUVs2fPZtasWfz0pz/lX//6F3fddVfjOVx//fWEYcgf/vAH/vM//5NLLrmEr3/969u8fo1Go9FoWpERL1Auvvhicrlc4+cvf/kLZ555Zp/boigC4JOf/CQf+9jHmDNnDpdddhl77LEH11xzzTbv37IsbrjhBp599lnGjx9PJpPhrrvu4phjjsEwjD73r1ar/PKXv+wVPYE4qvLcc8+Rz+cb6x4/fjy1Wo3nn38egCiKmDRpEldeeSX7778/p5xyCv/xH//BFVdcsc3r12g0Go2mFRnxNShnnnkmJ598cuP3D33oQ7zvfe/jxBNPbNy24447snr1agD22muvXo+fNWsW//rXv7ZrDfvvvz8rVqygWCzieR477LADb3/72znggAP63Pf666+nUqnwkY98pNftURSx//7784tf/KLPY3bYYQcApk6dimVZvYTPrFmzWL16NZ7nYdv2dj0PjUaj0WhahREvUMaPH8/48eMbv6fTaSZNmsRuu+3W635vetObmDZtGs8880yv25999tkBddJsjra2NiAunH3kkUf42te+1uc+V199Nccff3xDdCS89a1v5Ve/+hWTJk2iUCj0u/13vOMd/PKXvySKokbn0bPPPsvUqVO1ONFoNBrNqGLEp3i2FiEE559/Pt/73ve4/vrree6557jwwgv5xz/+0SvdMnfu3F4txaVSiRUrVrBixQoAXnzxRVasWNEr6vKb3/yGu+66q9FqPH/+fN773veyYMGCXmt47rnnuOeeezj99NP7rO9DH/oQEydO5IQTTuAvf/kLL774InfffTef//znefXVVwE466yzWLduHZ///Od59tln+f3vf8/FF1/Mpz/96Wa+VBqNRqPRDDsjPoIyEM4++2xqtRrnnHMO69evZ9999+X2229n1113bdzn+eef54033mj8/sgjj3DEEUc0fj/33HMBWLRoUcNvZdWqVZx77rmsWbOGqVOn8pGPfIQLL7ywz/6vueYadtxxxz7CBSCTyXDPPffwxS9+kRNPPJGuri523HFH5s6d24ioTJ8+ndtuu41zzjmHffbZhx133JHPf/7zfPGLX2zK66PRaDQaTasglFJquBeh0Wg0Go1G05Mxk+LRaDQajUYzctACRaPRaDQaTcsxImtQoihi5cqV5PN5hBDDvRyNRqPRaDRbgVKKrq4upk2bttk5eDBCBcrKlSuZPn36cC9Do9FoNBrNNvDKK6+w0047bfY+I1Kg5PN5AJ74x5ON/9YMHkopvJqHY1qk0yk6u7qQpoE0DR3B0mg0mm1ECkHKtLcYSdhahJD1bXUfl5WKiKLmzGtLemqiKCIMI8IwIAgjVBQ1ZsIJITEMA9M0MM3YWFRKiRACpRQdHR3stttuW3XuHpECJTkp5vP5TZqaaZqHiiJcwyWXzWIYkjBSWCkbw+xr5a/RaDSarUMAKcvBaJJAAYGUvS8clVJ1gbL1DbuJEIkfGz8+CEKCICAMI5QSGIaJZdl1MWJimiaG0b1vpRRhGBKGAb4fEAQBSkWo+jq25uJ2RAoUzdASRQqFwjAkQRAAIKSOnGg0Gs32oIhP5EqpYYtG94yKdEdGYkGSRF6EEEjDwDBMHMfENA2kjCMjiQAKghDf9xqPi6IIpRRSSkzTJJVOhNjWCyUtUDRbJIoijPqHMQgjhBQ6taPRaDRNIFIRRtMaalX9p/fxWQjRGJibCKIwjAijkDAICcOQSCmoC6VYiNgYRndUJD7kx9sJggDXdfH9oL7d+HFSxikm27brIkbWH9u9nv6G6G4KLVA0m0UpRRRGmPUPVRAESEN3p2s0Gk0ziFTU1O0pBUJ0i5RYnChqNRc/CIjCsBGxiQWFgW07mGYcIZH1KEcUxSkaz/PqqZruqIgQAsOUWJbZqDGJf/oKo+1BCxTNFomiCMt26qG8CMM0dQRFo9EMGslV+gCyASOWQAiU2bwUTyI8ekZRgiCgWqshRVyjkoiK5P5KqboQqRIEQUOIJH+PoypGnOaRAiFkY73JfbuLZMGyrKYU/mqBotksSimIFKZpxjlKFWHpCIpGoxkElFJ0rO+gUiojGDsXQUN9wddzws3G0256riVJ6wwUKQU77zwdy7K2dYmAFiiaLaCiWNlblk2tVkVIqaMnGo1mUOhY30G1XGHSpEmk0+kxc6yRQrAtQmBT9Pe6JUWw3fcBEH3+3V6iKGLVqlWsWbOWHXectl3voRYoms0ShWGjQNbz/T45Ro1Go2kGURhRKZWZNGkS48ePH+7lDClCiKZGjPoTBUpF9foUaKYY6o8ddtiBlStXEoYhprntMkPH6jWbRClFGITYtl3/76BphkIajUbTkyAMEAjS6fRwL2XoGYJam+5umsG/yExSO0ldyraiIyiazaKUwrKsRhuaYegUj0ajGQTqJ+ntPb6sLta47/l1lGoBuZTJO3adwJS2VBMWOJLo22oc/z40VcfdZm3btx0tUDT9opRCRfGnyzRNPN8DMfTFXBqNRrM1PPFqkSvufoE//+N1gqj7zGhKwZF77sBZh+3C7J3ahnGFm0ahmpri6U7ljGx0vF6zSXzfx6z3xQd+oA3aNBpNS3LbU2tY+JOHuO3va3uJE4AgUtz297Us/MlD3P73NcO0wq1hYOGGa6+9dtTX6miBoumDUorAD4iCiFwuh1IRnu8hB+AAqGkuL1Z97umo8HzVG+6laDQtxROvFjn714/jBZs3PPOCiM//6nGeeLXY1P2vXbuWs846i13evAvZTJaddtyJY485lgceeGBA29mcPNlll124/PLLe922cOFC/vGPfwxoH9tzffnLX/4Sy7I466yztn0jA0QLFE0vEufYwPPJZ3NYpkWpVIrtmPVwwGHj+je6+OQ/13LD66XhXopG01JccfcLWxQnCV4Q8eN7Xmjq/k8+6WQef+xxrrnmGv7+9N/57dLfcthhh7Fh/YaBbWiA9RrpdJpJkyYN7EHbwbXXXsv555/Pr371KyqVypDsUwsUTYOk7sR3PTKpDKlUikqlTM1zsVJ2n5kKmqHDqOenmzM0XaMZHawu1vjTP14f0GP+9PTrrC7WmrL/jo4O7rvvPhYvXszhRxzOjBkzOPDAA/nil77Ise8+tnG/YrHImWeeybSp0xg/bjzz583nscce67Wtm2++mQMPPJBMJsOkSZN43/veB8CRRx7Jyy+/zLnnnothGI1ZNv2leK644gp23313UqkUe+65J9ddd12vv0tpcNVVV3HiiSeSy+XYY489uOmmm7b4PF966SXuv/9+vvjFL7Lnnnty/fXXb8vLNWC0QNEA3QOkfNfDNm2y2Qyu61KuVrFTdmPok2Z4SOxnNnZ91GjGMvc9v44wGth3IogU9z+/rin7z+Vy5HI5brzxRlzX7fc+SimOP+541qxew00338RfH/orc+bM4agFR7F+/XoA/vD7P/D+97+fY489luXLl3P77bdzwAEHAHD99dez0047cdFFF/Haa6/x2muv9bufpUuXcs4553Du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JqZholC4bixUDNPAtAyEjK/p9HeqNfCq1W18XKUp+zdNk6uvuZozP3kmV155JXPmzOFd73oXJy88mX322QeAu+68iyeffJKVq1biOHEX5be+/S1uuukmbrjhBs444wwWL17MyQtP5r++8l+Nbe+7776AYvz48RiGQT6fZ8qUKZtcy6WXXsqiRYs466yzAJg5cyYPPvggl1xyCUcccUSjUHbRokV84AMfAODiiy/mBz/4AQ899BBHH330Jrd9xRVXcPXVV6OUolKpMHPmTG699dbteem2iu2KoCxevBghBGeffXbjNqUUX/nKV5g2bRrpdJrDDz+cp556qtfjXNfls5/9LBMnTiSbzXL88cfz6quvbs9SxiwqUniuRyadxnEcypUyru9ipWyE1OJkNPBwV41HSy62gI9OKQz3clqa3lGRiMAP8D0fv+bhVV28iotXc4n8EFMYZJw0hWye9rZ22tvbaW9rJ5fN4TgO6VSa9rZ28rkcQgm8ahxdicJIp35aBDud3sbHZZq2hhNPPJF/vfIvli5dyoIFC7j77rs58G0H8rOf/QyARx99lFKpxORJk+PPWf3nxRdf5IXnXwDgscce48gjj+yz7YF8yp5++mkOOeSQXre94x3v6FNImwgngGw2Sz6fZ+3atZvd9gc/+EEeffRR/va3v3HPPfew6667cvTRR9PV1TWAFQ6cbY6gPPzww1x55ZW9nizAt771LS699FKuvfZaZs6cyX//938zf/58nnnmGfL5PABnn302N998M0uWLGHChAmcd955vOc972H58uWN/Jpmyyil8FwXx7LJZLLUajUqlQp2Ou7Y0eJkdHDFyiIA79shzyRbBz2B3gJBgVIRUaRQUf3felREIBBSYBpxVMQ0TaRhIHtEFqMoIgxDPM8jCALCKCSKIqSUpJwUjuPg2A6+71OtVfFdDyElpmXqWVbDzM6z90MaRp/W4s0hDYOd9963qetIpVLMmz+PefPn8Z8X/ief+MQn+OpFX2XRokVEUcTUqVO540939Hlce3s7EBe89ssA/dU2/iwqpfrcZlm9axKFEERbSJO1tbWx226xh8xuu+3GVVddxY477sivfvUrTj/99K1f4ADZpghKqVTiQx/6ED/5yU8YN25c43alFN/97nf5j//4D0488UT23ntvfvazn1GpVPjlL38JxMVCV199NZdccgnz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eTkPP/wwyWSSPfbYg3g8zptvvslXX33VZExvvvkmZWVlTd4vKCjgq6++oqKigvfff59HH3005/OFCxfyf//3f6ytWMvVV1/NpEmTMnU76lz8aTsTMzJhwgTOP/981pSvZl3FWj788EMURWHy5MlceeWVrF69mueee44FCxYwbty4rR7Dvn378uqrr7Jo0SJqa7ctHfv2229n2bJlfPDBB/zf//0fp59+OpCZGnrwwQdZtWoV99xzT45nZc8992TOnDl8+umnVFZWMmXKFO68806++OILFi9ezG233dbE6wSZbKr58+fz/vvvE4lEyM/PxzRNPB5PjoayHZujjjqKBQsWoKkaaTvNKaecQnFxMRMmTOCT+QuoWF3BM888w5QpUzLePlVlwYIFHHXUUTnTOLbjkLZt/vznP3P33Xfz97//nZU/reS7b7/jhhtu4JFHHmHWrFmMHTuWu+++mxkzZnD33Xfz6KOP8t///teNkckST8YZMWIEgwYN4l//+hdeo6lAcYRD2k7zpz/9iZkzZ3L77bdTsbqCd95+h9NPP52rrrqKoqIirFTr1RWSSCQdkd1JoNhphBCce+65PPvss3gMk5gV5/jjj+fdd9/l22+/ZfLkyVx77bX06dOH4447DsgEHE6dOjXz6zRdL1BSdhorneLJJ5/k3HPP5eabb+bcc8/F7/fz6aefUrLHHq4XYNKkSbz11lucddZZHHbYYVx//fWk7TTHHXccDz30EPfddx/HH388f//73zGMzK/jQw45hH79+rmu7YEDB3LAAQcA8Itf/ILnnnuOM888k+uuu45Ro0YxY8YMIJNCetppp/HAAw9QVlaG3+/nlFNOyRwDx8ZKWzz66KMMGTKEc889l9NOO4333nvP9YC88847OI7DhAkTOOecc1i2bBmapmEYBs8//zwvv/wy9957L4Ab+Go7NqqhoZk6tm3Tp08fN+7jnHPO4dBDD2XixIk8/vjj3HXXXfzyl790j+Opp57KV199xRlnnEHPnj258847SaaS7q9627FJpiz+/e9/s//++3P22Wdz3nnnsW7dOgDuvPNO+vfvz5lnnslLL73E3LlzKSoqAuCUU07B7/e7SnzMmDEUFxcDmeDacDjMjBkzWL16NYMGDeKAAw7IHO269ieffDJ+f8aLduKJJ3LVVVfxhz/8genTp/PEE0+w7777Yjs2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+v7WbrTQ8jjNsmHDBrF27Vr3r6ysTABi7ty5QgghHn/8cfHnP/9Z/O///q8AxOeff96kj2OOOUYceuihYsGCBWLZsmXilltuEaqqikWLFrlt7rrrLjFv3jyxYsUK8dFHH4lhw4aJYcOGNTum8ePHi7FjxwpAVFVVue+Hw2HRtWtXccYZZ4jFixeLF154QeTn54s77rhjl7b7zjvvFD169BBPPvmk+PHHH8WSJUvEK6+80qntjkQiorCwUEydOlUsXbpULFmyRPz6178WXbp0EZZltbjdbWl7lt///vfuddywr3Q6LQYNGiRGjhwpFi1aJMrKykSPHj3ExRdf7LbZFc/51uyeOXOmuOSSS8R7770nli1bJmbNmiV8Pp+49957O7XdDelM97Ztsbst720dyfb2uL+1F226WOAf/vAHsffeewvHcXLe/+mnn7Z4QgOBgHj88cdz3isqKhIPPfTQFvfz8ssvC0VR3JOV5f777xdHHnmkeOedd5p8ie+//34RCoVEIpFw35s+fbro0aNHk/FuL+1ld2VlpfD5fOLtt9/e4jad0e6FCxcKQKxatcpt89VXXwlA/Pjjj0KI1rVbiNa1/Y033hD777+/+Prrr5v09cYbbwhVVcWaNWvc95566inh8XhEOBwWQuy65/zn7G6OCy+8UIwcOdJ93Znt7oz3tp+zu73vbUK0n+0d4f7WVrRZDIplWTzxxBP85je/QVGUbd7uiCOO4JlnnqGyshLHcXj66adJJpMcddRRzbavrKzkySef5PDDD89ZI+ebb77h5ptv5vHHH292gaJ58+Zx5JFH5hTJGT16NBUVFaxYsWKbx9uY9rS7rKwMx3FYs2YN/fv3p1evXkycOJHy8nJ3u85od79+/SgpKWHmzJlYlkU8HmfmzJkMHDiQPn36tKrd0Lq2r1+/nt/+9rfMmjULv9/fpI958+YxaNAgevTo4b43evRokskkn332mdtmVzvnW7O7OcLhMEVFRe7rzmp3Z7y3bc3u9ry3Qfva3t73t7akzQTKf/7zH6qrq5k6dep2bffMM8+QTqcpLi7G4/Fw/vnn89JLL7H33nvntLv66qsJBAIUFxezatUqXn75ZfezZDLJmWeeye23307v3r2b3c+6devo2rVrznvZ1+vWrduuMTekPe1evnw5juPwt7/9jbvvvpvnn3+eyspKjj32WDcmoTPanZ+fz3vvvccTTzyBz+cjLy+POXPm8MYbb6Drumtba9gNrWe7EIKpU6dywQUXcMghhzTbR3N2FRYWYpqma9euds63xe7GzJs3j2effZbzzz/ffa8z2t0Z723bYnd73tugfW1v7/tbW9JmAmXmzJmMHTs255fdtnD99ddTVVXF22+/zaeffsrll1/OhAkTWLx4cU67q666is8//5y33noLTdOYMmWKGxB07bXX0r9/fyZNmvSz+2qshLPbb49Cbkx72u04DqlUin/84x+MHj2aoUOH8tRTT/HDDz8wd+5ct4/OZnc8Huc3v/kNw4cPZ/78+Xz00UcMHDiQ448/nng87vbRGnZD69l+7733EolEuPbaa3+2n+bGL4TIeX9XOufbaneWr7/+mvHjx3PjjTdy7LHH5nzW2ezujPe2bbG7Pe9t0L62t/f9rU1pi3mkFStWCFVVxX/+859mP9/SnN2PP/4oALFkyZKc90eNGiXOP//8Le6vvLxcAOLjjz8WQghxwAEHCFVVhaZpQtM0oaqqAISmaeLGG28UQggxefJkMW7cuJx+Fi1aJACxfPny7TVZCNH+dj/88MMCEOXl5TntunTpIh588EEhROe0+6GHHhJdunQRtm27bZLJpPD7/eKpp54SQrSO3UK0ru3jx4/PuY41TXOv4ylTpgghhLjhhhvEkCFDcvqorKwUgHj33Xdbzfb2tjvL119/Lbp06SKuu+66JmPojHZ3xnvbttjdXve2jmB7e97f2po28aA88sgjdOnShRNOOGG7tovFYgBN5lU1TcNxnC1uJ+qUYjKZBOCFF17gyy+/5IsvvuCLL77goYceAuCDDz5wU8SGDRvGf//735x0zLfeeosePXrQt2/f7Rp3lva2e/jw4QB89913bpvKyko2bdrkzlV2RrtjsRiqqub8Usi+zvbTGnZD69r+j3/8I+c6fuONN4CM2/ivf/0rkLFryZIlrF271u3jrbfewuPxcPDBB7ttdqVzvi12Q8ZzMnLkSM4555yc97N0Rrs7471tW+xur3sbtL/t7Xl/a3NaWwHZti169+4trr766iafbd68WXz++efi9ddfF4B4+umnxeeffy7Wrl0rhBDCsiyxzz77iF/96ldiwYIF4scffxR33HGHUBRFvP7660IIIRYsWCDuvfde8fnnn4sVK1aId999VxxxxBFi7733zolgbsjcuXObRLpXV1eLrl27ijPPPFMsXrxYvPjiiyIYDO5wWlZHsXv8+PFi4MCB4qOPPhKLFy8WJ554ohgwYICb8dIZ7f7222+Fx+MRv/vd78Q333wjlixZIiZNmiRCoZCoqKhoFbvbwvbGNPdLLZtmPGrUKLFo0SLx9ttvi169euWkGe9q53xb7F6yZInYY489xNlnn52TCrphw4ZObXdjOsO9bVvtbut7W0exvb3ub+1BqwuUOXPmCEB89913TT575JFHBNDk76abbnLbfP/99+LUU08VXbp0EX6/XwwZMiQnTeurr74SI0eOFEVFRcLj8Yi+ffuKCy64QKxevXqLY2ruS5zt61e/+pXweDyiW7du4v/9v/+3wylZHcXucDgsfvOb34iCggJRVFQkTjnllJz0tM5q91tvvSWGDx8uQqGQKCwsFEcffbSYN29eq9ndFrY3Zks37pUrV4oTTjhB+Hw+UVRUJC6++OImYn1XOufbYvdNN93U7H769OnTqe1uTGe4tzVmS3a39b2tI9neHve39kARYlcrLSeRSCQSiaSzI9fikUgkEolE0uGQAkUikUgkEkmHQwoUiUQikUgkHQ4pUCQSiUQikXQ4pECRSCQSiUTS4ZACRSKRSCQSSYdDChSJRCKRSCQdDilQJBKJRCKRdDikQJFIJBKJRNLhkAJFIpFIJBJJh0MKFIlEIpFIJB0OKVAkEolEIpF0OP4/2dQQ9PH0rHcAAAAASUVORK5CYII=",
+      "text/plain": [
+       "<Figure size 640x480 with 1 Axes>"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "# Plot the sections\n",
+    "ax = gdf.plot(column='name', legend=True)\n",
+    "cx.add_basemap(ax, crs=gdf.crs, source=cx.providers.CartoDB.Positron)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Section A [(718491.4717670247, 6197313.657350091), (718488.7577802106, 6197330.542639723)]\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Create a dictionary with keys as section names and values as a list of xy coordinates of the section\n",
+    "sections_xy = {}\n",
+    "for name in gdf['name']:\n",
+    "    sections_xy[name] = list(gdf[gdf['name'] == name].geometry.values[0].coords)\n",
+    "print(\"Section A\", sections_xy['Section A'])"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2. Create result specification for each section."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<DataTableContainer>\n",
+       "Db major version: 2024\n",
+       "Db minor version: 0.0\n",
+       "Active model: CS_MIKE1D\n",
+       "Unit system: MU_CS_SI\n",
+       "Active simulation: None"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Open the model database\n",
+    "dta = DataTableAccess(db_path)\n",
+    "dta.open_database()\n",
+    "dta"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create one result specification per cross section with the appropriate types\n",
+    "for name in sections_xy:\n",
+    "    dta.insert(\"msm_RS\", muid=name, values={\n",
+    "    \"ModelTypeNo\": Nullable[int](3),    # 3 = 2D Overland\n",
+    "    \"ContentTypeNo\": Nullable[int](21), # 21 = Section discharge\n",
+    "    \"FormatNo\": Nullable[int](2),       # 2 = Dfs0\n",
+    "})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Insert the secion coordinates into the database. Note that coordinates must be in the same projection as the model.\n",
+    "table = dta.datatables[\"msm_RSSGeom\"]\n",
+    "for name, xy in sections_xy.items():\n",
+    "    selection_id = dta.get_muid_where(\"msm_RSS\", f\"resultspecid=='{name}'\")[0]\n",
+    "    for i, (x, y) in enumerate(xy):\n",
+    "        muid = table.CreateUniqueMuid()\n",
+    "        row = table.CreateRowData(muid)\n",
+    "        table.Insert(row)\n",
+    "        dta.set_values(\"msm_RSSGeom\", muid, {\"x\":x, \"y\":y, \"sqn\":Nullable[int](i+1), \"selectionid\":selection_id})"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 3. Add result specifications to a particular simulation ID."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a new 2D overland simulation\n",
+    "simulation_id = \"my_simulation\"\n",
+    "\n",
+    "row = dta.datatables[\"msm_Project\"].CreateRowData(simulation_id)\n",
+    "dta.datatables[\"msm_Project\"].Insert(row)\n",
+    "\n",
+    "dta.set_values(\"msm_Project\", simulation_id, {\n",
+    "    \"Enable_2DOverland\": Nullable[int](1),\n",
+    "    \"Enable_HD\": Nullable[int](1),\n",
+    "})"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Add all of the new result specifications to the simulation\n",
+    "for name in sections_xy:\n",
+    "    \n",
+    "    output_id = dta.datatables[\"msm_ProjectOutput\"].CreateUniqueMuid()\n",
+    "    row = dta.datatables[\"msm_ProjectOutput\"].CreateRowData(output_id)\n",
+    "    dta.datatables[\"msm_ProjectOutput\"].Insert(row)\n",
+    "\n",
+    "    dta.set_values(\"msm_ProjectOutput\", output_id, {\n",
+    "        \"outputid\": name,\n",
+    "        \"simulationid\": simulation_id,\n",
+    "        \"contentstypeno\": Nullable[int](21), # 21 = Section discharge\n",
+    "        \"FormatNo\": Nullable[int](2),        # 2 = Dfs0\n",
+    "    })"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 11,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Close the database\n",
+    "dta.close_database()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Clean up"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 12,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from pathlib import Path\n",
+    "db_path = Path(db_path)\n",
+    "for file in [db_path, db_path.with_suffix(\".mupp\")]:\n",
+    "    if file.exists():\n",
+    "        file.unlink()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "mikeplus",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.11.0"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/notebooks/create_empty_mikeplus_sqlite_database.ipynb b/notebooks/create_empty_mikeplus_sqlite_database.ipynb
new file mode 100644
index 0000000..888abb1
--- /dev/null
+++ b/notebooks/create_empty_mikeplus_sqlite_database.ipynb
@@ -0,0 +1,270 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Create an emtpty MIKE+ sqlite database\n",
+    "\n",
+    "This example shows to create an empty MIKE+ sqlite database. Basic workflow is:\n",
+    "\n",
+    "1. Specify the coordinate system.\n",
+    "2. Create the empty database.\n",
+    "3. Configure the model type."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Required imports"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import clr\n",
+    "from System import Nullable\n",
+    "\n",
+    "import mikeplus\n",
+    "from mikeplus import DataTableAccess\n",
+    "from DHI.Amelia.DataModule.Services.DataSource import BaseDataSource"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 1. Specify the coordinate system"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# A MIKE+ compatible projection string (e.g. readable WKT of the coordinate system from MIKE+). Refer to the MIKE+ documentation for more information.\n",
+    "projection_string =  (\n",
+    "\"\"\"\n",
+    "PROJCS[\"ETRS89 / UTM zone 32N\",\n",
+    "    GEOGCS[\"ETRS89\",\n",
+    "        DATUM[\"European_Terrestrial_Reference_System_1989\",\n",
+    "            SPHEROID[\"GRS 1980\",6378137,298.257222101,\n",
+    "                AUTHORITY[\"EPSG\",\"7019\"]],\n",
+    "            TOWGS84[0,0,0,0,0,0,0],\n",
+    "            AUTHORITY[\"EPSG\",\"6258\"]],\n",
+    "        PRIMEM[\"Greenwich\",0,\n",
+    "            AUTHORITY[\"EPSG\",\"8901\"]],\n",
+    "        UNIT[\"degree\",0.0174532925199433,\n",
+    "            AUTHORITY[\"EPSG\",\"9122\"]],\n",
+    "        AUTHORITY[\"EPSG\",\"4258\"]],\n",
+    "    PROJECTION[\"Transverse_Mercator\"],\n",
+    "    PARAMETER[\"latitude_of_origin\",0],\n",
+    "    PARAMETER[\"central_meridian\",9],\n",
+    "    PARAMETER[\"scale_factor\",0.9996],\n",
+    "    PARAMETER[\"false_easting\",500000],\n",
+    "    PARAMETER[\"false_northing\",0],\n",
+    "    UNIT[\"metre\",1,\n",
+    "        AUTHORITY[\"EPSG\",\"9001\"]],\n",
+    "    AXIS[\"Easting\",EAST],\n",
+    "    AXIS[\"Northing\",NORTH],\n",
+    "    AUTHORITY[\"EPSG\",\"25832\"]]\n",
+    "\"\"\"\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Alternatively, define CRS using an SRID (e.g. EPSG).\n",
+    "srid = 25832"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# If the projection string is known, then set SRID to -1. Otherwise, if using SRID, set projection_string to an empty string.\n",
+    "if projection_string:\n",
+    "    srid = -1\n",
+    "else:\n",
+    "    projection_string = \"\""
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2. Create the database"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Path to model database\n",
+    "database_path = \"my_model.sqlite\""
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a new database\n",
+    "data_source = BaseDataSource.Create(database_path)\n",
+    "data_source.CreateDatabase();\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Set the coordinate system\n",
+    "data_source.OpenDatabase()\n",
+    "data_source.CreateModelTables(srid, projection_string)\n",
+    "data_source.CloseDatabase();"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 3. Configure the model type."
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a DataTableAccess object to access the database\n",
+    "dta = DataTableAccess(database_path)\n",
+    "dta.open_database()\n",
+    "dta"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Set the active model\n",
+    "\n",
+    "# CS_MIKE1D = River, collection systems and overland flow\n",
+    "# CS_SWMM   = SWMM collection systems and overland flow\n",
+    "# WD_EPANET = Water distribution\n",
+    "\n",
+    "dta.datatables.SetActiveModel(dta.datatables.ActiveModel.CS_MIKE1D)\n",
+    "dta.datatables.ActiveModel"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Get the default model type settings as a dictionary\n",
+    "fields = [c.Field for c in dta.datatables[\"m_ModelSetting\"].Columns]\n",
+    "values = dta.get_field_values(\"m_ModelSetting\", \"MuModel\", fields)\n",
+    "settings = {field:value for field, value in zip(fields, values)}\n",
+    "settings"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Disable all features and modules, then enable 2D Overland and Hydrodynamic.\n",
+    "settings_to_update = {}\n",
+    "for key, value in settings.items():\n",
+    "    if \"Enable\" in key:\n",
+    "        settings_to_update[key] = Nullable[int](0)\n",
+    "settings_to_update[\"Enable_2DOverland\"] = Nullable[int](1)\n",
+    "settings_to_update[\"Enable_HD\"] = Nullable[int](1)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Update the sqlite database with the new settings\n",
+    "dta.set_values(\"m_ModelSetting\", \"MuModel\", settings_to_update)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Close the database\n",
+    "dta.close_database()"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Clean up"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "from pathlib import Path\n",
+    "db_sqlite = Path(database_path)\n",
+    "db_mupp = db_sqlite.with_suffix(\".mupp\")\n",
+    "\n",
+    "for file in [db_sqlite, db_mupp]:\n",
+    "    if file.exists():\n",
+    "        file.unlink()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "mikeplus",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.11.0"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/notebooks/node_connectivity_information.ipynb b/notebooks/node_connectivity_information.ipynb
new file mode 100644
index 0000000..bbfba6b
--- /dev/null
+++ b/notebooks/node_connectivity_information.ipynb
@@ -0,0 +1,376 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Node connectivity information\n",
+    "This example demonstrates some functionality related to node connectivity, such as:\n",
+    "- Counting number of links connected to a node\n",
+    "- Coutning number of enabled links connected to a node\n",
+    "- Getting a list of upstream/downstream links connected to a node"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Imports\n",
+    "import pandas as pd\n",
+    "from mikeplus import DataTableAccess"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<DataTableContainer>\n",
+       "Db major version: 2024\n",
+       "Db minor version: 0.0\n",
+       "Active model: CS_MIKE1D\n",
+       "Unit system: MU_CS_SI\n",
+       "Active simulation: Sirius_1_DEMO"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Open the database\n",
+    "dta = DataTableAccess(\"../tests/testdata/Db/Sirius/Sirius.sqlite\")\n",
+    "dta.open_database()\n",
+    "dta"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<DHI.Amelia.DataModule.Services.DataTables.MsmNodeTable object at 0x00000294752022C0>"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get the MsmNodeTable object\n",
+    "msm_node = dta._datatables[\"msm_Node\"].__implementation__\n",
+    "msm_node"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['Node_36',\n",
+       " 'Node_27',\n",
+       " 'Node_28',\n",
+       " 'Node_30',\n",
+       " 'Node_31',\n",
+       " 'Node_32',\n",
+       " 'Node_33',\n",
+       " 'Node_34',\n",
+       " 'Inflow to_WWTP_Basin',\n",
+       " 'PS_To_WWTP']"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get all MUIDs\n",
+    "muids = msm_node.GetMuids()\n",
+    "list(muids)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get number of links connected to Node_36\n",
+    "msm_node.GetNumberofLinks(\"Node_36\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "1"
+      ]
+     },
+     "execution_count": 6,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get number of links connected to Node_36 that are enabled\n",
+    "msm_node.GetNumOfLinksEnabled(\"Node_36\")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['Link_29']"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get upstream link MUIDs connected to Node_36\n",
+    "# Note: upstream links refers to links where \"Node_36\" is the upstream node. So in practice, it includes links upstream of \"Node_36\".\n",
+    "upstream_links = msm_node.GetUpstreamLinks(\"Node_36\")\n",
+    "list(upstream_links)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[]"
+      ]
+     },
+     "execution_count": 8,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Get downstream link MUIDs connected to Node_36\n",
+    "# Note: downstream links refers to links where \"Node_36\" is the downstream node. So in practice, it includes links downstream of \"Node_36\".\n",
+    "downstream_links = msm_node.GetDownstreamLinks(\"Node_36\")\n",
+    "list(downstream_links)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<div>\n",
+       "<style scoped>\n",
+       "    .dataframe tbody tr th:only-of-type {\n",
+       "        vertical-align: middle;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe tbody tr th {\n",
+       "        vertical-align: top;\n",
+       "    }\n",
+       "\n",
+       "    .dataframe thead th {\n",
+       "        text-align: right;\n",
+       "    }\n",
+       "</style>\n",
+       "<table border=\"1\" class=\"dataframe\">\n",
+       "  <thead>\n",
+       "    <tr style=\"text-align: right;\">\n",
+       "      <th></th>\n",
+       "      <th>num_of_links</th>\n",
+       "      <th>num_of_links_enabled</th>\n",
+       "      <th>num_upstream_links</th>\n",
+       "      <th>num_downstream_links</th>\n",
+       "    </tr>\n",
+       "  </thead>\n",
+       "  <tbody>\n",
+       "    <tr>\n",
+       "      <th>Node_36</th>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_27</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_28</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_30</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_31</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_32</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_33</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Node_34</th>\n",
+       "      <td>2</td>\n",
+       "      <td>2</td>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>Inflow to_WWTP_Basin</th>\n",
+       "      <td>1</td>\n",
+       "      <td>1</td>\n",
+       "      <td>0</td>\n",
+       "      <td>1</td>\n",
+       "    </tr>\n",
+       "    <tr>\n",
+       "      <th>PS_To_WWTP</th>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "      <td>0</td>\n",
+       "    </tr>\n",
+       "  </tbody>\n",
+       "</table>\n",
+       "</div>"
+      ],
+      "text/plain": [
+       "                      num_of_links  num_of_links_enabled  num_upstream_links  \\\n",
+       "Node_36                          1                     1                   1   \n",
+       "Node_27                          2                     2                   1   \n",
+       "Node_28                          2                     2                   1   \n",
+       "Node_30                          2                     2                   1   \n",
+       "Node_31                          2                     2                   1   \n",
+       "Node_32                          2                     2                   1   \n",
+       "Node_33                          2                     2                   1   \n",
+       "Node_34                          2                     2                   1   \n",
+       "Inflow to_WWTP_Basin             1                     1                   0   \n",
+       "PS_To_WWTP                       0                     0                   0   \n",
+       "\n",
+       "                      num_downstream_links  \n",
+       "Node_36                                  0  \n",
+       "Node_27                                  1  \n",
+       "Node_28                                  1  \n",
+       "Node_30                                  1  \n",
+       "Node_31                                  1  \n",
+       "Node_32                                  1  \n",
+       "Node_33                                  1  \n",
+       "Node_34                                  1  \n",
+       "Inflow to_WWTP_Basin                     1  \n",
+       "PS_To_WWTP                               0  "
+      ]
+     },
+     "execution_count": 9,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Same as above, but for all nodes and visualized in a DataFrame\n",
+    "data = {muid: {\n",
+    "    'num_of_links' : msm_node.GetNumberofLinks(muid),\n",
+    "    'num_of_links_enabled' : msm_node.GetNumberofLinks(muid),\n",
+    "    'num_upstream_links' : msm_node.GetUpstreamLinks(muid).Count,\n",
+    "    'num_downstream_links' : msm_node.GetDownstreamLinks(muid).Count,\n",
+    "} for muid in msm_node.GetMuids()}\n",
+    "df = pd.DataFrame(data).T\n",
+    "df"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Close the database\n",
+    "dta.close_database()"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python (webinar)",
+   "language": "python",
+   "name": "webinar"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.12.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/notebooks/run_multiple_rainfall_events.ipynb b/notebooks/run_multiple_rainfall_events.ipynb
new file mode 100644
index 0000000..9083aa8
--- /dev/null
+++ b/notebooks/run_multiple_rainfall_events.ipynb
@@ -0,0 +1,1343 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "# Run multiple rainfall events\n",
+    "This example shows how to run multiple rainfall events. The basic workflow is:\n",
+    "1. Explore the rainfall boundary conditions of a dfs0 file using MIKE IO.\n",
+    "2. Create a boundary condition for each rainfall event. Set them all as inactive by default.\n",
+    "3. Run the model for each event by activating the relevant boundary condition and updating the scenario name."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### Start with some imports we'll need"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "import clr\n",
+    "import System\n",
+    "import mikeio\n",
+    "from mikeplus import DataTableAccess\n",
+    "from mikeplus.engines import Engine1D\n",
+    "from pathlib import Path"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 1. Explore rainfall boundary dfs0 file"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "<mikeio.Dataset>\n",
+       "dims: (time:22)\n",
+       "time: 2019-01-01 00:00:00 - 2019-01-02 00:00:00 (22 non-equidistant records)\n",
+       "geometry: GeometryUndefined()\n",
+       "items:\n",
+       "  0:   F=20 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  1:   F=10 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  2:   F=5 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  3:   F=2 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  4:   F=1 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  5:   F=0.5 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  6:   F=0.2 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  7:   F=0.1 <Rainfall Intensity> (mm per hour) - 3\n",
+       "  8:   F=0.05 <Rainfall Intensity> (mm per hour) - 3"
+      ]
+     },
+     "execution_count": 2,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Let's start by opening the dfs0 file that contains our rainfall events.\n",
+    "# This file contains nine events with varying frequencies.\n",
+    "# Our goal is to run the model for every single one of these events.\n",
+    "rainfall_timeseries = Path(\"../tests/testdata/Db/Sirius/Sirius_IDF_rainfall.dfs0\")\n",
+    "ds = mikeio.read(rainfall_timeseries)\n",
+    "ds"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 2. Create boundary conditions for each rainfall event"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "True"
+      ]
+     },
+     "execution_count": 3,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# First we open the MIKE+ database using MIKE+Py.\n",
+    "db_path = Path(\"../tests/testdata//Db/Sirius/Sirius.sqlite\")\n",
+    "dta = DataTableAccess(db_path)\n",
+    "dta.open_database()\n",
+    "dta.is_database_open()"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "[{'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=20',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=10',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=5',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=2',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=1',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=0.5',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=0.2',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=0.1',\n",
+       "  'data_type': 'Rainfall Intensity'},\n",
+       " {'file_path': 'Sirius_IDF_rainfall.dfs0',\n",
+       "  'item_name': ' F=0.05',\n",
+       "  'data_type': 'Rainfall Intensity'}]"
+      ]
+     },
+     "execution_count": 4,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# We'll need the dfs0 file path, the item name, and data type. \n",
+    "# This is the same info required to add boundary conditions in MIKE+.\n",
+    "event_info = []\n",
+    "for item in ds.items:\n",
+    "    event_info.append(\n",
+    "        {\n",
+    "                         # The dfs0 path should be relative to the .sqlite path\n",
+    "            \"file_path\": str(rainfall_timeseries.relative_to(db_path.parent)), \n",
+    "            \"item_name\": item.name,\n",
+    "            \"data_type\": repr(item.type),\n",
+    "        }\n",
+    "    )\n",
+    "\n",
+    "# Peak at the first two event infos created\n",
+    "event_info"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "['Rainfall  F=20',\n",
+       " 'Rainfall  F=10',\n",
+       " 'Rainfall  F=5',\n",
+       " 'Rainfall  F=2',\n",
+       " 'Rainfall  F=1',\n",
+       " 'Rainfall  F=0.5',\n",
+       " 'Rainfall  F=0.2',\n",
+       " 'Rainfall  F=0.1',\n",
+       " 'Rainfall  F=0.05']"
+      ]
+     },
+     "execution_count": 5,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Now let's create a boundary condition for each event using this info.\n",
+    "boundary_muids = []\n",
+    "for event in event_info:\n",
+    "    values = dict(\n",
+    "        VariationNo = System.Nullable[int](3), # set temporal variation to timeseries\n",
+    "        FlowTypeNo = System.Nullable[int](5), # set boundary condition type to Rainfall\n",
+    "        LoadTypeNo = System.Nullable[int](1), # set load type to stormwater runoff\n",
+    "        TSConnection = event['file_path'],\n",
+    "        TimeseriesName = event['item_name'],\n",
+    "        DataTypeName = event['data_type'],\n",
+    "    )\n",
+    "    muid = \"Rainfall \" + event['item_name']\n",
+    "    dta.insert(\"msm_BBoundary\", muid, values)\n",
+    "    dta.set_value(\"msm_BBoundary\", muid, \"ApplyBoundaryNo\", System.Nullable[int](0)) # Set boundary as inactive\n",
+    "    boundary_muids.append(muid)\n",
+    "\n",
+    "# Peek at the first 3 boundary MUIDs created\n",
+    "# Hint: check out if they've been created in MIKE+ by clicking the 'Clear' button in the 'Boundary conditions' table.\n",
+    "boundary_muids"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "#### 3. Run the model for each event"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 6,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create the Engine1D object that will be used to run MIKE 1D simulations.\n",
+    "engine = Engine1D(dta.datatables)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 7,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/plain": [
+       "'Sirius_1_DEMO'"
+      ]
+     },
+     "execution_count": 7,
+     "metadata": {},
+     "output_type": "execute_result"
+    }
+   ],
+   "source": [
+    "# Confirm which simulation is marked as the active one\n",
+    "active_simulation = dta.get_muid_where(\"msm_Project\", \"ActiveProject == 1\")[0]\n",
+    "active_simulation"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 8,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# Create a little helper function to rename the project simulation\n",
+    "def rename_simulation(current_muid, new_muid):\n",
+    "    # Rename the simulation\n",
+    "    dta.set_value(\"msm_Project\", current_muid, \"MUID\", new_muid)\n",
+    "\n",
+    "    # Change simulation MUID in the msm_ProjectOutput table too (will be fixed in future to happen automatically)\n",
+    "    output_muids = dta.get_muid_where(\"msm_ProjectOutput\", f\"simulationid == '{current_muid}'\")\n",
+    "    for muid in output_muids:\n",
+    "        dta.set_value(\"msm_ProjectOutput\", muid, current_muid, new_muid)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 9,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=20'\n",
+      "2024-02-01 16:05:42: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:05:42: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:05:42: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:05:42: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:05:42: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:42: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:42: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:43: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:05:43: Loading finished\n",
+      "\n",
+      "2024-02-01 16:05:43: Simulation ID is Simulation Rainfall  F=20\n",
+      "\n",
+      "2024-02-01 16:05:43: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:05:43: Validating setup\n",
+      "\n",
+      "2024-02-01 16:05:43: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:05:43: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:05:43: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:05:43: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:05:43: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:05:43: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:05:44: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:05:44: Using 12 threads for computation\n",
+      "\n",
+      "2024-02-01 16:05:44: Running simulation\n",
+      "\n",
+      "2024-02-01 16:05:45: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:05:45: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:05:45: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.048 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.215 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.171 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.352 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.402 (1)\n",
+      "\n",
+      "                       Running                                     :       0.545 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.544 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.008 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.000 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.349 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.511 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.023 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.486 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.008 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.022 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.008 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.007 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.002 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.006 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.015 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=20BaseDefault_Netw :       0.015 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.001 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.014 (121)\n",
+      "\n",
+      "2024-02-01 16:05:45: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=10'\n",
+      "2024-02-01 16:05:45: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:05:46: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:05:47: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:05:47: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:05:47: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:47: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:47: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:47: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:05:47: Loading finished\n",
+      "\n",
+      "2024-02-01 16:05:47: Simulation ID is Simulation Rainfall  F=10\n",
+      "\n",
+      "2024-02-01 16:05:47: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:05:47: Validating setup\n",
+      "\n",
+      "2024-02-01 16:05:48: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:05:48: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:05:48: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:05:48: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:05:48: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:05:48: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:05:48: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:05:48: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:05:48: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:05:48: Running simulation\n",
+      "\n",
+      "2024-02-01 16:05:49: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:05:49: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:05:49: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.506 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.619 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.269 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.195 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.410 (1)\n",
+      "\n",
+      "                       Running                                     :       0.636 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.633 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.015 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.002 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.346 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.581 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.008 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.572 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.013 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.019 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.005 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.005 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.005 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.032 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=10BaseDefault_Netw :       0.032 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.004 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.028 (121)\n",
+      "\n",
+      "2024-02-01 16:05:49: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=5'\n",
+      "2024-02-01 16:05:50: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:05:50: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:05:51: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:05:51: Loading finished\n",
+      "\n",
+      "2024-02-01 16:05:51: Simulation ID is Simulation Rainfall  F=5\n",
+      "\n",
+      "2024-02-01 16:05:51: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:05:51: Validating setup\n",
+      "\n",
+      "2024-02-01 16:05:51: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:05:51: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:05:51: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:05:52: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:05:52: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:05:52: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:05:52: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:05:52: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:05:52: Running simulation\n",
+      "\n",
+      "2024-02-01 16:05:53: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:05:53: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:05:53: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.510 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.518 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.082 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.196 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.516 (1)\n",
+      "\n",
+      "                       Running                                     :       0.840 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.839 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.003 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.000 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.348 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.813 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.002 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.809 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.021 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.075 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.025 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.009 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.004 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.011 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=5BaseDefault_Netwo :       0.011 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.001 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.010 (121)\n",
+      "\n",
+      "2024-02-01 16:05:53: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=2'\n",
+      "2024-02-01 16:05:54: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:05:54: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:05:55: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:05:55: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:05:55: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:55: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:55: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:55: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:05:55: Loading finished\n",
+      "\n",
+      "2024-02-01 16:05:55: Simulation ID is Simulation Rainfall  F=2\n",
+      "\n",
+      "2024-02-01 16:05:55: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:05:55: Validating setup\n",
+      "\n",
+      "2024-02-01 16:05:56: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:05:56: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:05:56: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:05:56: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:05:56: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:05:56: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:05:56: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:05:56: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:05:56: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:05:56: Running simulation\n",
+      "\n",
+      "2024-02-01 16:05:57: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:05:57: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:05:57: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.278 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.410 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.081 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.247 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.342 (1)\n",
+      "\n",
+      "                       Running                                     :       0.851 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.851 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.006 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.001 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.314 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.823 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.003 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.819 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.018 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.061 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.023 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.008 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.004 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.034 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=2BaseDefault_Netwo :       0.034 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.001 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.034 (121)\n",
+      "\n",
+      "2024-02-01 16:05:57: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=1'\n",
+      "2024-02-01 16:05:58: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:05:58: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:05:59: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:05:59: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:05:59: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:59: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:05:59: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:00: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:06:00: Loading finished\n",
+      "\n",
+      "2024-02-01 16:06:00: Simulation ID is Simulation Rainfall  F=1\n",
+      "\n",
+      "2024-02-01 16:06:00: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:06:00: Validating setup\n",
+      "\n",
+      "2024-02-01 16:06:00: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:06:00: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:06:00: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:06:00: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:06:00: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:06:00: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:06:00: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:06:00: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:06:01: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:06:01: Running simulation\n",
+      "\n",
+      "2024-02-01 16:06:02: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:06:02: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:06:02: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.825 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.709 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.124 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.417 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.446 (1)\n",
+      "\n",
+      "                       Running                                     :       0.691 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.688 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.009 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.002 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.384 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.641 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.014 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.625 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.011 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.043 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.017 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.009 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.002 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.007 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.055 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=1BaseDefault_Netwo :       0.055 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.003 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.052 (121)\n",
+      "\n",
+      "2024-02-01 16:06:02: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=0.5'\n",
+      "2024-02-01 16:06:02: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:06:03: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:06:04: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:06:04: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:06:04: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:04: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:04: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:04: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:06:05: Loading finished\n",
+      "\n",
+      "2024-02-01 16:06:05: Simulation ID is Simulation Rainfall  F=0.5\n",
+      "\n",
+      "2024-02-01 16:06:05: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:06:05: Validating setup\n",
+      "\n",
+      "2024-02-01 16:06:05: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:06:05: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:06:05: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:06:05: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:06:05: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:06:05: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:06:05: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:06:05: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:06:05: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:06:05: Running simulation\n",
+      "\n",
+      "2024-02-01 16:06:06: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:06:07: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:06:07: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.833 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.910 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.071 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.331 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.456 (1)\n",
+      "\n",
+      "                       Running                                     :       0.680 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.675 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.019 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.002 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.327 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.621 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.008 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.612 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.016 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.021 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.006 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.003 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.004 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.058 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=0.5BaseDefault_Net :       0.058 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.003 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.055 (121)\n",
+      "\n",
+      "2024-02-01 16:06:07: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=0.2'\n",
+      "2024-02-01 16:06:07: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:06:07: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:06:08: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:06:08: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:06:08: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:08: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:08: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:09: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:06:09: Loading finished\n",
+      "\n",
+      "2024-02-01 16:06:09: Simulation ID is Simulation Rainfall  F=0.2\n",
+      "\n",
+      "2024-02-01 16:06:09: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:06:09: Validating setup\n",
+      "\n",
+      "2024-02-01 16:06:09: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:06:09: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:06:09: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:06:09: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:06:09: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:06:09: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:06:09: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:06:09: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:06:10: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:06:10: Running simulation\n",
+      "\n",
+      "2024-02-01 16:06:10: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:06:11: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:06:11: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.659 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.861 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.136 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.250 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.371 (1)\n",
+      "\n",
+      "                       Running                                     :       0.652 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.650 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.007 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.000 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.375 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.622 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.008 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.613 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.009 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.020 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.006 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.005 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.005 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.015 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=0.2BaseDefault_Net :       0.015 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.001 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.014 (121)\n",
+      "\n",
+      "2024-02-01 16:06:11: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=0.1'\n",
+      "2024-02-01 16:06:11: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:06:12: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:06:13: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:06:13: Loading finished\n",
+      "\n",
+      "2024-02-01 16:06:13: Simulation ID is Simulation Rainfall  F=0.1\n",
+      "\n",
+      "2024-02-01 16:06:13: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:06:13: Validating setup\n",
+      "\n",
+      "2024-02-01 16:06:13: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:06:13: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:06:13: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:06:14: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:06:14: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:06:14: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:06:14: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:06:14: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:06:14: Running simulation\n",
+      "\n",
+      "2024-02-01 16:06:15: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:06:15: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:06:15: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.624 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.744 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.103 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.336 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.460 (1)\n",
+      "\n",
+      "                       Running                                     :       0.668 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.665 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.020 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.003 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.254 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.602 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.009 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.592 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.005 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.025 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.007 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.005 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.004 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.061 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=0.1BaseDefault_Net :       0.061 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.003 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.057 (121)\n",
+      "\n",
+      "2024-02-01 16:06:15: Simulation done\n",
+      "\n",
+      "Simulation is started. Simulation id is 'Simulation Rainfall  F=0.05'\n",
+      "2024-02-01 16:06:16: MIKE 1D Engine started (2024 - 64 bit, .NETFramework,Version=v4.7.2 (.NET Framework 4.8.9181.0))\n",
+      "\n",
+      "                     Version of MIKE 1D                            : 22 (22.0.3.17314, 2023-11-10)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.Engine                  : 22 (22.0.3.17314, 2023-11-10 19:29:25)\n",
+      "\n",
+      "                     Version of DHI.Mike1D.RainfallRunoffModule    : 22 (22.0.3.17314, 2023-11-10 19:32:02)\n",
+      "\n",
+      "2024-02-01 16:06:16: Loading setup file Sirius.sqlite...\n",
+      "\n",
+      "2024-02-01 16:06:17: Diagnostics messages during load:\n",
+      "\n",
+      "2024-02-01 16:06:17: WARNING: Found duplicate digipoints, or digipoints very close to each other. Removing 'duplicate' digipoint, reach 'Link_29', chainage 2.4489. (BR_WAR_DuplicateDigipoints)\n",
+      "\n",
+      "2024-02-01 16:06:17: WARNING: The length of reach 'Link_29' is only 2.4600 m. The minimum reach length is 10.000 m. The length of reach 'Link_29' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:17: WARNING: The length of reach 'Link_30' is only 4.0600 m. The minimum reach length is 10.000 m. The length of reach 'Link_30' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:17: WARNING: The length of reach 'Link_37' is only 8.3300 m. The minimum reach length is 10.000 m. The length of reach 'Link_37' has been set to 10.000 m. (MU_WAR_ShortReach)\n",
+      "\n",
+      "2024-02-01 16:06:17: WARNING: 'Diurnal pattern 'Pattern_Sirius_1' has been normalized because its average value is different than 1' (GE_WAR_Generic)\n",
+      "\n",
+      "2024-02-01 16:06:17: Loading finished\n",
+      "\n",
+      "2024-02-01 16:06:17: Simulation ID is Simulation Rainfall  F=0.05\n",
+      "\n",
+      "2024-02-01 16:06:17: Scenario ID is Base\n",
+      "\n",
+      "2024-02-01 16:06:17: Validating setup\n",
+      "\n",
+      "2024-02-01 16:06:18: Diagnostics messages during Validate phase:\n",
+      "\n",
+      "2024-02-01 16:06:18: WARNING: Node 'PS_To_WWTP' has no reaches connected. (ND_WAR_NoReachesConnected)\n",
+      "\n",
+      "2024-02-01 16:06:18: WARNING: 1 issue(s) found during validate (0 error(s)).\n",
+      "\n",
+      "2024-02-01 16:06:18: Initializing Setup\n",
+      "\n",
+      "2024-02-01 16:06:18: Diagnostics messages during Initialize phase:\n",
+      "\n",
+      "2024-02-01 16:06:18: WARNING: Can not set bottom level for node 'PS_To_WWTP'. It does not have any connecting reaches. (EN_ERR_NoConnectignReachesInNode)\n",
+      "\n",
+      "2024-02-01 16:06:18: WARNING: Hyper Threading is enabled, or system is highly utilized. Setting number of threads to half of maximum (6 of 12) (DA_WAR_HyperThreading)\n",
+      "\n",
+      "                     You may try to disable Hyper Threading on you system. You can disable this check by setting additional parameter HyperThreadingTest to false (-par:HyperThreadingTest=false)\n",
+      "\n",
+      "2024-02-01 16:06:18: Preparing simulation\n",
+      "\n",
+      "2024-02-01 16:06:18: Using 6 threads for computation\n",
+      "\n",
+      "2024-02-01 16:06:18: Running simulation\n",
+      "\n",
+      "2024-02-01 16:06:19: Finishing simulation\n",
+      "\n",
+      "2024-02-01 16:06:20: Adaptive time stepping statistics: \n",
+      "\n",
+      "                     Number of time steps performed   : 170\n",
+      "\n",
+      "                     Number of time steps recalculated: 0\n",
+      "\n",
+      "2024-02-01 16:06:20: Timings:\n",
+      "\n",
+      "                     Overall                                       :       3.547 (8)\n",
+      "\n",
+      "                       Loading data                                :       1.560 (1)\n",
+      "\n",
+      "                       Validating                                  :       0.073 (1)\n",
+      "\n",
+      "                       Initializing                                :       0.354 (1)\n",
+      "\n",
+      "                       Preparing                                   :       0.467 (1)\n",
+      "\n",
+      "                       Running                                     :       0.764 (1)\n",
+      "\n",
+      "                         PerformTimestep                           :       0.763 (170)\n",
+      "\n",
+      "                           Adaptive Timestep eval                  :       0.003 (170)\n",
+      "\n",
+      "                           ApplyExternalSources                    :       0.000 (170)\n",
+      "\n",
+      "                       Finishing                                   :       0.267 (1)\n",
+      "\n",
+      "                       HD Module overall                           :       0.743 (510)\n",
+      "\n",
+      "                         PrepareForTimeStep                        :       0.004 (170)\n",
+      "\n",
+      "                         PerformTimeStep                           :       0.738 (170)\n",
+      "\n",
+      "                           Prepare gridpoints for iteration        :       0.014 (170)\n",
+      "\n",
+      "                           ReachCoefficientSetupSolve              :       0.079 (170)\n",
+      "\n",
+      "                           NodeCoefficientSetup                    :       0.034 (170)\n",
+      "\n",
+      "                           NodeSolver                              :       0.012 (170)\n",
+      "\n",
+      "                         Finalize                                  :       0.001 (170)\n",
+      "\n",
+      "                       Data Module Update                          :       0.004 (170)\n",
+      "\n",
+      "                       PostTimeStep Processing                     :       0.064 (172)\n",
+      "\n",
+      "                         Simulation Rainfall  F=0.05BaseDefault_Ne :       0.064 (242)\n",
+      "\n",
+      "                           Retrieving data                         :       0.006 (121)\n",
+      "\n",
+      "                           Writing file                            :       0.058 (121)\n",
+      "\n",
+      "2024-02-01 16:06:20: Simulation done\n",
+      "\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Run the simulations\n",
+    "current_simulation_muid = active_simulation\n",
+    "for boundary_muid in boundary_muids:\n",
+    "    dta.set_value(\"msm_BBoundary\", boundary_muid, \"ApplyBoundaryNo\", System.Nullable[int](1)) # Set boundary as active\n",
+    "    new_simulation_muid = \"Simulation \" + boundary_muid\n",
+    "    rename_simulation(current_simulation_muid, new_simulation_muid)\n",
+    "    engine.run(new_simulation_muid)\n",
+    "    current_simulation_muid = new_simulation_muid\n",
+    "    dta.set_value(\"msm_BBoundary\", boundary_muid, \"ApplyBoundaryNo\", System.Nullable[int](0)) # Set boundary as inactive again"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 10,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=0.05BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=0.1BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=0.2BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=0.5BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=10BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=1BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=20BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=2BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Simulation Rainfall  F=5BaseDefault_Network_HD.res1d\n",
+      "..\\tests\\testdata\\Db\\Sirius\\Sirius_1_DEMOBaseDefault_Network_HD.res1d\n"
+     ]
+    }
+   ],
+   "source": [
+    "# Check that the result files for each simulation have been created\n",
+    "results = [p for p in db_path.parent.glob(f\"*Network_HD.res1d\")]\n",
+    "for r in results:\n",
+    "    print(r)"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "mikeplus",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.11.0"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/pyproject.toml b/pyproject.toml
index 54f56be..541bd6a 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -7,7 +7,7 @@ exclude = ["notebooks", "tests"]
 
 [project]
 name = "mikeplus"
-version = "0.0.1"
+version = "2024.1.0"
 dependencies = [
     "numpy",
     'pythonnet<=2.5.2; python_version < "3.7.0"',
@@ -40,8 +40,8 @@ dev = ["pytest","flake8","black","sphinx", "myst-parser","sphinx-book-theme"]
 test= ["pytest"]
 
 [project.urls]
-"Homepage" = "https://github.com/DHI/mikeplus-python"
-"Bug Tracker" = "https://github.com/DHI/mikeplus-python/issues"
+"Homepage" = "https://github.com/DHI/mikepluspy"
+"Bug Tracker" = "https://github.com/DHI/mikepluspy/issues"
 
 # mypy global options:
 


Test patch:
diff --git a/.github/workflows/full_test_2024_0.yml b/.github/workflows/full_test_2024_0.yml
new file mode 100644
index 0000000..de4ba74
--- /dev/null
+++ b/.github/workflows/full_test_2024_0.yml
@@ -0,0 +1,65 @@
+name: Full test
+
+on:
+  workflow_dispatch:
+  #push:
+  #  branches: [ "main" ]
+  #pull_request:
+  #  branches: [ "main" ]
+
+jobs:
+  build:
+    runs-on: windows-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        python-version: ["3.8", "3.12"]
+
+    steps:
+      - name: Checkout branch with MIKE+ dependency
+        uses: actions/checkout@v3
+        with:
+          lfs: true
+          ref: cicd_dependencies
+
+      - name: Unzip MIKE+ dependency
+        run: |
+          7z x "2024_0.7z" -p${{ secrets.MIKE_2024_0_7Z }}
+
+      - name: Install MIKE+ dependency
+        run: |
+          & "./install.bat"
+
+      - name: Checkout code
+        uses: actions/checkout@v3
+
+      - name: Set up Python ${{ matrix.python-version }}
+        uses: actions/setup-python@v3
+        with:
+          python-version: ${{ matrix.python-version }}
+          lfs: true
+
+      - name: Set up .NET
+        uses: actions/setup-dotnet@v3
+        with:
+          dotnet-version: '6.0.x'
+
+      - name: Install dependencies
+        run: |
+          python -m pip install --upgrade pip
+          python -m pip install flake8 pytest pytest-xdist pytest-timeout
+
+      - name: Lint with flake8
+        run: |
+          # stop the build if there are Python syntax errors or undefined names
+          flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
+          # exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
+          flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
+
+      - name: Install mikepluspy
+        run: |
+          python -m pip install -e .[test]
+
+      - name: Test with pytest
+        run: |
+          pytest -v -n auto --durations=0 --timeout=300
diff --git a/test_utils/__init__.py b/test_utils/__init__.py
new file mode 100644
index 0000000..59f66d4
--- /dev/null
+++ b/test_utils/__init__.py
@@ -0,0 +1,3 @@
+from .database_creators import create_sqlite_db
+
+__all__ = ["create_sqlite_db"]
\ No newline at end of file
diff --git a/test_utils/database_creators.py b/test_utils/database_creators.py
new file mode 100644
index 0000000..7ffe662
--- /dev/null
+++ b/test_utils/database_creators.py
@@ -0,0 +1,22 @@
+from pathlib import Path
+
+import mikeplus
+from DHI.Amelia.DataModule.Services.DataSource import BaseDataSource
+
+def create_sqlite_db(db_path: str | Path, srid: int = 25832):
+    """
+    Create a sqlite database for testing purposes.
+
+    Parameters
+    ----------
+    db_path : str | Path
+        Path to the sqlite database.
+    srid : int, optional
+        Spatial reference system identifier. The default is 25832.
+    """
+    db_path = str(Path(db_path))
+    data_source = BaseDataSource.Create(str(db_path))
+    data_source.CreateDatabase()
+    data_source.OpenDatabase()
+    data_source.CreateModelTables(srid, "")
+    data_source.CloseDatabase()
diff --git a/tests/test_engine.py b/tests/test_engine.py
index 975f347..89a12ef 100644
--- a/tests/test_engine.py
+++ b/tests/test_engine.py
@@ -6,7 +6,7 @@
 
 
 def test_mike1d_engine():
-    res_1d_file = os.path.join("tests", "testdata", "Db", "Sirius", "Sirius_RR_and_HDBaseDefault_Network_HD.res1d")
+    res_1d_file = os.path.join("tests", "testdata", "Db", "Sirius", "Sirius_1_DEMOBaseDefault_Network_HD.res1d")
     if os.path.exists(res_1d_file):
         os.remove(res_1d_file)
     dbFile = os.path.join("tests", "testdata", "Db", "Sirius", "Sirius.sqlite")
diff --git a/tests/testdata/notebooks/sections.dbf b/tests/testdata/notebooks/sections.dbf
new file mode 100644
index 0000000..9938efe
Binary files /dev/null and b/tests/testdata/notebooks/sections.dbf differ
diff --git a/tests/testdata/notebooks/sections.prj b/tests/testdata/notebooks/sections.prj
new file mode 100644
index 0000000..bd846ae
--- /dev/null
+++ b/tests/testdata/notebooks/sections.prj
@@ -0,0 +1,1 @@
+PROJCS["ETRS_1989_UTM_Zone_32N",GEOGCS["GCS_ETRS_1989",DATUM["D_ETRS_1989",SPHEROID["GRS_1980",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",500000.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",9.0],PARAMETER["Scale_Factor",0.9996],PARAMETER["Latitude_Of_Origin",0.0],UNIT["Meter",1.0]]
\ No newline at end of file
diff --git a/tests/testdata/notebooks/sections.qix b/tests/testdata/notebooks/sections.qix
new file mode 100644
index 0000000..2b9dac2
Binary files /dev/null and b/tests/testdata/notebooks/sections.qix differ
diff --git a/tests/testdata/notebooks/sections.shp b/tests/testdata/notebooks/sections.shp
new file mode 100644
index 0000000..aee69c9
Binary files /dev/null and b/tests/testdata/notebooks/sections.shp differ
diff --git a/tests/testdata/notebooks/sections.shx b/tests/testdata/notebooks/sections.shx
new file mode 100644
index 0000000..517eff1
Binary files /dev/null and b/tests/testdata/notebooks/sections.shx differ