Classes
Schema
Для эффективной работы модуля интегрирования дифф.ур-ний нам нужно особое представление схемы процесса (encoding). Так как в алгоритме интегрирования используются векторы (С-массивы) для значений концентраций (а также их производных по времени), удобно как минимум перед началом интегрирования иметь код схемы, содержащий целочисленные индексы, соответствующие реагентам схемы. Для констант скорости и других параметров такого жёсткого требования не возникает.
Таким образом, вместо ассоциативного контейнера для хранения информации о реагентах придётся (?) использовать некоторую совокупность векторов: вектор имён,
В качестве основного положения выберем, что схема процесса (Schema) задаёт конкретный набор дифф.ур-ний относительно концентраций реагентов процесса1), а её варианты/инстанциации (SchemaInstance) задают конкретные значения констант элементарных реакций и начальные значения концентраций реагентов.
Мы принимаем, что значения параметров процесса (константы скоростей, начальные концентрации реагентов и др.) могут задаваться на 3-х уровнях иерархии: локально, как параметры SchemaInstance, глобально, на уровне Schema, что упрощает параметризацию моделирования процесса большим набором вариантов SchemaInstance. Третий уровань, “суперглобальные” параметры, обсудим позже.
Кодирование схемы желательно проводить именно на её уровне (Schema), а не ниже. Тут и возникает необходимость предствления набора реагентов как векторов (С-массивов), поскольку именно так будут представлены концентрации реагентов в алгоритме интегрирования. Алгоритм интегрирования будет использовать собственные массивы плюс кодировку схемы для динамического вычисления вектора производных (а также и Якобиана этой системы ур-ний; см. Алгоритм интегрирования). Для эффективности такого вычисления в кодировке схемы реагенты должны быть представлены соответствующими индексами элементов С-массивов. Хотя возможен подход remapping, т.е. организация косвенной адресации в связке “код схемы” – “массивы значений переменных интегрирования”.
