From 6c6dc92214a78429303983b00a0a11e3c2f028d5 Mon Sep 17 00:00:00 2001 From: kbonney Date: Mon, 15 Jul 2024 10:26:34 -0400 Subject: [PATCH] add msx simulation test --- wntr/tests/test_epanet_msx_sim.py | 50 +++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 wntr/tests/test_epanet_msx_sim.py diff --git a/wntr/tests/test_epanet_msx_sim.py b/wntr/tests/test_epanet_msx_sim.py new file mode 100644 index 000000000..fdc5c9db0 --- /dev/null +++ b/wntr/tests/test_epanet_msx_sim.py @@ -0,0 +1,50 @@ +import unittest +import warnings +from os.path import abspath, dirname, join + +import numpy as np +import pandas as pd +import wntr +import wntr.msx +import wntr.epanet.msx + +testdir = dirname(abspath(str(__file__))) +test_network_dir = join(testdir, "networks_for_testing") +inp_filename = join(test_network_dir, "msx_example.inp") +msx_filename = join(test_network_dir, "msx_example.msx") + + +class TestEpanetMSXSim(unittest.TestCase): + @classmethod + def setUpClass(self): + pass + + @classmethod + def tearDownClass(self): + pass + + def test_msx_sim(self): + wn = wntr.network.WaterNetworkModel(inp_file_name=inp_filename) + wn.add_msx_model(msx_filename=msx_filename) + sim = wntr.sim.EpanetSimulator(wn) + msx_model = wntr.msx.MsxModel(msx_file_name=msx_filename) + + # run sim + res = sim.run_sim() + + # check results object keys + for species in wn.msx.species_name_list: + assert species in res.node.keys() + assert species in res.link.keys() + + + # sanity check at test point + expected = 10.032905 # Node 'C' at time 136800 for AStot + error = abs( + (res.node["AStot"].loc[136800, "C"] - expected) / expected + ) + self.assertLess(error, 0.0001) # 0.01% error + + +if __name__ == "__main__": + unittest.main(verbosity=2)