修正test_mql气室压力约定

This commit is contained in:
huojiarong committed 2026-07-15 10:25:50 +00:00
1 parent f6dda509a2
commit 2199f1c11e
5 files changed
+215 -15

No files matched your search

@@ -51,6 +51,18 @@ def liters_to_m3(value: float) -> float:
return value * 1.0e-3
def m3_to_cm3(value: float) -> float:
return value * 1.0e6
def cm3_to_m3(value: float) -> float:
return value * 1.0e-6
def kg_to_g(value: float) -> float:
return value * 1.0e3
def mm2_to_m2(value: float) -> float:
return value * 1.0e-6
@@ -99,6 +111,15 @@ class AmesimPneumaticVolume(DynamicComponent):
def set_state_vector(self, values: list[float]) -> None:
self.state = VolumeState.from_vector(values)
def volume_cm3(self) -> float:
return m3_to_cm3(self.volume)
def gas_mass_g(self) -> float:
return kg_to_g(self.state.m)
def pressure_gauge_pa(self, reference_pressure_pa: float = 101_300.0) -> float:
return self.properties().p - reference_pressure_pa
def properties(self) -> ThermodynamicProperties:
if self.state.m <= 0.0:
raise ValueError("volume mass must stay positive.")
@@ -115,6 +136,58 @@ class AmesimPneumaticVolume(DynamicComponent):
return VolumeState(m=m_flow, U=m_flow * inlet_h)
class AmesimVariablePneumaticVolume(AmesimPneumaticVolume):
"""PNCH012-style volume with a dead volume plus an external moving volume."""
def __init__(
self,
name: str,
dead_volume: float,
gas: AmesimPneumaticGas = HELIUM_PNEUMATIC_GAS,
p0: float = 101_325.0,
T0: float = 293.15,
external_volume: float = 0.0,
) -> None:
if dead_volume <= 0.0:
raise ValueError("dead_volume must be positive.")
if external_volume < 0.0:
raise ValueError("external_volume must be non-negative.")
self.dead_volume = dead_volume
self.external_volume = external_volume
super().__init__(
name=name,
volume=dead_volume + external_volume,
gas=gas,
p0=p0,
T0=T0,
)
@classmethod
def from_liters(
cls,
name: str,
dead_volume_liters: float,
gas: AmesimPneumaticGas = HELIUM_PNEUMATIC_GAS,
p0: float = 101_325.0,
T0: float = 293.15,
external_volume_liters: float = 0.0,
) -> "AmesimVariablePneumaticVolume":
return cls(
name=name,
dead_volume=liters_to_m3(dead_volume_liters),
gas=gas,
p0=p0,
T0=T0,
external_volume=liters_to_m3(external_volume_liters),
)
def set_external_volume_m3(self, external_volume: float) -> None:
if external_volume < 0.0:
raise ValueError("external_volume must be non-negative.")
self.external_volume = external_volume
self.volume = self.dead_volume + self.external_volume
class AmesimPneumaticOrifice(AlgebraicComponent):
"""First-pass PNOR001/PNVO001-style compressible helium orifice.