Exemplo n.º 1
0
    def get_value(self,
                  item,
                  attribute=None,
                  resolved=True,
                  subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """

        value = None
        if subgroup is None:
            nodes = self.get_nodes(item, attribute)
            if len(nodes) == 1:
                node = nodes[0]
                value = node.text
                if resolved:
                    value = self.get_resolved_value(value)
            elif not nodes:
                value = EnvBase.get_value(self, item, attribute, resolved)
        else:
            value = EnvBase.get_value(self,
                                      item,
                                      attribute=attribute,
                                      resolved=resolved,
                                      subgroup=subgroup)

        return value
Exemplo n.º 2
0
    def get_value(self,
                  item,
                  attribute=None,
                  resolved=True,
                  subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """

        value = None
        if subgroup is None:
            node = self.get_optional_child(item, attribute)
            if node is not None:
                value = self.text(node)
                if resolved:
                    value = self.get_resolved_value(value)
            else:
                value = EnvBase.get_value(self, item, attribute, resolved)
        else:
            value = EnvBase.get_value(self,
                                      item,
                                      attribute=attribute,
                                      resolved=resolved,
                                      subgroup=subgroup)

        return value
Exemplo n.º 3
0
    def get_value(
        self,
        vid,
        attribute=None,
        resolved=True,
        subgroup=None,
        max_mpitasks_per_node=None,
    ):  # pylint: disable=arguments-differ
        # Special variable NINST_MAX is used to determine the number of
        # drivers in multi-driver mode.
        if vid == "NINST_MAX":
            # in the nuopc driver there is only a single NINST value
            value = 1
            for comp in self._components:
                if comp != "CPL":
                    value = max(value, self.get_value("NINST_{}".format(comp)))
            return value

        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)

        if "NTASKS" in vid or "ROOTPE" in vid:
            if max_mpitasks_per_node is None:
                max_mpitasks_per_node = self.get_value("MAX_MPITASKS_PER_NODE")
            if value is not None and value < 0:
                value = -1 * value * max_mpitasks_per_node
        # in the nuopc driver there is only one NINST value
        # so that NINST_{comp} = NINST
        if "NINST_" in vid and value is None:
            value = self.get_value("NINST")
        return value
