Modules.py 1.9 KB
Newer Older
# Modules.py -- Pamhyr
# Copyright (C) 2024  INRAE
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.

# -*- coding: utf-8 -*-

import logging

from enum import Flag, auto

logger = logging.getLogger()


class Modules(Flag):
    NONE = 0

    # Modelling
    NETWORK = auto()
    GEOMETRY = auto()
    BOUNDARY_CONDITION = auto()
    LATERAL_CONTRIBUTION = auto()
    FRICTION = auto()
    INITIAL_CONDITION = auto()
    HYDRAULIC_STRUCTURES = auto()
    RESERVOIR = auto()
    SEDIMENT_LAYER = auto()

    # Results
    RESULTS = auto()

    # Display
    WINDOW_LIST = auto()

    @classmethod
    def all(cls):
        return ~cls.NONE

    @classmethod
    def modelling(cls):
        return (
            cls.NETWORK
            | cls.GEOMETRY
            | cls.BOUNDARY_CONDITION
            | cls.LATERAL_CONTRIBUTION
            | cls.FRICTION
            | cls.INITIAL_CONDITION
            | cls.HYDRAULIC_STRUCTURES
            | cls.RESERVOIR
            | cls.SEDIMENT_LAYER
        )

    @classmethod
    def modelling_list(cls):
        return [
            cls.NETWORK,
            cls.GEOMETRY,
            cls.BOUNDARY_CONDITION,
            cls.LATERAL_CONTRIBUTION,
            cls.FRICTION,
            cls.INITIAL_CONDITION,
            cls.HYDRAULIC_STRUCTURES,
            cls.RESERVOIR,
            cls.SEDIMENT_LAYER,
        ]