我有几个化学反应联系在一起。每个反应都有3个可用的供体之一,这些供体被消耗了,因此最终它们是0,并且在这种情况下无法执行反应。
因此,例如,如果供体B的浓度很小,并且在第一反应中被消耗,则第三反应就无法执行。
#Reactions look like that.
#1. A + B -> C + B_1
#2. C + G -> D + G_1
#3. D + B -> E + B_1
#4. E + G -> F + G_1
#5. D + H -> J + H_1
我通过excel阅读它们。
wb = open_workbook(reactions)
ws = wb.sheet_by_index(0)
n_rows = ws.nrows
#number of reactions
no_reactions = n_rows - 1
components = []
for i in range(1,n_rows):
if ws.cell_value(i,reactant_location) not in components:
components.append(ws.cell_value(i,reactant_location))
if ws.cell_value(i,product_location) not in components:
components.append(ws.cell_value(i,product_location))
if ws.cell_value(i,donor_location) not in components:
components.append(ws.cell_value(i,donor_location))
def simple_equation_system(t,c):
for i in range(1,no_reactions+1):
cr = components.index(ws.cell_value(i,reactant_location))
cd = components.index(ws.cell_value(i,donor_location))
cp = components.index(ws.cell_value(i,product_location)
r_r = 1 * c[cr] * c[cd]
dcdt[cr] += -r_r
dcdt[cp] += r_r
return dcdt
我不知道如何输入供体浓度,并且每次供体为“ B”时,供体浓度都将减去1。因此,例如,如果B的浓度为1,则仅进行第一,第二,第五次反应可能会发生,但不是第三和第四。
也许我需要做一个遍历所有供体的for循环,找到它后就从前一个供体中减去。