![]() |
mech_optimiz
4.4.1
microkinetic mechanism investigation tool
|
Решатель - часть программы, отдельная программа или библиотека, реализующая решение одного или нескольких уравнений.
В отношении mech_optimiz мы будем понимать под словом "решатель" часть программы (модуль, класс...), который отвечает за решение уравнений химической кинетики и переноса и расчет конверсии в реакторе.
Здесь мы представим математическую модель реактора, программно реализованную в классе cstrsolver, опишем алгоритм ее решения и детали программной реализация алгоритма.
Мы рассматриваем ячеечную модель реактора неподвижного каталитического слоя. Другое название ячеечной модели - каскад реакторов идеального смешения (РИС-к).
Каждая ячейка представляет собой ячейку идеального смешения (ИС). Модель реактора идеального вытеснения является частным случаем ячеечной модели, когда число ячеек стремится к бесконечности. В практических случаях, можно говорить о математической модели реактора идеального вытеснения (РИВ), когда в расчете используется более 100 последовательных ячеек.
Для того, чтобы найти стационарные значения концентраций газофазных веществ в каждой ячейке, применяется метод установления по концентрации. Так как система уравнений химической кинетики обычно является сильно жесткой по изменению концентраций некоторых интермедиатов, то интегрирование в неявном решателе выполняется итерационно, причем на каждой итерации выделяются два этапа.
Первый этап - интегрирование до установления концентраций интермедиатов при фиксированных концентрациях газофазных веществ в текущей расчетной ячейке. Начало расчета на этапе соответствует внутреннему времени системы уравнений задачи t=0. Критерий останова - ошибка установления скоростей образования и расходования интермедиатов, т.е., здесь, относительная ошибка скорости изменения концентрации интермедиата (cdot[k] - ddot[k])/(cdot[k] + ddot[k]), менее 10^-7, при этом сумма модулей скоростей образования и расходования (cdot[k] + ddot[k]) должна быть > 1e-10) - иначе, можно считать, что интермедиат незначительно изменяет свою концентрацию.
Установление производится следующим образом: уравнения интегрируются по времени с помощью Cantera до dt=100.0 секунд, проверяется критерий останова. Если он не выполнен, интегрирование производится повторно. Всего - не более max_eq_it интегрирований. Число max_eq_it определяется по формуле:
\[37 surf->nSpecies() + surf->nSpecies() / 2\]
, где \(surf->nSpecies()\) - число поверхностных интермедиатов. Если за max_eq_it интегрирований стационарное состояние не достигнуто, признается, что оно отсутствует в данной системе (нестационарный процесс), решатель выбрасывает исключение CanteraError "Equilibrium". Также, аналогичное исключение будет выброшено, если после очередного интегрирования периода dt = 100.0 секунд внутреннего времени системы уравнений задачи будет установлено, что реальное время (по настенным часам, walltime), затраченное на итерационный процесс первого этапа при интегрировании от t = 0, составило 30 секунд или более.
Соответственно, по окончании интегрирования, пересчитывается источниковый член (реакция) в уравнении переноса компонентов. Второй этап - пересчет концентрации газофазных веществ с учетом источникового члена, полученного на первом этапе. Процесс итерации "первый-второй этап" продолжается до тех пор, пока концентрации газофазных веществ не установятся с заданной точностью (1).
В явном решателе, итерационный процесс "первый-второй этап" отсутствует, таким образом, значения, полученные на единственной итерации "первый-второй этап" принимаются как окончательные для ячейки реактора.
Необходимо отметить, что в начальный момент реакции мгновенные значения скоростей по веществам могут принимать огромные значения, и источниковый член, рассчитанный на их основании, будет приводить к расчету отрицательных значений концентраций газофазных веществ. Отрицательные значения концентраций являются нефизическими, более того, приведут к расхождению Cantera в следующей ячейке или на следующей итерации (для неявного метода решения). Для того чтобы избежать отрицательных значений переменных, создаются методы положительного интегрирования, например, методы отсечения отрицательных концентраций. Однако они приводят к нарушению закона сохранения массы, являются неконсервативными. Другой, более сложный класс методов - проекционные (см. [11]).
Мы использовали собственный метод положительного интегрирования. Скорости по веществам пропорциональны друг другу с учетом стехиометрии системы, поэтому, мы уменьшаем скорости по веществу пропорционально стехиометрии до тех пор, пока новые значения концентраций всех газофазных веществ не станут положительными числами. В неявном решателе, помимо этого производится предохранение от разболтки решения: если решение (новые концентрации в ячейке) после итерации "первый-второй этап" находятся вне границ, в которых они уже изменялись в разные стороны, то делается шаг некоторого размера по концентрациям в сторону решения (например: при начальном значении концентрации изменялись в сторону уменьшения, при 0.1 - в сторону увеличения, и потом получаем решение 0.05 менее 0.1 – значит, будет сделан шаг в сторону 0.05, при этом лежащий в границах от начального решения до 0.1). Размер шага уменьшается с итерацией алгоритма (уточнить! там немного сложнее еще).
Интегрирование интермедиатов и газофазных веществ по отдельности связано с идеей выделения быстрой (интермедиаты) и медленной (газы) подсистем. Можно выделить еще несколько подсистем, создавая вложенную систему циклов, где в каждом цикле изменяются только концентрации веществ данного уровня и вложенных уровней, при этом на каждой итерации для данного уровня выполняется установление концентраций следующего уровня вложенности. Так, цикл установления (как для явного, так и для неявного решателя) может быть добавлен для отдельного интегрирования концентраций в сплошной фазе катализатора (bulk). При этом, изменение концентраций поверхностных интермедиатов будет рассчитываться во вложенном цикле, а газофазных веществ - во внешнем по сравнению с bulk-циклом.
Еще один уровень вложенности для расчета стационарных значений концентраций в данной ячейке, внешний по отношению к расчету концентраций газофазных веществ по уравнению переноса концентраций, есть уровень изменения температуры в ячейке. Для изотермического реактора это уровень отсутствует.
Наконец, надо отметить, что вышесказанное описание итерационных процессов и циклов относилось только к одной ячейке. Рассчитанные значения концентраций в n-ой ячейке используются как входные концентрации в n+1 ячейку. Расчет оканчивается, когда n=N, где N - число ячеек модели.
1. Уточним, что решение на этом этапе осуществляется по уравнениям, сформулированным относительно мольных долей компонентов газовой смеси.