gaspype/tests/test_operations.py

153 lines
3.7 KiB
Python
Raw Normal View History

2025-05-09 11:59:20 +00:00
import gaspype as gp
def test_op_same_fluid_systems():
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'O2': 1}, fl1.fs)
fl_ret = fl1 + fl2
assert isinstance(fl_ret, gp.fluid)
assert fl1.fs is fl2.fs
assert fl_ret.fs is fl1.fs
fl_ret = fl1 - fl2
assert fl1.fs is fl2.fs
assert fl_ret.fs is fl1.fs
def test_op_different_fluid_systems():
# no fs subset -> new fs
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'NH3': 1, 'O2': 2})
fl_ret = fl1 + fl2
assert isinstance(fl_ret, gp.fluid)
assert fl1.fs is not fl_ret.fs
assert fl2.fs is not fl_ret.fs
# fl1 is a subset of fl2 -> fl_ret uses fs of fl2
fl1 = gp.fluid({'N2': 5, 'O2': 1})
fl2 = gp.fluid({'N2': 11, 'O2': 12, 'NH3': 20})
fl_ret = fl1 + fl2
assert fl1.fs is not fl_ret.fs
assert fl2.fs is fl_ret.fs
fl_ret = fl2 - fl1
assert fl1.fs is not fl_ret.fs
assert fl2.fs is fl_ret.fs
assert isinstance(fl_ret, gp.fluid)
assert fl_ret.total == 37
def test_op_different_fluid_systems_elements():
# no fs subset -> new fs
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'NH3': 1, 'O2': 2})
el_ret = gp.elements(fl1) + gp.elements(fl2)
assert fl1.fs is not el_ret.fs
assert fl2.fs is not el_ret.fs
el_ret = gp.elements(fl1) - gp.elements(fl2)
assert fl1.fs is not el_ret.fs
assert fl2.fs is not el_ret.fs
# fl1 is a subset of fl2 -> fl_ret uses fs of fl2
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'N2': 1, 'O2': 1, 'NH3': 1})
el_ret = gp.elements(fl1) + gp.elements(fl2)
assert fl1.fs is not el_ret.fs
assert fl2.fs is el_ret.fs
el_ret = gp.elements(fl2) - gp.elements(fl1)
assert fl1.fs is not el_ret.fs
assert fl2.fs is el_ret.fs
def test_op_different_fluid_systems_mixed():
# no fs subset -> new fs
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'NH3': 1, 'O2': 2})
el_ret = fl1 + gp.elements(fl2)
assert isinstance(el_ret, gp.elements)
assert fl1.fs is not el_ret.fs
assert fl2.fs is not el_ret.fs
el_ret = gp.elements(fl1) + fl2
assert fl1.fs is not el_ret.fs
assert fl2.fs is not el_ret.fs
assert isinstance(el_ret, gp.elements)
assert {'H', 'O', 'N'} == el_ret.get_elemental_composition().keys()
# fl1 is a subset of fl2 -> fl_ret uses fs of fl2
fl1 = gp.fluid({'N2': 1, 'O2': 1})
fl2 = gp.fluid({'N2': 1, 'O2': 1, 'NH3': 1})
el_ret = gp.elements(fl1) + fl2
assert fl1.fs is not el_ret.fs
assert fl2.fs is el_ret.fs
el_ret = fl2 - gp.elements(fl1)
assert fl1.fs is not el_ret.fs
assert fl2.fs is el_ret.fs
def test_op_elements_same_fluid_systems():
fs = gp.fluid_system('N2, O2')
el1 = gp.elements({'N': 1, 'O': 1}, fs)
el2 = gp.elements({'O': 1}, fs)
el_ret = el1 + el2
assert isinstance(el_ret, gp.elements)
assert el1.fs is el2.fs
assert el_ret.fs is el1.fs
el_ret = el1 - el2
assert el1.fs is el2.fs
assert el_ret.fs is el1.fs
def test_op_elements_different_fluid_systems():
fs1 = gp.fluid_system('N2, O2')
fs2 = gp.fluid_system('O2')
el1 = gp.elements({'N': 1, 'O': 1}, fs1)
el2 = gp.elements({'O': 1}, fs2)
el_ret = el1 + el2
assert isinstance(el_ret, gp.elements)
assert el1.fs is not el2.fs
assert el2.fs is not el_ret.fs
assert el1.fs is el_ret.fs
el_ret = el1 - el2
assert el1.fs is not el2.fs
assert el2.fs is not el_ret.fs
assert el1.fs is el_ret.fs
def test_op_tt():
fl = gp.fluid({'H2O': 1, 'H2': 2})
el = gp.elements({'N': 1, 'Cl': 2})
assert isinstance(fl + el, gp.elements)
assert 'H' in (fl + el).elements and \
'Cl' in (fl + el).elements and \
'O' in (fl + el).elements