Skip to content

Commit 64e31bc

Browse files
committed
allow different basis for reactions; better error msg for excess streams
1 parent 83bf2a5 commit 64e31bc

2 files changed

Lines changed: 20 additions & 7 deletions

File tree

thermosteam/network.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ def show(self):
235235
# %% Utilities for docking
236236

237237
def n_missing(ub, N):
238-
if ub < N: raise RuntimeError(f"size exceeds {ub}")
238+
if ub < N: raise RuntimeError(f"at most {ub} streams expected; {N} given")
239239
return ub - N
240240

241241
DOCKING_WARNINGS = True

thermosteam/reaction/_reaction.py

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,7 +1282,7 @@ class ReactionSet:
12821282
__call__ = Reaction.__call__
12831283
conversion = Reaction.conversion
12841284

1285-
def __init__(self, reactions):
1285+
def __init__(self, reactions, basis=None):
12861286
if not reactions: raise ValueError('no reactions passed')
12871287
phases_set = set([i.phases for i in reactions])
12881288
if len(phases_set) > 1:
@@ -1291,9 +1291,15 @@ def __init__(self, reactions):
12911291
try: chemicals, = {i.chemicals for i in reactions}
12921292
except: raise ValueError('all reactions must have the same chemicals')
12931293
self._chemicals = chemicals
1294-
basis = {i._basis for i in reactions}
1295-
try: self._basis, = basis
1296-
except: raise ValueError('all reactions must have the same basis')
1294+
if basis is None:
1295+
basis = {i._basis for i in reactions}
1296+
try: self._basis, = basis
1297+
except: raise ValueError('all reactions must have the same basis')
1298+
elif basis in ('mol', 'wt'):
1299+
self._basis = basis
1300+
for i in reactions: i.basis = basis
1301+
else:
1302+
raise ValueError(f"basis must be either 'mol' or 'wt', not {basis!r}")
12971303
self._stoichiometry = [i._stoichiometry for i in reactions]
12981304
self._X = np.array([i.X for i in reactions])
12991305
self._rate = [i.rate for i in reactions]
@@ -1785,8 +1791,15 @@ def __init__(self, *reactions, basis=None):
17851791
try: chemicals, = set([i.chemicals for i in reactions])
17861792
except: raise ValueError('all reactions must have the same chemicals')
17871793
self._chemicals = chemicals
1788-
try: self._basis, = set([i._basis for i in reactions])
1789-
except: raise ValueError('all reactions must have the same basis')
1794+
if basis is None:
1795+
basis = {i._basis for i in reactions}
1796+
try: self._basis, = basis
1797+
except: raise ValueError('all reactions must have the same basis')
1798+
elif basis in ('mol', 'wt'):
1799+
self._basis = basis
1800+
for i in reactions: i.basis = basis
1801+
else:
1802+
raise ValueError(f"basis must be either 'mol' or 'wt', not {basis!r}")
17901803

17911804
force_reaction = Reaction.force_reaction
17921805
adiabatic_reaction = Reaction.adiabatic_reaction

0 commit comments

Comments
 (0)