Checker: Add modules impact and add IC and BC study checker.

This commit is contained in:
Pierre-Antoine Rouby committed 2024-04-24 16:32:52 +02:00
1 parent 6dc96b86b4
commit 8e82772cfc
5 files changed
+205 -16

No files matched your search

+69 -1
View File
@@ -23,7 +23,20 @@ from enum import Flag, auto
logger = logging.getLogger()
class Modules(Flag):
class IterableFlag(Flag):
def __iter__(self):
all = filter(
lambda v: v in self,
type(self).values()
)
return all
@classmethod
def values(cls):
raise Exception("Not implemented yet")
class Modules(IterableFlag):
NONE = 0
# General
@@ -48,6 +61,24 @@ class Modules(Flag):
# Display
WINDOW_LIST = auto()
@classmethod
def values(cls):
return [
cls.STUDY, cls.CONFIG,
cls.NETWORK,
cls.GEOMETRY,
cls.BOUNDARY_CONDITION,
cls.LATERAL_CONTRIBUTION,
cls.FRICTION,
cls.INITIAL_CONDITION,
cls.HYDRAULIC_STRUCTURES,
cls.RESERVOIR,
cls.SEDIMENT_LAYER,
cls.ADDITIONAL_FILES,
cls.RESULTS,
cls.WINDOW_LIST,
]
@classmethod
def all(cls):
return ~cls.NONE
@@ -93,3 +124,40 @@ class Modules(Flag):
cls.RESERVOIR: "Reservoir",
cls.SEDIMENT_LAYER: "Sediment layer",
}
def impact(self):
res = Modules(0)
for mod in self:
if mod in _impact:
for i in _impact[mod]:
res |= i
return res
def impact_set(self):
res = []
for mod in self:
if mod in _impact:
res += _impact[mod]
return set(res)
_impact = {
Modules.NETWORK: [
Modules.GEOMETRY, Modules.BOUNDARY_CONDITION,
Modules.LATERAL_CONTRIBUTION, Modules.FRICTION,
Modules.RESERVOIR, Modules.SEDIMENT_LAYER,
],
Modules.GEOMETRY: [
Modules.LATERAL_CONTRIBUTION, Modules.FRICTION,
Modules.INITIAL_CONDITION, Modules.SEDIMENT_LAYER,
],
Modules.BOUNDARY_CONDITION: [
Modules.SEDIMENT_LAYER
],
Modules.LATERAL_CONTRIBUTION: [],
Modules.FRICTION: [],
Modules.INITIAL_CONDITION: [],
Modules.HYDRAULIC_STRUCTURES: [],
Modules.RESERVOIR: [],
Modules.SEDIMENT_LAYER: [],
}