Exemplo n.º 4
0
    def get_value(self,
                  item,
                  attribute=None,
                  resolved=True,
                  subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """
        value = None
        if subgroup is None:
            node = self.get_optional_node(item, attribute)
            if node is not None:
                value = node.text
                if resolved:
                    value = self.get_resolved_value(value)
            else:
                value = EnvBase.get_value(self, item, attribute, resolved)
        else:
            job_node = self.get_optional_node("job", {"name": subgroup})
            if job_node is not None:
                node = self.get_optional_node("entry", {"id": item},
                                              root=job_node)
                if node is not None:
                    value = node.get("value")
                    if resolved:
                        value = self.get_resolved_value(value)

                    # Return value as right type if we were able to fully resolve
                    # otherwise, we have to leave as string.
                    if "$" not in value:
                        type_str = self._get_type_info(node)
                        value = convert_to_type(value, type_str, item)
        return value
Exemplo n.º 5
0
 def get_value(self, vid, attribute=None, resolved=True, subgroup=None):
     value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)
     if value is None:
         tnode = self.get_optional_child("test")
         if tnode is not None:
             value = self.get_element_text(vid, root=tnode)
     return value
Exemplo n.º 6
0
 def get_value(self, vid, attribute=None, resolved=True, subgroup=None):
     value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)
     if value is None:
         tnode = self.get_optional_child("test")
         if tnode is not None:
             value = self.get_element_text(vid, root=tnode)
     return value
Exemplo n.º 7
0
    def get_value(self, item, attribute=None, resolved=True, subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """
        value = None
        if subgroup is None:
            node = self.get_optional_node(item, attribute)
            if node is not None:
                value = node.text
                if resolved:
                    value = self.get_resolved_value(value)
            else:
                value = EnvBase.get_value(self,item,attribute,resolved)
        else:
            job_node = self.get_optional_node("job", {"name":subgroup})
            if job_node is not None:
                node = self.get_optional_node("entry", {"id":item}, root=job_node)
                if node is not None:
                    value = node.get("value")
                    if resolved:
                        value = self.get_resolved_value(value)

                    # Return value as right type if we were able to fully resolve
                    # otherwise, we have to leave as string.
                    if "$" not in value:
                        type_str = self._get_type_info(node)
                        value = convert_to_type(value, type_str, item)
        return value
Exemplo n.º 8
0
    def get_value(self, item, attribute=None, resolved=True, subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """

        value = None
        if subgroup is None:
            node = self.get_optional_child(item, attribute)
            if node is not None:
                value = self.text(node)
                if resolved:
                    value = self.get_resolved_value(value)
            else:
                value = EnvBase.get_value(self,item,attribute,resolved)
        else:
            value = EnvBase.get_value(self, item, attribute=attribute, resolved=resolved, subgroup=subgroup)

        return value
Exemplo n.º 9
0
 def get_value(self, vid, attribute={}, resolved=True, subgroup=None):
     value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)
     if "NTASKS" in vid and value < 0:
         value = -1*value*self.get_value("PES_PER_NODE")
     if "NTHRDS" in vid and value < 0:
         value = -1*value*self.get_value("PES_PER_NODE")
     if "ROOTPE" in vid and value < 0:
         value = -1*value*self.get_value("PES_PER_NODE")
     return value
Exemplo n.º 10
0
    def get_value(self, vid, attribute=None, resolved=True, subgroup=None, pes_per_node=None): # pylint: disable=arguments-differ
        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)

        if "NTASKS" in vid or "ROOTPE" in vid:
            if pes_per_node is None:
                pes_per_node = self.get_value("PES_PER_NODE")
            if value is not None and value < 0:
                value = -1*value*pes_per_node

        return value
Exemplo n.º 11
0
    def get_value(self, item, attribute=None, resolved=True, subgroup="case.run"):
        """
        Must default subgroup to something in order to provide single return value
        """

        value = None
        if subgroup is None:
            nodes = self.get_nodes(item, attribute)
            if len(nodes) == 1:
                node = nodes[0]
                value = node.text
                if resolved:
                    value = self.get_resolved_value(value)
            elif not nodes:
                value = EnvBase.get_value(self,item,attribute,resolved)
        else:
            value = EnvBase.get_value(self, item, attribute=attribute, resolved=resolved, subgroup=subgroup)

        return value
Exemplo n.º 12
0
    def get_value(self, vid, attribute=None, resolved=True, subgroup=None, pes_per_node=None): # pylint: disable=arguments-differ
        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)
        if "NTASKS" in vid or "ROOTPE" in vid and pes_per_node is None:
            pes_per_node = self.get_value("PES_PER_NODE")

            if "NTASKS" in vid and value < 0:
                value = -1*value*pes_per_node
            if "ROOTPE" in vid and value < 0:
                value = -1*value*pes_per_node
        return value
Exemplo n.º 13
0
    def get_value(self, vid, attribute=None, resolved=True, subgroup=None):
        """
        Get a value for entry with id attribute vid.
        or from the values field if the attribute argument is provided
        and matches.   Special case for pio variables when PIO_ASYNC_INTERFACE is True.
        """
        if self._pio_async_interface:
            vid, comp, iscompvar = self.check_if_comp_var(vid, attribute)
            if vid.startswith("PIO") and iscompvar:
                if comp and comp != "CPL":
                    logger.warning("Only CPL settings are used for PIO in async mode")
                subgroup = "CPL"

        return EnvBase.get_value(self, vid, attribute, resolved, subgroup)
Exemplo n.º 14
0
    def get_value(self, vid, attribute=None, resolved=True, subgroup=None, MAX_MPITASKS_PER_NODE=None): # pylint: disable=arguments-differ
        # Special variable NINST_MAX is used to determine the number of
        # drivers in multi-driver mode.
        if vid == "NINST_MAX":
            value = 1
            for comp in self._components:
                if comp != "CPL":
                    value = max(value, self.get_value("NINST_{}".format(comp)))
            return value

        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)

        if "NTASKS" in vid or "ROOTPE" in vid:
            if MAX_MPITASKS_PER_NODE is None:
                MAX_MPITASKS_PER_NODE = self.get_value("MAX_MPITASKS_PER_NODE")
            if value is not None and value < 0:
                value = -1*value*MAX_MPITASKS_PER_NODE

        return value
Exemplo n.º 15
0
    def get_value(self, vid, attribute=None, resolved=True, subgroup=None, max_mpitasks_per_node=None): # pylint: disable=arguments-differ
        # Special variable NINST_MAX is used to determine the number of
        # drivers in multi-driver mode.
        if vid == "NINST_MAX":
            # in the nuopc driver there is only a single NINST value
            value = 1
            for comp in self._components:
                if comp != "CPL":
                    value = max(value, self.get_value("NINST_{}".format(comp)))
            return value

        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)

        if "NTASKS" in vid or "ROOTPE" in vid:
            if max_mpitasks_per_node is None:
                max_mpitasks_per_node = self.get_value("MAX_MPITASKS_PER_NODE")
            if value is not None and value < 0:
                value = -1*value*max_mpitasks_per_node
        # in the nuopc driver there is only one NINST value
        # so that NINST_{comp} = NINST
        if "NINST_" in vid and value is None:
            value = self.get_value("NINST")
        return value
Exemplo n.º 16
0
    def get_value(self,
                  vid,
                  attribute=None,
                  resolved=True,
                  subgroup=None,
                  MAX_MPITASKS_PER_NODE=None):  # pylint: disable=arguments-differ
        # Special variable NINST_MAX is used to determine the number of
        # drivers in multi-driver mode.
        if vid == "NINST_MAX":
            value = 1
            for comp in self._components:
                value = max(value, self.get_value("NINST_{}".format(comp)))
            return value

        value = EnvBase.get_value(self, vid, attribute, resolved, subgroup)

        if "NTASKS" in vid or "ROOTPE" in vid:
            if MAX_MPITASKS_PER_NODE is None:
                MAX_MPITASKS_PER_NODE = self.get_value("MAX_MPITASKS_PER_NODE")
            if value is not None and value < 0:
                value = -1 * value * MAX_MPITASKS_PER_NODE

        return value