====== Classes ====== * [[.:schema:|Schema]] * [[.:schema_instance:|SchemaInstance]] * [[.:expr:|Expression]] * [[.:parsed_expr:|Parsed Expression]] ===== Schema ===== Для эффективной работы модуля интегрирования дифф.ур-ний нам нужно особое представление схемы процесса (//encoding//). Так как в алгоритме интегрирования используются векторы (С-массивы) для значений концентраций (а также их производных по времени), удобно как минимум перед началом интегрирования иметь код схемы, содержащий целочисленные индексы, соответствующие реагентам схемы. Для констант скорости и других параметров такого жёсткого требования не возникает. Таким образом, вместо ассоциативного контейнера для хранения информации о реагентах придётся (?) использовать некоторую совокупность векторов: вектор имён, В качестве основного положения выберем, что схема процесса (//Schema//) задаёт конкретный набор дифф.ур-ний относительно концентраций реагентов процесса((они являются переменными интегрирования)), а её варианты/инстанциации (//SchemaInstance//) задают конкретные значения констант элементарных реакций и начальные значения концентраций реагентов. Мы принимаем, что значения параметров процесса (константы скоростей, начальные концентрации реагентов и др.) могут задаваться на 3-х уровнях иерархии: локально, как параметры //SchemaInstance//, глобально, на уровне //Schema//, что упрощает параметризацию моделирования процесса большим набором вариантов //SchemaInstance//. Третий уровань, "суперглобальные" параметры, обсудим позже. Кодирование схемы желательно проводить именно на её уровне (//Schema//), а не ниже. Тут и возникает необходимость предствления набора реагентов как векторов (С-массивов), поскольку именно так будут представлены концентрации реагентов в алгоритме интегрирования. Алгоритм интегрирования будет использовать собственные массивы плюс кодировку схемы для динамического вычисления вектора производных (а также и Якобиана этой системы ур-ний; см. [[..:gear|Алгоритм интегрирования]]). Для эффективности такого вычисления в кодировке схемы реагенты должны быть представлены соответствующими индексами элементов С-массивов. Хотя возможен подход //remapping//, т.е. организация косвенной адресации в связке "//код схемы//" -- "//массивы значений переменных интегрирования//".