ieeh-tu-dresden / power-system-data-model

A data model for describing power systems
BSD 3-Clause "New" or "Revised" License
6 stars 0 forks source link

feat: validate topology case #123

Closed SebastianDD closed 2 months ago

SebastianDD commented 3 months ago

add validation of topology case (by means of the element names)

SebastianDD commented 3 months ago
def is_valid_topology(self, topology: Topology) -> bool:
        logger.info("Verifying topology case ...")
        if topology.meta != self.meta:
            logger.error("Metadata does not match.")
            return False

        if not self._is_proper_elements(topology):
            return False

        logger.info("Verifying topology case was successful.")
        return True

    def _is_proper_elements(self, topology: Topology) -> bool:
        topology_elements = topology.loads + topology.transformers + topology.nodes + topology.branches + topology.external_grids
        topology_element_names = [e.name for e in topology_elements]
        for e in self.elements:
            if e.name not in topology_element_names:
                logger.error("Element {element_name} is not in topology.", element_name=e.name)
                return False

        return True