Exemplo n.º 1
0
def test_phase_list_exists():
    m = ConcreteModel()

    m.phase = Phase(default={"_phase_list_exists": True})
    m.phase2 = Phase(default={"_phase_list_exists": True})

    assert not hasattr(m, "phase_list")
Exemplo n.º 2
0
def test_populate_phase_list():
    m = ConcreteModel()

    m.phase = Phase()
    m.phase2 = Phase()

    assert isinstance(m.phase_list, Set)

    for p in m.phase_list:
        assert p in ["phase", "phase2"]
Exemplo n.º 3
0
def test_is_phase_old_style_vapor():
    m = ConcreteModel()

    m.Vap = Phase()

    assert not m.Vap.is_liquid_phase()
    assert not m.Vap.is_solid_phase()
    assert m.Vap.is_vapor_phase()
Exemplo n.º 4
0
def test_is_phase_generic():
    m = ConcreteModel()

    m.phase = Phase()

    assert not m.phase.is_liquid_phase()
    assert not m.phase.is_solid_phase()
    assert not m.phase.is_vapor_phase()
Exemplo n.º 5
0
def test_is_phase_old_style_solid():
    m = ConcreteModel()

    m.Sol = Phase()

    assert not m.Sol.is_liquid_phase()
    assert m.Sol.is_solid_phase()
    assert not m.Sol.is_vapor_phase()
    assert not m.Sol.is_aqueous_phase()
Exemplo n.º 6
0
    def test_is_phase_valid_liquid(self, m):
        m.Liq = LiquidPhase()
        m.Sol = SolidPhase()
        m.Vap = VaporPhase()
        m.Phase = Phase()

        assert m.comp._is_phase_valid(m.Liq)
        assert not m.comp._is_phase_valid(m.Sol)
        assert not m.comp._is_phase_valid(m.Vap)
        assert not m.comp._is_phase_valid(m.Phase)
Exemplo n.º 7
0
def test_config():
    m = ConcreteModel()

    m.phase = Phase()

    for k, v in m.phase.config.items():
        if k == "_phase_list_exists":
            assert not v
        elif k == "parameter_data":
            assert v == {}
        else:
            assert v is None
Exemplo n.º 8
0
def test_get_phase_component_set():
    m = ConcreteModel()
    m.p = ParameterBlock()

    m.meta_object = PropertyClassMetadata()
    m.meta_object.add_default_units({
        'time': pyunits.s,
        'length': pyunits.m,
        'mass': pyunits.kg,
        'amount': pyunits.mol,
        'temperature': pyunits.K
    })

    def get_metadata(self):
        return m.meta_object

    m.p.get_metadata = types.MethodType(get_metadata, m.p)

    m.p.p1 = Phase()
    m.p.p2 = Phase()
    m.p.p3 = Phase()
    m.p.a = Component()
    m.p.b = Component()
    m.p.c = Component()

    pc_set = m.p.get_phase_component_set()

    assert isinstance(m.p._phase_component_set, Set)
    assert len(m.p._phase_component_set) == 9
    for v in m.p._phase_component_set:
        assert v[0] in m.p.phase_list
        assert v[1] in m.p.component_list

    assert pc_set is m.p._phase_component_set

    # Check that method returns existing component
    # Delete phase list so that build will fail to make sure it isn't rebuilding
    m.p.del_component(m.p.phase_list)

    assert m.p.get_phase_component_set() is m.p._phase_component_set
Exemplo n.º 9
0
    def test_is_phase_valid_liquid(self, m):
        m.comp3 = Component(
            default={"valid_phase_types": PhaseType.liquidPhase})

        m.Liq = LiquidPhase()
        m.Sol = SolidPhase()
        m.Vap = VaporPhase()
        m.Phase = Phase()

        assert m.comp3._is_phase_valid(m.Liq)
        assert not m.comp3._is_phase_valid(m.Sol)
        assert not m.comp3._is_phase_valid(m.Vap)
        assert not m.comp3._is_phase_valid(m.Phase)
Exemplo n.º 10
0
def test_get_phase_component_set_subset():
    m = ConcreteModel()
    m.p = ParameterBlock()

    m.meta_object = PropertyClassMetadata()
    m.meta_object.add_default_units({
        'time': pyunits.s,
        'length': pyunits.m,
        'mass': pyunits.kg,
        'amount': pyunits.mol,
        'temperature': pyunits.K
    })

    def get_metadata(self):
        return m.meta_object

    m.p.get_metadata = types.MethodType(get_metadata, m.p)

    m.p.p1 = Phase()
    m.p.p2 = Phase(default={"component_list": ["a", "b"]})
    m.p.p3 = Phase(default={"component_list": ["c"]})
    m.p.a = Component()
    m.p.b = Component()
    m.p.c = Component()

    phase_comp = {"p1": ["a", "b", "c"], "p2": ["a", "b"], "p3": ["c"]}

    pc_set = m.p.get_phase_component_set()

    assert isinstance(m.p._phase_component_set, Set)
    assert len(m.p._phase_component_set) == 6
    for v in m.p._phase_component_set:
        assert v[0] in phase_comp.keys()
        assert v[1] in phase_comp[v[0]]

    assert pc_set is m.p._phase_component_set
Exemplo n.º 11
0
    def test_is_phase_valid_liquid(self, m):
        m.comp3 = Apparent(default={
            "valid_phase_types": PhaseType.liquidPhase,
            "dissociation_species": {"comp": 1},
            "_electrolyte": True})

        m.Liq = LiquidPhase()
        m.Sol = SolidPhase()
        m.Vap = VaporPhase()
        m.Aqu = AqueousPhase()
        m.Phase = Phase()

        assert m.comp3._is_phase_valid(m.Liq)
        assert not m.comp3._is_phase_valid(m.Sol)
        assert not m.comp3._is_phase_valid(m.Vap)
        assert not m.comp3._is_phase_valid(m.Aqu)
        assert not m.comp3._is_phase_valid(m.Phase)
Exemplo n.º 12
0
def test_get_phase():
    m = ConcreteModel()
    m.p = ParameterBlock()

    with pytest.raises(AttributeError):
        m.p.get_phase("foo")

    m.p.phase = Phase()

    assert m.p.get_phase("phase") is m.p.phase

    m.p.a = object()

    with pytest.raises(
            PropertyPackageError,
            match="p get_phase found an attribute a, but it does not "
            "appear to be an instance of a Phase object."):
        m.p.get_phase("a")
Exemplo n.º 13
0
    def _make_phase_objects(self):
        _log.warning("DEPRECATED: {} appears to be an old-style property "
                     "package. It will be automatically converted to a "
                     "new-style package, however users are strongly encouraged"
                     " to convert their property packages to use phase and "
                     "component objects."
                     .format(self.name))
        for p in self.phase_list:
            if hasattr(self, p):
                # An object with this name already exists, raise exception
                raise PropertyPackageError(
                    "{} could not add Phase object {} - an object with "
                    "that name already exists.".format(self.name, p))

            try:
                pc_list = self.phase_comp[p]
            except AttributeError:
                pc_list = None
            self.add_component(str(p), Phase(
                default={"component_list": pc_list,
                         "_phase_list_exists": True}))
Exemplo n.º 14
0
    def build(self):
        super(_Parameters, self).build()

        self.p1 = Phase()
        self.c1 = Component()