Coverage for backend/idaes_service/solver/solver.py: 93%
25 statements
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
« prev ^ index » next coverage.py v7.10.7, created at 2025-11-06 23:27 +0000
1from typing import Optional
2from pydantic import BaseModel
3from common.models.idaes import FlowsheetSchema
4from common.models.idaes.flowsheet_schema import SolvedFlowsheetSchema
5from common.models.idaes.payloads.solve_request_schema import IdaesSolveRequestPayload
6from .flowsheet_manager import FlowsheetManager
9class SolveModelResult(BaseModel):
10 input_flowsheet: FlowsheetSchema
11 output_flowsheet: SolvedFlowsheetSchema
12 solve_index: Optional[int] = None
13 scenario_id: Optional[int] = None
14 task_id: int
15 timing: dict
17def solve_model(solve_request: IdaesSolveRequestPayload) -> SolveModelResult:
18 """Solves the model and returns the results"""
19 flowsheet = FlowsheetManager(solve_request.flowsheet)
20 #print(solve_request.flowsheet.model_dump_json())
21 flowsheet.load()
22 flowsheet.initialise()
23 flowsheet.report_statistics()
24 if solve_request.perform_diagnostics: 24 ↛ 25line 24 didn't jump to line 25 because the condition on line 24 was never true
25 flowsheet.diagnose_problems()
26 flowsheet.check_model_valid()
27 flowsheet.solve()
28 flowsheet.optimize()
29 result = flowsheet.serialise()
31 return SolveModelResult(
32 input_flowsheet=solve_request.flowsheet,
33 output_flowsheet=result,
34 solve_index=solve_request.solve_index,
35 scenario_id=solve_request.scenario_id,
36 task_id=solve_request.task_id,
37 timing=flowsheet.timing.close()
38 )