From 532fdb4e6b316b3fa5b07c2dfad8cbad41709918 Mon Sep 17 00:00:00 2001 From: huojiarong Date: Wed, 29 Jul 2026 07:45:39 +0000 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85test=5Fmql=20pneumatic=5F96?= =?UTF-8?q?=E5=AF=BC=E6=95=B0=E5=88=86=E9=A1=B9=E8=AF=8A=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../run_test_mql_full_state_comparison.py | 175 ++++++++++++++++++ ...test_run_test_mql_full_state_comparison.py | 25 +++ 2 files changed, 200 insertions(+) diff --git a/PythonModels/scripts/run_test_mql_full_state_comparison.py b/PythonModels/scripts/run_test_mql_full_state_comparison.py index c3419ed..2d9fb8e 100644 --- a/PythonModels/scripts/run_test_mql_full_state_comparison.py +++ b/PythonModels/scripts/run_test_mql_full_state_comparison.py @@ -590,6 +590,17 @@ class TestMqlPneumatic96InletLineDiagnostic: amesim_storage_mass_derivative_residual_g_s: float amesim_chamber_pressure_pa: float amesim_chamber_temperature_k: float + amesim_line_temperature_derivative_fd_k_s: float + amesim_line_pressure_derivative_fd_pa_s: float + amesim_port_1_enthalpy_dtemp_component_k_s: float + amesim_port_2_enthalpy_dtemp_component_k_s: float + amesim_mass_offset_dtemp_component_k_s: float + amesim_reference_temperature_derivative_sum_k_s: float + amesim_reference_temperature_derivative_residual_k_s: float + amesim_pressure_derivative_mass_component_pa_s: float + amesim_pressure_derivative_temperature_component_pa_s: float + amesim_pressure_derivative_eos_sum_pa_s: float + amesim_pressure_derivative_eos_residual_pa_s: float python_line_pressure_pa: float python_line_temperature_k: float python_line_mass_g: float @@ -604,6 +615,15 @@ class TestMqlPneumatic96InletLineDiagnostic: python_storage_mass_derivative_error_g_s: float python_chamber_pressure_pa: float python_chamber_temperature_k: float + python_current_temperature_derivative_k_s: float + python_port_1_current_dtemp_component_k_s: float + python_port_2_current_dtemp_component_k_s: float + python_heat_dtemp_component_k_s: float + python_temperature_derivative_error_k_s: float + python_pressure_derivative_mass_component_pa_s: float + 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_chamber_pressure_error_pa: float python_chamber_temperature_error_k: float @@ -2516,6 +2536,103 @@ def _pneumatic_96_inlet_line_diagnostic( snapshot.inlet_node_to_line_flow - snapshot.inlet_line_to_chamber_flow ) * 1.0e3 + amesim_line_temperature_fd = _series_finite_difference_at( + times=amesim_results.times, + values=amesim_results.series(f"t2@{line_alias}"), + time_s=time_s, + ) + amesim_line_pressure_fd = _series_finite_difference_at( + times=amesim_results.times, + values=amesim_results.series(f"p2@{line_alias}"), + time_s=time_s, + ) + amesim_dh1 = amesim_value(f"dh1@{line_alias}") + amesim_dh2 = amesim_value(f"dh2@{orifice_alias}") + amesim_line_mass_kg = amesim_line_mass * 1.0e-3 + amesim_storage_kg_s = amesim_storage_from_ports * 1.0e-3 + amesim_reference_temperature_k = 298.15 + amesim_mass_offset_flow = ( + line.gas.cp * amesim_reference_temperature_k + - line.gas.cv * amesim_line_temperature + ) * amesim_storage_kg_s + + def amesim_dtemp_component(flow_w: float) -> float: + return flow_w / (amesim_line_mass_kg * line.gas.cv) + + amesim_port_1_dtemp = amesim_dtemp_component(-amesim_dh1) + amesim_port_2_dtemp = amesim_dtemp_component(amesim_dh2) + amesim_mass_offset_dtemp = amesim_dtemp_component(amesim_mass_offset_flow) + amesim_reference_dtemp_sum = ( + amesim_port_1_dtemp + amesim_port_2_dtemp + amesim_mass_offset_dtemp + ) + ( + amesim_pressure_mass_component, + amesim_pressure_temperature_component, + amesim_pressure_eos_sum, + ) = _pressure_derivative_components_from_density_temperature( + gas=line.gas, + density_kg_m3=amesim_line_mass_kg / line.volume, + temperature_k=amesim_line_temperature, + density_derivative_kg_m3_s=amesim_storage_kg_s / line.volume, + temperature_derivative_k_s=amesim_line_temperature_fd, + ) + + python_port_1_flow = snapshot.inlet_node_to_line_flow + python_port_2_flow = -snapshot.inlet_line_to_chamber_flow + python_heat_flow = ( + line.heat_transfer_coefficient + * line.heat_transfer_area + * (line.external_temperature - snapshot.inlet_line.T) + ) + python_port_1_u = ( + snapshot.inlet_node.h / line.gas.gamma + if python_port_1_flow > 0.0 + else snapshot.inlet_line.u + ) + python_port_2_u = ( + snapshot.chamber.h / line.gas.gamma + if python_port_2_flow > 0.0 + else snapshot.inlet_line.u + ) + + def python_current_dtemp_component( + *, + mass_flow_kg_s: float, + inlet_u_j_kg: float, + ) -> float: + return ( + mass_flow_kg_s + * (inlet_u_j_kg - snapshot.inlet_line.u) + / (line.state.m * line.gas.cv) + ) + + python_port_1_dtemp = python_current_dtemp_component( + mass_flow_kg_s=python_port_1_flow, + inlet_u_j_kg=python_port_1_u, + ) + python_port_2_dtemp = python_current_dtemp_component( + mass_flow_kg_s=python_port_2_flow, + inlet_u_j_kg=python_port_2_u, + ) + python_heat_dtemp = python_heat_flow / (line.state.m * line.gas.cv) + python_current_dtemp = ( + python_port_1_dtemp + python_port_2_dtemp + python_heat_dtemp + ) + ( + python_pressure_mass_component, + python_pressure_temperature_component, + python_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=( + (snapshot.inlet_node_to_line_flow - snapshot.inlet_line_to_chamber_flow) + / line.volume + ), + temperature_derivative_k_s=python_current_dtemp, + ) + return TestMqlPneumatic96InletLineDiagnostic( line_alias=line_alias, node_alias=node_alias, @@ -2534,6 +2651,27 @@ def _pneumatic_96_inlet_line_diagnostic( ), amesim_chamber_pressure_pa=amesim_chamber_pressure, amesim_chamber_temperature_k=amesim_chamber_temperature, + amesim_line_temperature_derivative_fd_k_s=amesim_line_temperature_fd, + amesim_line_pressure_derivative_fd_pa_s=amesim_line_pressure_fd, + amesim_port_1_enthalpy_dtemp_component_k_s=amesim_port_1_dtemp, + amesim_port_2_enthalpy_dtemp_component_k_s=amesim_port_2_dtemp, + amesim_mass_offset_dtemp_component_k_s=amesim_mass_offset_dtemp, + amesim_reference_temperature_derivative_sum_k_s=( + amesim_reference_dtemp_sum + ), + amesim_reference_temperature_derivative_residual_k_s=( + amesim_reference_dtemp_sum - amesim_line_temperature_fd + ), + amesim_pressure_derivative_mass_component_pa_s=( + amesim_pressure_mass_component + ), + amesim_pressure_derivative_temperature_component_pa_s=( + amesim_pressure_temperature_component + ), + amesim_pressure_derivative_eos_sum_pa_s=amesim_pressure_eos_sum, + amesim_pressure_derivative_eos_residual_pa_s=( + amesim_pressure_eos_sum - amesim_line_pressure_fd + ), python_line_pressure_pa=snapshot.inlet_line.p, python_line_temperature_k=snapshot.inlet_line.T, python_line_mass_g=line.state.m * 1.0e3, @@ -2556,6 +2694,23 @@ def _pneumatic_96_inlet_line_diagnostic( ), python_chamber_pressure_pa=snapshot.chamber.p, python_chamber_temperature_k=snapshot.chamber.T, + python_current_temperature_derivative_k_s=python_current_dtemp, + python_port_1_current_dtemp_component_k_s=python_port_1_dtemp, + python_port_2_current_dtemp_component_k_s=python_port_2_dtemp, + python_heat_dtemp_component_k_s=python_heat_dtemp, + python_temperature_derivative_error_k_s=( + python_current_dtemp - amesim_line_temperature_fd + ), + python_pressure_derivative_mass_component_pa_s=( + python_pressure_mass_component + ), + python_pressure_derivative_temperature_component_pa_s=( + python_pressure_temperature_component + ), + python_pressure_derivative_eos_sum_pa_s=python_pressure_eos_sum, + python_pressure_derivative_eos_error_pa_s=( + python_pressure_eos_sum - amesim_line_pressure_fd + ), python_chamber_pressure_error_pa=( snapshot.chamber.p - amesim_chamber_pressure ), @@ -3223,6 +3378,26 @@ def format_test_mql_pnvo_event_window_summary( f"python_storage_dm_error={inlet_line.python_storage_mass_derivative_error_g_s}, " f"python_chamber_p_abs={inlet_line.python_chamber_pressure_pa}, " f"python_chamber_t={inlet_line.python_chamber_temperature_k}, " + f"amesim_fd_dT={inlet_line.amesim_line_temperature_derivative_fd_k_s}, " + f"amesim_dT_p1_h={inlet_line.amesim_port_1_enthalpy_dtemp_component_k_s}, " + f"amesim_dT_p2_h={inlet_line.amesim_port_2_enthalpy_dtemp_component_k_s}, " + f"amesim_dT_m_offset={inlet_line.amesim_mass_offset_dtemp_component_k_s}, " + f"amesim_ref_dT_sum={inlet_line.amesim_reference_temperature_derivative_sum_k_s}, " + f"amesim_ref_dT_residual={inlet_line.amesim_reference_temperature_derivative_residual_k_s}, " + f"python_current_dT={inlet_line.python_current_temperature_derivative_k_s}, " + f"python_dT_p1={inlet_line.python_port_1_current_dtemp_component_k_s}, " + f"python_dT_p2={inlet_line.python_port_2_current_dtemp_component_k_s}, " + f"python_dT_heat={inlet_line.python_heat_dtemp_component_k_s}, " + f"python_dT_error={inlet_line.python_temperature_derivative_error_k_s}, " + f"amesim_fd_dP={inlet_line.amesim_line_pressure_derivative_fd_pa_s}, " + f"amesim_dP_m={inlet_line.amesim_pressure_derivative_mass_component_pa_s}, " + f"amesim_dP_T={inlet_line.amesim_pressure_derivative_temperature_component_pa_s}, " + f"amesim_dP_sum={inlet_line.amesim_pressure_derivative_eos_sum_pa_s}, " + f"amesim_dP_residual={inlet_line.amesim_pressure_derivative_eos_residual_pa_s}, " + f"python_dP_m={inlet_line.python_pressure_derivative_mass_component_pa_s}, " + 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_chamber_p_error={inlet_line.python_chamber_pressure_error_pa}, " f"python_chamber_t_error={inlet_line.python_chamber_temperature_error_k}" ) diff --git a/tests/test_run_test_mql_full_state_comparison.py b/tests/test_run_test_mql_full_state_comparison.py index a57320e..e8a0592 100644 --- a/tests/test_run_test_mql_full_state_comparison.py +++ b/tests/test_run_test_mql_full_state_comparison.py @@ -511,6 +511,17 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): amesim_storage_mass_derivative_residual_g_s=0.0, amesim_chamber_pressure_pa=15131788.1, amesim_chamber_temperature_k=291.9, + amesim_line_temperature_derivative_fd_k_s=149.5, + amesim_line_pressure_derivative_fd_pa_s=-17835932.3, + amesim_port_1_enthalpy_dtemp_component_k_s=1234.0, + amesim_port_2_enthalpy_dtemp_component_k_s=-724.0, + amesim_mass_offset_dtemp_component_k_s=-351.0, + amesim_reference_temperature_derivative_sum_k_s=159.0, + amesim_reference_temperature_derivative_residual_k_s=9.5, + amesim_pressure_derivative_mass_component_pa_s=-30562435.9, + amesim_pressure_derivative_temperature_component_pa_s=12794597.7, + amesim_pressure_derivative_eos_sum_pa_s=-17767838.2, + amesim_pressure_derivative_eos_residual_pa_s=68094.1, python_line_pressure_pa=14257000.0, python_line_temperature_k=290.1, python_line_mass_g=3.52, @@ -525,6 +536,15 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): python_storage_mass_derivative_error_g_s=0.0, python_chamber_pressure_pa=15131800.0, python_chamber_temperature_k=292.0, + python_current_temperature_derivative_k_s=261.9, + python_port_1_current_dtemp_component_k_s=0.0, + python_port_2_current_dtemp_component_k_s=261.9, + python_heat_dtemp_component_k_s=0.0, + python_temperature_derivative_error_k_s=112.4, + python_pressure_derivative_mass_component_pa_s=-17917501.3, + python_pressure_derivative_temperature_component_pa_s=650331.8, + python_pressure_derivative_eos_sum_pa_s=-17267169.5, + python_pressure_derivative_eos_error_pa_s=568762.8, python_chamber_pressure_error_pa=11.9, python_chamber_temperature_error_k=0.1, ), @@ -699,6 +719,11 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): self.assertIn("python_line_to_node_dm=453.0", summary) self.assertIn("python_line_to_node_dm_error=0.8", summary) self.assertIn("python_storage_dm_error=0.0", summary) + self.assertIn("amesim_fd_dT=149.5", summary) + self.assertIn("amesim_dT_m_offset=-351.0", summary) + self.assertIn("python_current_dT=261.9", summary) + self.assertIn("python_dT_error=112.4", summary) + self.assertIn("python_dP_error=568762.8", summary) self.assertIn("pnl0003_energy@pneumatic_87", summary) self.assertIn("amesim_sdm1=-462.7", summary) self.assertIn("amesim_sdh2=3028.0", summary)