153 lines
3.7 KiB
Python
153 lines
3.7 KiB
Python
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
|