diff --git a/PythonModels/scripts/run_test_mql_full_state_comparison.py b/PythonModels/scripts/run_test_mql_full_state_comparison.py index b7a8272..8b6a4ca 100644 --- a/PythonModels/scripts/run_test_mql_full_state_comparison.py +++ b/PythonModels/scripts/run_test_mql_full_state_comparison.py @@ -435,6 +435,10 @@ class TestMqlPnl0003EnergyDiagnostic: amesim_port_1_storage_enthalpy_sum_w: float amesim_port_2_storage_mass_derivative_g_s: float amesim_port_2_storage_enthalpy_sum_w: float + python_pn3_node_port_1_mass_flow_g_s: float + python_pn3_node_port_3_mass_flow_g_s: float + python_pn3_node_to_line_mass_flow_g_s: float + python_pn3_node_to_line_mass_flow_error_g_s: float amesim_port_1_mass_estimate_g: float amesim_port_2_mass_estimate_g: float python_port_1_mass_g: float @@ -449,6 +453,20 @@ class TestMqlPnl0003EnergyDiagnostic: amesim_center_flow_python_sign_equivalent_g_s: float amesim_center_flow_python_sign_error_g_s: float python_center_mass_flow_g_s: float + amesim_port_1_center_mass_derivative_g_s: float + amesim_port_2_center_mass_derivative_g_s: float + python_port_1_external_mass_flow_g_s: float + python_port_1_external_mass_flow_error_g_s: float + python_port_1_center_mass_derivative_g_s: float + python_port_1_center_mass_derivative_error_g_s: float + python_port_1_storage_mass_derivative_g_s: float + python_port_1_storage_mass_derivative_error_g_s: float + python_port_2_external_mass_flow_g_s: float + python_port_2_external_mass_flow_error_g_s: float + python_port_2_center_mass_derivative_g_s: float + python_port_2_center_mass_derivative_error_g_s: float + python_port_2_storage_mass_derivative_g_s: float + python_port_2_storage_mass_derivative_error_g_s: float python_amesim_state_darcy_center_mass_flow_g_s: float python_amesim_state_darcy_center_mass_flow_error_g_s: float python_amesim_state_pn2pipefr_center_mass_flow_g_s: float @@ -1719,6 +1737,10 @@ def _pnl0003_energy_diagnostic( amesim_p2 = amesim_value(f"p2@{line_alias}") + AMESIM_REFERENCE_PRESSURE_PA amesim_dm1 = amesim_value("dm2@pn_node3_8") amesim_dh1 = amesim_value("dh2@pn_node3_8") + python_node_dm1 = snapshot.p4_port3_remote_orifice_node_balance.port_1_mass_flow_g_s + python_node_dm3 = snapshot.p4_port3_remote_orifice_node_balance.port_3_mass_flow_g_s + python_node_dm2_sum = python_node_dm1 + python_node_dm3 + python_node_to_line_dm = -python_node_dm2_sum amesim_dm2 = amesim_value("dm3@pn_morifice_1") amesim_dh2 = amesim_value("dh3@pn_morifice_1") amesim_dmctr = amesim_value(f"dmctr@{line_alias}") @@ -1749,6 +1771,20 @@ def _pnl0003_energy_diagnostic( amesim_center_mass_flow_python_sign_kg_s = ( amesim_center_python_sign_equivalent_g_s * 1.0e-3 ) + amesim_port_1_center_mass_derivative_g_s = amesim_dmctr + amesim_port_2_center_mass_derivative_g_s = -amesim_dmctr + python_port_1_external_mass_flow_g_s = port_1_flow * 1.0e3 + python_port_1_center_mass_derivative_g_s = -center_flow * 1.0e3 + python_port_1_storage_mass_derivative_g_s = ( + python_port_1_external_mass_flow_g_s + + python_port_1_center_mass_derivative_g_s + ) + python_port_2_external_mass_flow_g_s = port_2_flow * 1.0e3 + python_port_2_center_mass_derivative_g_s = center_flow * 1.0e3 + python_port_2_storage_mass_derivative_g_s = ( + python_port_2_external_mass_flow_g_s + + python_port_2_center_mass_derivative_g_s + ) def current_darcy_center_flow_for_state( port_1_pressure_pa: float, @@ -2146,6 +2182,12 @@ def _pnl0003_energy_diagnostic( amesim_port_1_storage_enthalpy_sum_w=amesim_sdh1, amesim_port_2_storage_mass_derivative_g_s=amesim_sdm2_kg_s * 1.0e3, amesim_port_2_storage_enthalpy_sum_w=amesim_sdh2, + python_pn3_node_port_1_mass_flow_g_s=python_node_dm1, + python_pn3_node_port_3_mass_flow_g_s=python_node_dm3, + python_pn3_node_to_line_mass_flow_g_s=python_node_to_line_dm, + python_pn3_node_to_line_mass_flow_error_g_s=( + python_node_to_line_dm - amesim_dm1 + ), amesim_port_1_mass_estimate_g=amesim_mass_1 * 1.0e3, amesim_port_2_mass_estimate_g=amesim_mass_2 * 1.0e3, python_port_1_mass_g=line.state_1.m * 1.0e3, @@ -2176,6 +2218,46 @@ def _pnl0003_energy_diagnostic( python_center_mass_flow_g_s - amesim_center_python_sign_equivalent_g_s ), python_center_mass_flow_g_s=python_center_mass_flow_g_s, + amesim_port_1_center_mass_derivative_g_s=( + amesim_port_1_center_mass_derivative_g_s + ), + amesim_port_2_center_mass_derivative_g_s=( + amesim_port_2_center_mass_derivative_g_s + ), + python_port_1_external_mass_flow_g_s=python_port_1_external_mass_flow_g_s, + python_port_1_external_mass_flow_error_g_s=( + python_port_1_external_mass_flow_g_s - amesim_dm1 + ), + python_port_1_center_mass_derivative_g_s=( + python_port_1_center_mass_derivative_g_s + ), + python_port_1_center_mass_derivative_error_g_s=( + python_port_1_center_mass_derivative_g_s + - amesim_port_1_center_mass_derivative_g_s + ), + python_port_1_storage_mass_derivative_g_s=( + python_port_1_storage_mass_derivative_g_s + ), + python_port_1_storage_mass_derivative_error_g_s=( + python_port_1_storage_mass_derivative_g_s - amesim_sdm1_kg_s * 1.0e3 + ), + python_port_2_external_mass_flow_g_s=python_port_2_external_mass_flow_g_s, + python_port_2_external_mass_flow_error_g_s=( + python_port_2_external_mass_flow_g_s - amesim_dm2 + ), + python_port_2_center_mass_derivative_g_s=( + python_port_2_center_mass_derivative_g_s + ), + python_port_2_center_mass_derivative_error_g_s=( + python_port_2_center_mass_derivative_g_s + - amesim_port_2_center_mass_derivative_g_s + ), + python_port_2_storage_mass_derivative_g_s=( + python_port_2_storage_mass_derivative_g_s + ), + python_port_2_storage_mass_derivative_error_g_s=( + python_port_2_storage_mass_derivative_g_s - amesim_sdm2_kg_s * 1.0e3 + ), python_amesim_state_darcy_center_mass_flow_g_s=( amesim_state_darcy_center_flow * 1.0e3 ), @@ -2972,6 +3054,10 @@ def format_test_mql_pnvo_event_window_summary( f"amesim_sdh1={pnl0003_energy.amesim_port_1_storage_enthalpy_sum_w}, " f"amesim_sdm2={pnl0003_energy.amesim_port_2_storage_mass_derivative_g_s}, " f"amesim_sdh2={pnl0003_energy.amesim_port_2_storage_enthalpy_sum_w}, " + f"python_node_dm1={pnl0003_energy.python_pn3_node_port_1_mass_flow_g_s}, " + f"python_node_dm3={pnl0003_energy.python_pn3_node_port_3_mass_flow_g_s}, " + f"python_node_to_line_dm={pnl0003_energy.python_pn3_node_to_line_mass_flow_g_s}, " + f"python_node_to_line_dm_error={pnl0003_energy.python_pn3_node_to_line_mass_flow_error_g_s}, " f"amesim_m1={pnl0003_energy.amesim_port_1_mass_estimate_g}, " f"amesim_m2={pnl0003_energy.amesim_port_2_mass_estimate_g}, " f"python_m1={pnl0003_energy.python_port_1_mass_g}, " @@ -2986,6 +3072,20 @@ def format_test_mql_pnvo_event_window_summary( f"amesim_dmctr_py_sign={pnl0003_energy.amesim_center_flow_python_sign_equivalent_g_s}, " f"python_center_dm={pnl0003_energy.python_center_mass_flow_g_s}, " f"python_center_dm_error={pnl0003_energy.amesim_center_flow_python_sign_error_g_s}, " + f"amesim_sdm1_center={pnl0003_energy.amesim_port_1_center_mass_derivative_g_s}, " + f"amesim_sdm2_center={pnl0003_energy.amesim_port_2_center_mass_derivative_g_s}, " + f"python_sdm1_ext={pnl0003_energy.python_port_1_external_mass_flow_g_s}, " + f"python_sdm1_ext_error={pnl0003_energy.python_port_1_external_mass_flow_error_g_s}, " + f"python_sdm1_center={pnl0003_energy.python_port_1_center_mass_derivative_g_s}, " + f"python_sdm1_center_error={pnl0003_energy.python_port_1_center_mass_derivative_error_g_s}, " + f"python_sdm1={pnl0003_energy.python_port_1_storage_mass_derivative_g_s}, " + f"python_sdm1_error={pnl0003_energy.python_port_1_storage_mass_derivative_error_g_s}, " + f"python_sdm2_ext={pnl0003_energy.python_port_2_external_mass_flow_g_s}, " + f"python_sdm2_ext_error={pnl0003_energy.python_port_2_external_mass_flow_error_g_s}, " + f"python_sdm2_center={pnl0003_energy.python_port_2_center_mass_derivative_g_s}, " + f"python_sdm2_center_error={pnl0003_energy.python_port_2_center_mass_derivative_error_g_s}, " + f"python_sdm2={pnl0003_energy.python_port_2_storage_mass_derivative_g_s}, " + f"python_sdm2_error={pnl0003_energy.python_port_2_storage_mass_derivative_error_g_s}, " f"python_amesim_state_darcy_center_dm=" f"{pnl0003_energy.python_amesim_state_darcy_center_mass_flow_g_s}, " f"python_amesim_state_darcy_center_dm_error=" diff --git a/tests/test_run_test_mql_full_state_comparison.py b/tests/test_run_test_mql_full_state_comparison.py index e98d744..c7b8f90 100644 --- a/tests/test_run_test_mql_full_state_comparison.py +++ b/tests/test_run_test_mql_full_state_comparison.py @@ -380,6 +380,10 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): amesim_port_1_storage_enthalpy_sum_w=15908.7, amesim_port_2_storage_mass_derivative_g_s=-2.6, amesim_port_2_storage_enthalpy_sum_w=3028.0, + python_pn3_node_port_1_mass_flow_g_s=-333.0, + python_pn3_node_port_3_mass_flow_g_s=-119.9, + python_pn3_node_to_line_mass_flow_g_s=452.9, + python_pn3_node_to_line_mass_flow_error_g_s=461.4, amesim_port_1_mass_estimate_g=1.12, amesim_port_2_mass_estimate_g=1.05, python_port_1_mass_g=1.11, @@ -394,6 +398,20 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): amesim_center_flow_python_sign_equivalent_g_s=454.2, amesim_center_flow_python_sign_error_g_s=-0.2, python_center_mass_flow_g_s=454.0, + amesim_port_1_center_mass_derivative_g_s=-454.2, + amesim_port_2_center_mass_derivative_g_s=454.2, + python_port_1_external_mass_flow_g_s=337.0, + python_port_1_external_mass_flow_error_g_s=15.1, + python_port_1_center_mass_derivative_g_s=-454.0, + python_port_1_center_mass_derivative_error_g_s=0.2, + python_port_1_storage_mass_derivative_g_s=-117.0, + python_port_1_storage_mass_derivative_error_g_s=345.7, + python_port_2_external_mass_flow_g_s=-456.4, + python_port_2_external_mass_flow_error_g_s=0.4, + python_port_2_center_mass_derivative_g_s=454.0, + python_port_2_center_mass_derivative_error_g_s=-0.2, + python_port_2_storage_mass_derivative_g_s=-2.4, + python_port_2_storage_mass_derivative_error_g_s=0.2, python_amesim_state_darcy_center_mass_flow_g_s=453.5, python_amesim_state_darcy_center_mass_flow_error_g_s=-0.7, python_amesim_state_pn2pipefr_center_mass_flow_g_s=455.0, @@ -640,6 +658,10 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): self.assertIn("pnl0003_energy@pneumatic_87", summary) self.assertIn("amesim_sdm1=-462.7", summary) self.assertIn("amesim_sdh2=3028.0", summary) + self.assertIn("python_node_dm1=-333.0", summary) + self.assertIn("python_node_dm3=-119.9", summary) + self.assertIn("python_node_to_line_dm=452.9", summary) + self.assertIn("python_node_to_line_dm_error=461.4", summary) self.assertIn("amesim_m2=1.05", summary) self.assertIn("python_m2=1.04", summary) self.assertIn("python_m2_error=-0.01", summary) @@ -650,6 +672,20 @@ class RunTestMqlFullStateComparisonScriptTests(unittest.TestCase): self.assertIn("amesim_storage_dmgas_residual=4.7", summary) self.assertIn("amesim_dmctr_py_sign=454.2", summary) self.assertIn("python_center_dm=454.0", summary) + self.assertIn("amesim_sdm1_center=-454.2", summary) + self.assertIn("amesim_sdm2_center=454.2", summary) + self.assertIn("python_sdm1_ext=337.0", summary) + self.assertIn("python_sdm1_ext_error=15.1", summary) + self.assertIn("python_sdm1_center=-454.0", summary) + self.assertIn("python_sdm1_center_error=0.2", summary) + self.assertIn("python_sdm1=-117.0", summary) + self.assertIn("python_sdm1_error=345.7", summary) + self.assertIn("python_sdm2_ext=-456.4", summary) + self.assertIn("python_sdm2_ext_error=0.4", summary) + self.assertIn("python_sdm2_center=454.0", summary) + self.assertIn("python_sdm2_center_error=-0.2", summary) + self.assertIn("python_sdm2=-2.4", summary) + self.assertIn("python_sdm2_error=0.2", summary) self.assertIn("python_amesim_state_darcy_center_dm=453.5", summary) self.assertIn("python_amesim_state_darcy_center_dm_error=-0.7", summary) self.assertIn("python_amesim_state_pn2pipefr_center_dm=455.0", summary)