perf: retain exact flow caches and compiled targets
This commit is contained in:
1 parent
f09dfcf542
commit
22b35b2945
7 files changed
+138
-21
No files matched your search
@@ -320,6 +320,38 @@ class AmesimPnl0003ComponentTests(unittest.TestCase):
|
||||
self.assertLess(abs(above - below), abs(above) * 0.05)
|
||||
self.assertEqual(equal, 0.0)
|
||||
|
||||
def test_exact_repeated_center_flow_inversion_is_cached(self) -> None:
|
||||
pipe = AmesimPnl0003("pnl_3", self.medium)
|
||||
pipe._mass_flow_for_pressure_drop.cache_clear()
|
||||
|
||||
first = pipe._mass_flow_for_pressure_drop(
|
||||
1000.0,
|
||||
density=1.2,
|
||||
temperature=300.0,
|
||||
)
|
||||
after_first = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
second = pipe._mass_flow_for_pressure_drop(
|
||||
1000.0,
|
||||
density=1.2,
|
||||
temperature=300.0,
|
||||
)
|
||||
after_second = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
changed_temperature = pipe._mass_flow_for_pressure_drop(
|
||||
1000.0,
|
||||
density=1.2,
|
||||
temperature=400.0,
|
||||
)
|
||||
after_temperature_change = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
|
||||
self.assertEqual(first, second)
|
||||
self.assertEqual(after_first.misses, 1)
|
||||
self.assertEqual(after_second.hits, after_first.hits + 1)
|
||||
self.assertNotEqual(changed_temperature, second)
|
||||
self.assertEqual(
|
||||
after_temperature_change.misses,
|
||||
after_second.misses + 1,
|
||||
)
|
||||
|
||||
def test_pressure_flow_residuals_bind_both_port_pressures_to_states(self) -> None:
|
||||
pipe = AmesimPnl0003("pnl_3", self.medium)
|
||||
pipe.properties_1()
|
||||
|
||||
@@ -77,6 +77,34 @@ class AmesimPnl00rComponentTests(unittest.TestCase):
|
||||
self.assertGreater(pipe.mass_flow(15.3e6 + 0.1, 15.3e6), 0.0)
|
||||
|
||||
|
||||
def test_pressure_drop_inversion_cache_keys_all_property_inputs(self) -> None:
|
||||
pipe = AmesimPnl00r(
|
||||
"pnl_1",
|
||||
self.medium,
|
||||
diam=0.014,
|
||||
le=1.0,
|
||||
rr=0.045 / 14.0,
|
||||
)
|
||||
pipe.port_1.h_outflow = self.medium.specific_enthalpy(300.0)
|
||||
pipe._mass_flow_for_pressure_drop.cache_clear()
|
||||
|
||||
first = pipe.mass_flow(501000.0, 500000.0)
|
||||
after_first = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
second = pipe.mass_flow(501000.0, 500000.0)
|
||||
after_second = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
pipe.port_1.h_outflow = self.medium.specific_enthalpy(400.0)
|
||||
third = pipe.mass_flow(501000.0, 500000.0)
|
||||
after_temperature_change = pipe._mass_flow_for_pressure_drop.cache_info()
|
||||
|
||||
self.assertEqual(first, second)
|
||||
self.assertEqual(after_first.misses, 1)
|
||||
self.assertEqual(after_second.hits, after_first.hits + 1)
|
||||
self.assertNotEqual(third, second)
|
||||
self.assertEqual(
|
||||
after_temperature_change.misses,
|
||||
after_second.misses + 1,
|
||||
)
|
||||
|
||||
def test_friction_factor_transitions_from_laminar_to_turbulent(self) -> None:
|
||||
pipe = AmesimPnl00r("pnl_1", self.medium, rr=1e-5)
|
||||
|
||||
|
||||
@@ -100,6 +100,38 @@ class AmesimSignalComponentTests(unittest.TestCase):
|
||||
valve.res.signal = -0.5
|
||||
self.assertAlmostEqual(valve.opening, 0.0)
|
||||
|
||||
def test_pnvo001_exact_repeated_flow_characteristics_are_cached(self) -> None:
|
||||
valve = AmesimPnvo001SignalOpening("valve_1", self.medium, opening0=0.25)
|
||||
valve._one_way_flow_characteristics.cache_clear()
|
||||
|
||||
first = valve._one_way_flow_characteristics(
|
||||
upstream_pressure=501000.0,
|
||||
downstream_pressure=500000.0,
|
||||
upstream_temperature=300.0,
|
||||
)
|
||||
after_first = valve._one_way_flow_characteristics.cache_info()
|
||||
second = valve._one_way_flow_characteristics(
|
||||
upstream_pressure=501000.0,
|
||||
downstream_pressure=500000.0,
|
||||
upstream_temperature=300.0,
|
||||
)
|
||||
after_second = valve._one_way_flow_characteristics.cache_info()
|
||||
changed_pressure = valve._one_way_flow_characteristics(
|
||||
upstream_pressure=502000.0,
|
||||
downstream_pressure=500000.0,
|
||||
upstream_temperature=300.0,
|
||||
)
|
||||
after_pressure_change = valve._one_way_flow_characteristics.cache_info()
|
||||
|
||||
self.assertEqual(first, second)
|
||||
self.assertEqual(after_first.misses, 1)
|
||||
self.assertEqual(after_second.hits, after_first.hits + 1)
|
||||
self.assertNotEqual(changed_pressure, second)
|
||||
self.assertEqual(
|
||||
after_pressure_change.misses,
|
||||
after_second.misses + 1,
|
||||
)
|
||||
|
||||
def test_signal_resolver_propagates_step_to_valve_input(self) -> None:
|
||||
network = SimulationNetwork("signal-smoke")
|
||||
step = AmesimStep0("step_1", self.medium, initial=0.0, final=0.75, time=0.1)
|
||||
|
||||
Reference in new issue
Block a user