对齐PNL0002上游温度并稳定热流体闭合
This commit is contained in:
1 parent
6abcc220de
commit
0f73d5b568
5 files changed
+224
-13
No files matched your search
@@ -541,6 +541,7 @@ class AmesimPnl0001(ThermodynamicVolumeComponent):
|
||||
self.port_2 = self.register_declared_port("port_2")
|
||||
self.port_2.p = self.p0
|
||||
self.port_2.h_outflow = initial_h
|
||||
self._connected_h: dict[str, float] = {}
|
||||
|
||||
@staticmethod
|
||||
def _integer_parameter(name: str, value: float) -> int:
|
||||
@@ -860,7 +861,7 @@ class AmesimPnl0002(AmesimPnl0001):
|
||||
"""AMESim PNL0002 R-C-R pneumatic pipe with one center compliance."""
|
||||
|
||||
MODEL_TYPE = "amesim_pnl0002"
|
||||
MODEL_VERSION = "0.2.0"
|
||||
MODEL_VERSION = "0.3.0"
|
||||
PORTS = (
|
||||
PortDefinition.pneumatic("port_1", nominal_role="bidirectional"),
|
||||
PortDefinition.pneumatic("port_2", nominal_role="bidirectional"),
|
||||
@@ -940,13 +941,43 @@ class AmesimPnl0002(AmesimPnl0001):
|
||||
port_pressure: float,
|
||||
center_pressure: float,
|
||||
center_temperature: float,
|
||||
*,
|
||||
port_name: str | None = None,
|
||||
) -> float:
|
||||
return self.mass_flow(port_pressure, center_pressure, center_temperature)
|
||||
upstream_temperature = center_temperature
|
||||
if (
|
||||
port_name is not None
|
||||
and port_name in self._connected_h
|
||||
and port_pressure > center_pressure
|
||||
):
|
||||
inlet_h = self._connected_h[port_name]
|
||||
upstream_temperature = self.medium.temperature_from_pressure_enthalpy(
|
||||
max(port_pressure, 1.0),
|
||||
inlet_h,
|
||||
)
|
||||
return self.mass_flow(
|
||||
port_pressure,
|
||||
center_pressure,
|
||||
max(upstream_temperature, 1.0),
|
||||
)
|
||||
|
||||
def update_stream_outflows(self, connected_h: Mapping[str, float]) -> None:
|
||||
self._connected_h = dict(connected_h)
|
||||
|
||||
def component_result_values(self) -> Mapping[str, float]:
|
||||
props = self.properties()
|
||||
flow_1 = self.port_mass_flow(self.port_1.p, props.p, props.T)
|
||||
flow_2 = self.port_mass_flow(self.port_2.p, props.p, props.T)
|
||||
flow_1 = self.port_mass_flow(
|
||||
self.port_1.p,
|
||||
props.p,
|
||||
props.T,
|
||||
port_name="port_1",
|
||||
)
|
||||
flow_2 = self.port_mass_flow(
|
||||
self.port_2.p,
|
||||
props.p,
|
||||
props.T,
|
||||
port_name="port_2",
|
||||
)
|
||||
diagnostic_flow = flow_1 if abs(flow_1) >= abs(flow_2) else flow_2
|
||||
upstream_pressure = max(self.port_1.p, self.port_2.p, props.p, 1.0)
|
||||
density = max(self.medium.density(upstream_pressure, props.T), 1.0e-12)
|
||||
@@ -980,7 +1011,12 @@ class AmesimPnl0002(AmesimPnl0001):
|
||||
),
|
||||
role="flow",
|
||||
value=self.port_1.m_flow
|
||||
- self.port_mass_flow(self.port_1.p, props.p, props.T),
|
||||
- self.port_mass_flow(
|
||||
self.port_1.p,
|
||||
props.p,
|
||||
props.T,
|
||||
port_name="port_1",
|
||||
),
|
||||
),
|
||||
EquationResidual(
|
||||
id=f"{self.name}:port_2_pressure_flow_relation",
|
||||
@@ -994,7 +1030,12 @@ class AmesimPnl0002(AmesimPnl0001):
|
||||
),
|
||||
role="flow",
|
||||
value=self.port_2.m_flow
|
||||
- self.port_mass_flow(self.port_2.p, props.p, props.T),
|
||||
- self.port_mass_flow(
|
||||
self.port_2.p,
|
||||
props.p,
|
||||
props.T,
|
||||
port_name="port_2",
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
Reference in new issue
Block a user