Различный лимитирующий донор в функции химической реакции

У меня есть пара химических реакций, которые связаны между собой. Каждая реакция имеет одного из 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, который проходит через всех доноров и, когда он его находит, вычитает из предыдущего.

0 ответов

Другие вопросы по тегам