fix: seed PNVO pipe series pressure
This commit is contained in:
1 parent
22b35b2945
commit
cca9d1e883
4 files changed
+110
-37
No files matched your search
@@ -58,6 +58,58 @@ class PressureFlowSolverInitializationTests(unittest.TestCase):
|
||||
"specialSeriesPressureSeed",
|
||||
)
|
||||
|
||||
def test_pnvo_pnl0001_series_pressure_is_seeded_by_flow_balance(self) -> None:
|
||||
medium = IdealGasMedium()
|
||||
chamber = AmesimPnch023("source", medium, p0=15.3e6)
|
||||
source_plug = AmesimPnpl01("source_closed")
|
||||
valve = AmesimPnvo001SignalOpening(
|
||||
"valve",
|
||||
medium,
|
||||
opening0=1.0,
|
||||
)
|
||||
valve.res.signal = 1.0
|
||||
pipe = AmesimPnl0001("pipe", medium, p0=14.0e6)
|
||||
storage_plug = AmesimPnpl01("storage_closed")
|
||||
network = SimulationNetwork("pnvo-pnl0001-series")
|
||||
for component in (chamber, source_plug, valve, pipe, storage_plug):
|
||||
network.add_component(component)
|
||||
network.connect("source_closed", "port_1", "source", "port_1")
|
||||
network.connect("source", "port_2", "valve", "port_3")
|
||||
network.connect("valve", "port_2", "pipe", "port_1")
|
||||
network.connect("pipe", "port_2", "storage_closed", "port_1")
|
||||
chamber.refresh_thermodynamic_ports()
|
||||
pipe.refresh_thermodynamic_ports()
|
||||
|
||||
solver = PressureFlowSolver(network)
|
||||
result = solver.solve()
|
||||
|
||||
self.assertTrue(result.success)
|
||||
self.assertEqual(result.evaluations, 0)
|
||||
self.assertGreater(valve.port_2.p, pipe.port_2.p)
|
||||
self.assertLess(valve.port_2.p, chamber.port_2.p)
|
||||
self.assertAlmostEqual(valve.port_2.p, pipe.port_1.p)
|
||||
self.assertAlmostEqual(-valve.port_2.m_flow, pipe.port_1.m_flow)
|
||||
|
||||
previous_intermediate_pressure = valve.port_2.p
|
||||
replay_pressure = 12.0e6
|
||||
replay_temperature = 293.15
|
||||
replay_mass = (
|
||||
medium.density(replay_pressure, replay_temperature) * pipe.volume
|
||||
)
|
||||
pipe.state = VolumeState(
|
||||
m=replay_mass,
|
||||
U=replay_mass * medium.specific_internal_energy(replay_temperature),
|
||||
)
|
||||
pipe.refresh_thermodynamic_ports()
|
||||
|
||||
replay = solver.solve()
|
||||
|
||||
self.assertTrue(replay.success)
|
||||
self.assertEqual(replay.evaluations, 0)
|
||||
self.assertNotAlmostEqual(valve.port_2.p, previous_intermediate_pressure)
|
||||
self.assertAlmostEqual(valve.port_2.p, pipe.port_1.p)
|
||||
self.assertAlmostEqual(-valve.port_2.m_flow, pipe.port_1.m_flow)
|
||||
|
||||
def test_dead_ended_pnl00r_is_seeded_at_zero_flow_pressure(self) -> None:
|
||||
medium = IdealGasMedium()
|
||||
pipe = AmesimPnl00r("resistance", medium)
|
||||
|
||||
@@ -360,7 +360,7 @@ class ThermofluidClosurePlanTests(unittest.TestCase):
|
||||
)
|
||||
]
|
||||
|
||||
self.assertEqual(len(series_solver._pnor_pnl0001_series_plan), 1)
|
||||
self.assertEqual(len(series_solver._resistance_pnl0001_series_plan), 1)
|
||||
self.assertEqual(len(closed_pipe_solver._closed_resistance_pressure_plan), 2)
|
||||
self.assertEqual(len(resistance_solver._closed_resistance_pressure_plan), 1)
|
||||
|
||||
|
||||
Reference in new issue
Block a user