Использование кинетики пиролиза биомассы в реакторе Cantera

Я пытаюсь использовать Cantera с кинетической схемой для пиролиза биомассы, чтобы посмотреть изменения концентрации с течением времени в реакторе периодического действия. Обзор кинетики показан ниже вместе со ссылкой на статью. Обратите внимание, что концентрации видов указаны в массовых единицах, таких как kg/m^3,

  • дерево = биомасса, которая обычно сосна
  • газ = сосредоточенные частицы, которые содержат легкие неконденсирующиеся газы
  • смола = кусковые виды конденсирующихся паров пиролиза
  • символ = полностью пиролизованная древесина, в основном углерод

Справка: Коломба ди Блази. Анализ эффектов конвекции и вторичной реакции в пористом твердом топливе, подвергающемся пиролизу. Сжигание науки и техники, том. 90, с. 315-340, 1993.

Предполагая начальную концентрацию древесины 1.0 Я могу решить систему уравнений скорости реакции с помощью Python и построить график преобразования во времени, как показано ниже.

К сожалению, моя попытка использовать кинетическую схему с Cantera дает ошибки о несовместимых типах фаз. мой blasi.cti Файл содержит следующее:

#-------------------------------------------------------------------------------
#  Phases data
#-------------------------------------------------------------------------------


stoichiometric_solid(
    name = "wood",
    species = "wood",
    density = (700, "kg/m3")
)

ideal_gas(
    name = "gas",
    species = "gas"
)

ideal_gas(
    name = "tar",
    species = "tar"
)

stoichiometric_solid(
    name = "char",
    species = "char",
    density = (110, "kg/m3")
)

#-------------------------------------------------------------------------------
#  Species data
#-------------------------------------------------------------------------------

species(
    name="wood"
)

species(
    name = "gas"
)

species(
    name = "tar"
)

species(
    name = "char"
)

#-------------------------------------------------------------------------------
#  Reaction data
#-------------------------------------------------------------------------------

# Reaction 1
reaction("wood => gas", [1.4345e4, 0, 88.6])

# Reaction 2
reaction("wood => tar", [4.125e6, 0, 112.7])

# Reaction 3
reaction("wood => char", [7.3766e5, 0, 106.5])

# Reaction 4
reaction("tar => gas", [4.28e6, 0, 108])

# Reaction 5
reaction("tar => char", [1.0e6, 0, 108])

и файл Python blasi_reactor.py который использует вышеупомянутое cti файл:

import cantera as ct
import matplotlib.pyplot as plt

tk = 773.15     # temperature [K]
p = 101325.0    # pressure [Pa]

gas = ct.Solution('blasi.cti')
gas.TP = tk, p
r = ct.IdealGasConstPressureReactor(gas)

sim = ct.ReactorNet([r])
time = 0.0
states = ct.SolutionArray(gas, extra=['t'])

for n in range(50):
    time += 1.0
    sim.advance(time)
    states.append(r.thermo.state, t=time)

plt.figure()
plt.plot(states.t, states.X[:, gas.species_index('wood')])
plt.plot(states.t, states.X[:, gas.species_index('gas')])
plt.plot(states.t, states.X[:, gas.species_index('tar')])
plt.plot(states.t, states.X[:, gas.species_index('char')])
plt.xlabel('Time [s]')
plt.ylabel('Concentration [kg/m^3]')
plt.show()

Сообщение об ошибке от Cantera:

Traceback (most recent call last):
  File "blasi_cantera.py", line 9, in <module>
    r = ct.IdealGasConstPressureReactor(gas)
  File "interfaces/cython/cantera/reactor.pyx", line 191, in cantera._cantera.Reactor.__init__
  File "interfaces/cython/cantera/reactor.pyx", line 28, in cantera._cantera.ReactorBase.__init__
  File "interfaces/cython/cantera/reactor.pyx", line 199, in cantera._cantera.Reactor.insert
  File "interfaces/cython/cantera/reactor.pyx", line 50, in cantera._cantera.ReactorBase.insert
cantera._cantera.CanteraError:
***********************************************************************
CanteraError thrown by IdealGasReactor::setThermoMgr:
Incompatible phase type provided
***********************************************************************

Как я могу определить виды комков, такие как древесина, газ, смола и полукокса, с помощью Cantera? Можно ли вообще использовать такую ​​кинетическую схему в Cantera? Я обычно создаю свои собственные модели пиролиза с использованием Python, но я бы хотел использовать возможности реактора в Cantera. Это также позволило бы мне сравнить результаты между Cantera и моими личными моделями Python.

Примечание. Я посмотрел примеры на веб-сайте документации Cantera, но все для четко определенных видов газовой фазы, в которых вы знаете элементный состав и коэффициенты НАСА.

1 ответ

Можно использовать ваши собственные, даже готовые элементы и виды, при условии, что данные термодинамики (данные с определенными коэффициентами теплопроводности присутствуют и являются правильными), однако, находя правильные коэффициенты для таких объемных материалов (проверьте это: https: https://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19940013151.pdf).

Также для кинетических расчетов и цепочки реакторов легче работать с ct.IdealGasReactor, он также должен поддерживать многофазность.

Более того, вам нужен как минимум верхний резервуар между реакторами и синхронизировать их на каждой итерации.

ps вы можете проверить эту публикацию, сделанную Cantera: https://www.researchgate.net/publication/320592565_Modelling_of_biomass_combustion_chemistry_to_investigate_gas_phase_alkali_sulfate_formation

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