完善 PNL00R 摩擦模型与八路回归
This commit is contained in:
1 parent
684d28752a
commit
f725f038b6
10 files changed
+498
-98
No files matched your search
@@ -7,6 +7,7 @@ from unittest.mock import patch
|
||||
from app.simulation.components.amesim.boundary.sources import AmesimPnpl01
|
||||
from app.simulation.components.amesim.flow.orifices import (
|
||||
AmesimPnor001,
|
||||
AmesimPnvo001FixedOpening,
|
||||
AmesimPnvo001SignalOpening,
|
||||
)
|
||||
from app.simulation.components.amesim.flow.pipes import AmesimPnl00r
|
||||
@@ -110,6 +111,62 @@ class PressureFlowSolverInitializationTests(unittest.TestCase):
|
||||
self.assertAlmostEqual(valve.port_2.p, pipe.port_1.p)
|
||||
self.assertAlmostEqual(-valve.port_2.m_flow, pipe.port_1.m_flow)
|
||||
|
||||
def test_pnvo_pnl00r_series_pressure_is_seeded_by_flow_balance(self) -> None:
|
||||
medium = IdealGasMedium()
|
||||
source = Cylinder(
|
||||
"source",
|
||||
medium,
|
||||
V=0.01,
|
||||
p0=150_000.0,
|
||||
T0=300.0,
|
||||
)
|
||||
valve = AmesimPnvo001FixedOpening(
|
||||
"valve",
|
||||
medium,
|
||||
opening=0.5,
|
||||
)
|
||||
pipe = AmesimPnl00r(
|
||||
"pipe",
|
||||
medium,
|
||||
diam=0.02,
|
||||
le=1.0,
|
||||
rr=1.0e-5,
|
||||
)
|
||||
sink = Tank(
|
||||
"sink",
|
||||
medium,
|
||||
V=0.1,
|
||||
p0=100_000.0,
|
||||
T0=300.0,
|
||||
)
|
||||
network = SimulationNetwork("pnvo-pnl00r-series")
|
||||
for component in (source, valve, pipe, sink):
|
||||
network.add_component(component)
|
||||
network.connect("source", "port_b", "valve", "port_2")
|
||||
network.connect("valve", "port_3", "pipe", "port_1")
|
||||
network.connect("pipe", "port_2", "sink", "port_a")
|
||||
source.refresh_thermodynamic_ports()
|
||||
sink.refresh_thermodynamic_ports()
|
||||
|
||||
solver = PressureFlowSolver(network)
|
||||
result = solver.solve()
|
||||
|
||||
self.assertTrue(result.success)
|
||||
self.assertEqual(result.evaluations, 0)
|
||||
self.assertGreater(valve.port_3.p, pipe.port_2.p)
|
||||
self.assertLess(valve.port_3.p, source.port_b.p)
|
||||
self.assertAlmostEqual(valve.port_3.p, pipe.port_1.p)
|
||||
self.assertAlmostEqual(
|
||||
-valve.port_3.m_flow,
|
||||
pipe.port_1.m_flow,
|
||||
delta=1.0e-10,
|
||||
)
|
||||
self.assertFalse(solver.causal_fast_path_eligible)
|
||||
self.assertEqual(
|
||||
solver.causal_execution_diagnostics()["fallbackReason"],
|
||||
"specialSeriesPressureSeed",
|
||||
)
|
||||
|
||||
def test_dead_ended_pnl00r_is_seeded_at_zero_flow_pressure(self) -> None:
|
||||
medium = IdealGasMedium()
|
||||
pipe = AmesimPnl00r("resistance", medium)
|
||||
|
||||
Reference in new issue
Block a user