增加可选性能埋点并完成物性效率评估

This commit is contained in:
ljz committed 2026-08-16 17:46:04 +08:00
1 parent 4e0b9fd8cc
commit 57b459bc72
21 files changed
+2029 -179

No files matched your search

+2
View File
@@ -14,6 +14,7 @@ from app.simulation.components.amesim.flow.pipes import (
)
from app.simulation.core.equations import EquationResidual
from app.simulation.core.ports import PortState, VariableRole
from app.simulation.performance import profile_phase
from app.simulation.systems.network import SimulationNetwork
@@ -1286,6 +1287,7 @@ class PressureFlowSolver:
),
}
@profile_phase("simulation.pressure_flow", minimum_mode="audit")
def solve(
self,
*,
@@ -3,6 +3,7 @@ from __future__ import annotations
from dataclasses import dataclass
from math import isfinite
from app.simulation.performance import profile_phase
from app.simulation.systems.network import Endpoint, SimulationNetwork
@@ -36,6 +37,7 @@ class PneumaticVolumeResolver:
result[second] = first
return result
@profile_phase("simulation.pneumatic_volume", minimum_mode="audit")
def solve(self) -> PneumaticVolumeDiagnostics:
for component in self.network.components.values():
for definition in component.active_port_definitions:
+2
View File
@@ -4,6 +4,7 @@ from dataclasses import dataclass
from math import isfinite
from typing import Protocol
from app.simulation.performance import profile_phase
from app.simulation.systems.network import Endpoint, SimulationNetwork
@@ -47,6 +48,7 @@ class SignalResolver:
]
self.last_diagnostics: SignalSolveDiagnostics | None = None
@profile_phase("simulation.signal", minimum_mode="audit")
def solve(self, time: float) -> SignalSolveDiagnostics:
for component in self.network.components.values():
signal_output_values = getattr(component, "signal_output_values", None)
+2
View File
@@ -1,6 +1,7 @@
from __future__ import annotations
from app.simulation.core.errors import RecoverableTrialStateError
from app.simulation.performance import profile_phase
import math
from dataclasses import dataclass
@@ -1018,6 +1019,7 @@ def _integrate_scipy_stepwise(
)
@profile_phase("simulation.integration")
def integrate_ode(
rhs: Callable[[float, list[float]], list[float]],
initial_state: list[float],
+23 -7
View File
@@ -3,6 +3,7 @@ from __future__ import annotations
from dataclasses import dataclass
from app.simulation.core.base import DynamicComponent
from app.simulation.performance import profile_phase
from app.simulation.systems.network import Endpoint, SimulationNetwork
@@ -83,14 +84,33 @@ class StreamResolver:
)
return values
@profile_phase("simulation.refresh", minimum_mode="audit")
def _refresh_dynamic_components(
self,
components: list[DynamicComponent],
) -> None:
for component in components:
component.refresh_thermodynamic_ports()
@profile_phase("simulation.refresh", minimum_mode="audit")
def _refresh_stream_components(
self,
connected: dict[str, dict[str, float]],
) -> None:
for component in self.network.components.values():
if isinstance(component, DynamicComponent):
component.refresh_thermodynamic_ports()
else:
component.update_stream_outflows(connected[component.name])
@profile_phase("simulation.stream", minimum_mode="audit")
def solve(self) -> tuple[StreamSolveDiagnostics, dict[str, dict[str, float]]]:
dynamic_components = [
component
for component in self.network.components.values()
if isinstance(component, DynamicComponent)
]
for component in dynamic_components:
component.refresh_thermodynamic_ports()
self._refresh_dynamic_components(dynamic_components)
max_delta = 0.0
for iteration in range(1, self.max_iterations + 1):
@@ -100,11 +120,7 @@ class StreamResolver:
for port_name, port in component.ports.items()
}
connected = self.connected_enthalpies()
for component in self.network.components.values():
if isinstance(component, DynamicComponent):
component.refresh_thermodynamic_ports()
else:
component.update_stream_outflows(connected[component.name])
self._refresh_stream_components(connected)
deltas = [
abs(port.h_outflow - previous[(component.name, port_name)])