Skip to content

Commit 7ea59eb

Browse files
authored
chore: solution failure if asv is triggered when no asv chosen (#1661)
1 parent dfb9090 commit 7ea59eb

1 file changed

Lines changed: 32 additions & 1 deletion

File tree

src/libecalc/process/process_solver/anti_surge/anti_surge_strategy.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from abc import ABC, abstractmethod
22
from collections.abc import Sequence
3+
from dataclasses import dataclass
34
from enum import StrEnum
45

56
from libecalc.process.fluid_stream.fluid_stream import FluidStream
7+
from libecalc.process.process_pipeline.process_unit import ProcessUnitId
68
from libecalc.process.process_solver.configuration import Configuration, RecirculationConfiguration
7-
from libecalc.process.process_solver.solver import Solution
9+
from libecalc.process.process_solver.solver import Solution, SolverFailure
810

911

1012
class AntiSurgeType(StrEnum):
@@ -41,3 +43,32 @@ def reset(self) -> None:
4143
from a previous evaluation would corrupt the result (e.g. upstream-choke search).
4244
"""
4345
...
46+
47+
48+
@dataclass
49+
class NoAntiSurgeControlFailure(SolverFailure):
50+
source_id: ProcessUnitId
51+
reason: str = ""
52+
53+
54+
class NoAntiSurgeStrategy(AntiSurgeStrategy):
55+
"""
56+
TODO: Should this raise error if attempted to be used, because that would mean that
57+
we need Anti-Surge, but we have no way of handling it.
58+
"""
59+
60+
def __init__(
61+
self,
62+
source_id: ProcessUnitId,
63+
):
64+
self._source_id = source_id
65+
66+
def reset(self) -> None: ...
67+
68+
def apply(self, inlet_stream: FluidStream) -> Solution[Sequence[Configuration[RecirculationConfiguration]]]:
69+
return Solution(
70+
configuration=[],
71+
failure=NoAntiSurgeControlFailure(
72+
source_id=self._source_id, reason="No Anti-Surge protection added when apparently needed."
73+
),
74+
)

0 commit comments

Comments
 (0)