Also add several tests which check that the various kinds of duplicate reactions are being identified as errors or allowed as intended.
59 lines
1.9 KiB
Text
59 lines
1.9 KiB
Text
units(length='cm', time='s', quantity='mol', act_energy='cal/mol')
|
|
|
|
def make_gas(name, reactions):
|
|
ideal_gas(name=name,
|
|
elements=" O H Ar ",
|
|
species="""h2o2: H2 H O O2 OH H2O HO2 H2O2 AR """,
|
|
reactions=reactions,
|
|
transport="None")
|
|
|
|
make_gas('A', 'A-*')
|
|
make_gas('B', 'B-*')
|
|
make_gas('C', 'C-*')
|
|
make_gas('D', 'D-*')
|
|
make_gas('E', 'E-*')
|
|
make_gas('F', 'F-*')
|
|
make_gas('G', 'G-*')
|
|
make_gas('H', 'H-*')
|
|
make_gas('I', 'I-*')
|
|
|
|
kf = [1e10, 0, 100]
|
|
|
|
# Forward multiple (not allowed)
|
|
reaction('O + H2 <=> H + OH', kf, id='A-1')
|
|
reaction('2 O + 2 H2 <=> 2 H + 2 OH', kf, id='A-2')
|
|
|
|
# Opposite direction #1 (not allowed)
|
|
reaction('O + H2 <=> H + OH', kf, id='B-1')
|
|
reaction('H + OH <=> O + H2', kf, id='B-2')
|
|
|
|
# Opposite direction #2 (not allowed)
|
|
reaction('H + O2 + AR <=> HO2 + AR', kf, id='C-1')
|
|
reaction('HO2 + AR <=> H + O2 + AR', kf, id='C-2')
|
|
|
|
# Opposite direction #3 (not allowed)
|
|
reaction('H + O2 + AR <=> HO2 + AR', kf, id='D-1')
|
|
reaction('HO2 + AR => H + O2 + AR', kf, id='D-2')
|
|
|
|
# Opposite direction #4 (allowed)
|
|
reaction('H + O2 + AR => HO2 + AR', kf, id='E-1')
|
|
reaction('HO2 + AR => H + O2 + AR', kf, id='E-2')
|
|
|
|
# Common efficiencies (not allowed)
|
|
falloff_reaction('2 OH (+ M) <=> H2O2 (+ M)', kf=kf, kf0=kf,
|
|
efficiencies='H2:2.0 H2O:6.0', id='F-1')
|
|
falloff_reaction('2 OH (+ M) <=> H2O2 (+ M)', kf=kf, kf0=kf,
|
|
efficiencies='AR:0.7 H2:2.0', id='F-2')
|
|
|
|
# Disjoint efficiencies (allowed)
|
|
falloff_reaction('2 OH (+ H2O) <=> H2O2 (+ H2O)', kf=kf, kf0=kf, id='G-1')
|
|
falloff_reaction('2 OH (+ M) <=> H2O2 (+ M)', kf=kf, kf0=kf,
|
|
efficiencies='AR:0.7 H2:2.0 H2O:0.0', id='G-2')
|
|
|
|
# Different reaction type (allowed)
|
|
reaction('O + H2 <=> H + OH', kf, id='H-1')
|
|
three_body_reaction('O + H2 + M <=> H + OH + M', kf, id='H-2')
|
|
|
|
# Declared duplicate (allowed)
|
|
reaction('O + H2 <=> H + OH', kf, options='duplicate', id='I-1')
|
|
reaction('H + OH <=> O + H2', kf, options='duplicate', id='I-2')
|