Coverage for backend/common/models/idaes/flowsheet_schema.py: 97%
31 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, Literal
2from pydantic import BaseModel, Field
3from common.models.idaes import UnitModelSchema, ArcSchema
4from common.models.idaes.unit_model_schema import SolvedPropertyValueSchema
5from common.models.idaes.scenario_schema import OptimizationSchema
7class PropertyPackageType(BaseModel):
8 id: int
9 type: str
10 compounds: list[str]
11 phases: list[str]
13def default_time_set():
14 return list([0])
16class FlowsheetSchema(BaseModel):
17 """Represents the schema required on a JSON object to define a flowsheet in IDAES."""
18 id: int
19 name: str = Field(default="")
20 description: str = Field(default="")
21 dynamic: bool # If the flowsheet is dynamic or steady state
22 is_rating_mode: bool = False # If the flowsheet is in rating mode
23 time_set: Optional[list[float]] = Field(default_factory=lambda: default_time_set()) # Time set to use in idaes.
24 property_packages: list[PropertyPackageType] # Property packages are not required in return type
25 unit_models: list[UnitModelSchema]
26 arcs: list[ArcSchema]
27 machineLearningBlock: Optional[list[dict]] = None
28 expressions: Optional[list[dict]] = None
29 optimizations: Optional[list[OptimizationSchema]] = None # Convert to list[ScenarioSchema]
30 disable_initialization: bool = False # If the flowsheet should not be initialised
31 solver_option: Optional[str] = "ipopt"
34class SolvedFlowsheetSchema(BaseModel):
35 id: int
36 properties: list[SolvedPropertyValueSchema]
37 initial_values: dict[str, dict]