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")
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"]
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()
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()
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()
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)
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
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
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)
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
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)
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")
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}))
def build(self): super(_Parameters, self).build() self.p1 = Phase() self.c1 = Component()