补充test_mql pneumatic_96参考导数反事实诊断

This commit is contained in:
huojiarong committed 2026-07-29 08:04:30 +00:00
1 parent 532fdb4e6b
commit cd2fa800b9
2 files changed
+212 -4

No files matched your search

@@ -624,6 +624,24 @@ class TestMqlPneumatic96InletLineDiagnostic:
python_pressure_derivative_temperature_component_pa_s: float
python_pressure_derivative_eos_sum_pa_s: float
python_pressure_derivative_eos_error_pa_s: float
python_reference_port_1_enthalpy_flow_w: float
python_reference_port_2_enthalpy_flow_w: float
python_reference_port_1_dtemp_component_k_s: float
python_reference_port_2_dtemp_component_k_s: float
python_reference_mass_offset_dtemp_component_k_s: float
python_reference_temperature_derivative_k_s: float
python_reference_temperature_derivative_error_k_s: float
python_reference_pressure_derivative_mass_component_pa_s: float
python_reference_pressure_derivative_temperature_component_pa_s: float
python_reference_pressure_derivative_eos_sum_pa_s: float
python_reference_pressure_derivative_eos_error_pa_s: float
python_reference_amesim_storage_mass_offset_dtemp_component_k_s: float
python_reference_amesim_storage_temperature_derivative_k_s: float
python_reference_amesim_storage_temperature_derivative_error_k_s: float
python_reference_amesim_storage_pressure_derivative_mass_component_pa_s: float
python_reference_amesim_storage_pressure_derivative_temperature_component_pa_s: float
python_reference_amesim_storage_pressure_derivative_eos_sum_pa_s: float
python_reference_amesim_storage_pressure_derivative_eos_error_pa_s: float
python_chamber_pressure_error_pa: float
python_chamber_temperature_error_k: float
@@ -2618,6 +2636,10 @@ def _pneumatic_96_inlet_line_diagnostic(
python_current_dtemp = (
python_port_1_dtemp + python_port_2_dtemp + python_heat_dtemp
)
python_density_derivative = (
(snapshot.inlet_node_to_line_flow - snapshot.inlet_line_to_chamber_flow)
/ line.volume
)
(
python_pressure_mass_component,
python_pressure_temperature_component,
@@ -2626,13 +2648,90 @@ def _pneumatic_96_inlet_line_diagnostic(
gas=line.gas,
density_kg_m3=line.state.m / line.volume,
temperature_k=snapshot.inlet_line.T,
density_derivative_kg_m3_s=(
(snapshot.inlet_node_to_line_flow - snapshot.inlet_line_to_chamber_flow)
/ line.volume
),
density_derivative_kg_m3_s=python_density_derivative,
temperature_derivative_k_s=python_current_dtemp,
)
python_reference_port_1_dh = _actual_reference_enthalpy_flow(
gas=line.gas,
port_m_flow=python_port_1_flow,
connected_pressure_pa=snapshot.inlet_node.p,
connected_temperature_k=snapshot.inlet_node.T,
internal_pressure_pa=snapshot.inlet_line.p,
internal_temperature_k=snapshot.inlet_line.T,
reference_temperature_k=amesim_reference_temperature_k,
)
python_reference_port_2_dh = _actual_reference_enthalpy_flow(
gas=line.gas,
port_m_flow=python_port_2_flow,
connected_pressure_pa=snapshot.chamber.p,
connected_temperature_k=snapshot.chamber.T,
internal_pressure_pa=snapshot.inlet_line.p,
internal_temperature_k=snapshot.inlet_line.T,
reference_temperature_k=amesim_reference_temperature_k,
)
python_reference_mass_offset_flow = (
line.gas.cp * amesim_reference_temperature_k
- line.gas.cv * snapshot.inlet_line.T
) * (python_port_1_flow + python_port_2_flow)
def python_reference_dtemp_component(flow_w: float) -> float:
return flow_w / (line.state.m * line.gas.cv)
python_reference_port_1_dtemp = python_reference_dtemp_component(
python_reference_port_1_dh
)
python_reference_port_2_dtemp = python_reference_dtemp_component(
python_reference_port_2_dh
)
python_reference_mass_offset_dtemp = python_reference_dtemp_component(
python_reference_mass_offset_flow
)
python_reference_dtemp = (
python_reference_port_1_dtemp
+ python_reference_port_2_dtemp
+ python_reference_mass_offset_dtemp
+ python_heat_dtemp
)
(
python_reference_pressure_mass_component,
python_reference_pressure_temperature_component,
python_reference_pressure_eos_sum,
) = _pressure_derivative_components_from_density_temperature(
gas=line.gas,
density_kg_m3=line.state.m / line.volume,
temperature_k=snapshot.inlet_line.T,
density_derivative_kg_m3_s=python_density_derivative,
temperature_derivative_k_s=python_reference_dtemp,
)
python_reference_amesim_storage_mass_offset_flow = (
line.gas.cp * amesim_reference_temperature_k
- line.gas.cv * snapshot.inlet_line.T
) * amesim_storage_kg_s
python_reference_amesim_storage_mass_offset_dtemp = (
python_reference_dtemp_component(
python_reference_amesim_storage_mass_offset_flow
)
)
python_reference_amesim_storage_dtemp = (
python_reference_port_1_dtemp
+ python_reference_port_2_dtemp
+ python_reference_amesim_storage_mass_offset_dtemp
+ python_heat_dtemp
)
(
python_reference_amesim_storage_pressure_mass_component,
python_reference_amesim_storage_pressure_temperature_component,
python_reference_amesim_storage_pressure_eos_sum,
) = _pressure_derivative_components_from_density_temperature(
gas=line.gas,
density_kg_m3=line.state.m / line.volume,
temperature_k=snapshot.inlet_line.T,
density_derivative_kg_m3_s=amesim_storage_kg_s / line.volume,
temperature_derivative_k_s=python_reference_amesim_storage_dtemp,
)
return TestMqlPneumatic96InletLineDiagnostic(
line_alias=line_alias,
node_alias=node_alias,
@@ -2711,6 +2810,54 @@ def _pneumatic_96_inlet_line_diagnostic(
python_pressure_derivative_eos_error_pa_s=(
python_pressure_eos_sum - amesim_line_pressure_fd
),
python_reference_port_1_enthalpy_flow_w=python_reference_port_1_dh,
python_reference_port_2_enthalpy_flow_w=python_reference_port_2_dh,
python_reference_port_1_dtemp_component_k_s=(
python_reference_port_1_dtemp
),
python_reference_port_2_dtemp_component_k_s=(
python_reference_port_2_dtemp
),
python_reference_mass_offset_dtemp_component_k_s=(
python_reference_mass_offset_dtemp
),
python_reference_temperature_derivative_k_s=python_reference_dtemp,
python_reference_temperature_derivative_error_k_s=(
python_reference_dtemp - amesim_line_temperature_fd
),
python_reference_pressure_derivative_mass_component_pa_s=(
python_reference_pressure_mass_component
),
python_reference_pressure_derivative_temperature_component_pa_s=(
python_reference_pressure_temperature_component
),
python_reference_pressure_derivative_eos_sum_pa_s=(
python_reference_pressure_eos_sum
),
python_reference_pressure_derivative_eos_error_pa_s=(
python_reference_pressure_eos_sum - amesim_line_pressure_fd
),
python_reference_amesim_storage_mass_offset_dtemp_component_k_s=(
python_reference_amesim_storage_mass_offset_dtemp
),
python_reference_amesim_storage_temperature_derivative_k_s=(
python_reference_amesim_storage_dtemp
),
python_reference_amesim_storage_temperature_derivative_error_k_s=(
python_reference_amesim_storage_dtemp - amesim_line_temperature_fd
),
python_reference_amesim_storage_pressure_derivative_mass_component_pa_s=(
python_reference_amesim_storage_pressure_mass_component
),
python_reference_amesim_storage_pressure_derivative_temperature_component_pa_s=(
python_reference_amesim_storage_pressure_temperature_component
),
python_reference_amesim_storage_pressure_derivative_eos_sum_pa_s=(
python_reference_amesim_storage_pressure_eos_sum
),
python_reference_amesim_storage_pressure_derivative_eos_error_pa_s=(
python_reference_amesim_storage_pressure_eos_sum - amesim_line_pressure_fd
),
python_chamber_pressure_error_pa=(
snapshot.chamber.p - amesim_chamber_pressure
),
@@ -3398,6 +3545,24 @@ def format_test_mql_pnvo_event_window_summary(
f"python_dP_T={inlet_line.python_pressure_derivative_temperature_component_pa_s}, "
f"python_dP_sum={inlet_line.python_pressure_derivative_eos_sum_pa_s}, "
f"python_dP_error={inlet_line.python_pressure_derivative_eos_error_pa_s}, "
f"python_ref_dh1={inlet_line.python_reference_port_1_enthalpy_flow_w}, "
f"python_ref_dh2={inlet_line.python_reference_port_2_enthalpy_flow_w}, "
f"python_ref_dT_p1={inlet_line.python_reference_port_1_dtemp_component_k_s}, "
f"python_ref_dT_p2={inlet_line.python_reference_port_2_dtemp_component_k_s}, "
f"python_ref_dT_m_offset={inlet_line.python_reference_mass_offset_dtemp_component_k_s}, "
f"python_ref_dT={inlet_line.python_reference_temperature_derivative_k_s}, "
f"python_ref_dT_error={inlet_line.python_reference_temperature_derivative_error_k_s}, "
f"python_ref_dP_m={inlet_line.python_reference_pressure_derivative_mass_component_pa_s}, "
f"python_ref_dP_T={inlet_line.python_reference_pressure_derivative_temperature_component_pa_s}, "
f"python_ref_dP_sum={inlet_line.python_reference_pressure_derivative_eos_sum_pa_s}, "
f"python_ref_dP_error={inlet_line.python_reference_pressure_derivative_eos_error_pa_s}, "
f"python_ref_amesim_storage_dT_m_offset={inlet_line.python_reference_amesim_storage_mass_offset_dtemp_component_k_s}, "
f"python_ref_amesim_storage_dT={inlet_line.python_reference_amesim_storage_temperature_derivative_k_s}, "
f"python_ref_amesim_storage_dT_error={inlet_line.python_reference_amesim_storage_temperature_derivative_error_k_s}, "
f"python_ref_amesim_storage_dP_m={inlet_line.python_reference_amesim_storage_pressure_derivative_mass_component_pa_s}, "
f"python_ref_amesim_storage_dP_T={inlet_line.python_reference_amesim_storage_pressure_derivative_temperature_component_pa_s}, "
f"python_ref_amesim_storage_dP_sum={inlet_line.python_reference_amesim_storage_pressure_derivative_eos_sum_pa_s}, "
f"python_ref_amesim_storage_dP_error={inlet_line.python_reference_amesim_storage_pressure_derivative_eos_error_pa_s}, "
f"python_chamber_p_error={inlet_line.python_chamber_pressure_error_pa}, "
f"python_chamber_t_error={inlet_line.python_chamber_temperature_error_k}"
)