====== Черновики ====== ===== Выражения ===== см. //class Expression// Параметры следующих типов: - константы скоростей элементарных реакций - другие параметры процесса (температура, энергии активации реакций и т.п.) - начальные концентрации реагентов (набор стартовых значений переменных в системе дифф.уравнений) Процесс описывается кинетической схемой (см. //class\_Schema//). На этом этапе декларируются имена реагентов, констант скорости элементарных реакций и вспомогательных параметров. Конкретные реализации процесса (для краткости, //варианты//), отличающиеся набором начальных значений концентраций и других констант (//class\_SchemaInstance//) имеют возможность установить значения **всех** параметров. Однако есть возможность в варианте не устанавливать значение параметра; тогда оно будет браться из объявлений в общей схеме (как бы вариант глобальных параметров, или значений по умолчанию). Выражения, которые присваиваются параметрам в качестве их значений, в простейшем случае просто числовые значения. Однако возможно использовать полноценные математические выражения с использованием имён параметров/реагентов. :!: При расчёте кинетики выражения не интерпретируются, а используются соответствующие им объекты предварительной компиляции (//class\_ParsedExpression//), создаваемые при присваивании параметру значения. :!: Если в выражении встречается имя реагента, то при расчёте кинетики процесса (решении СДУ) в вычислениях используются не начальные, а текущие концентрации (меняющиеся во времени). double SchemaInstance::evaluateParameterValue(const String& name, const ExprEvalContext*); double Expression::evaluate(const ExprEvalContext*); double ParsedExpression::evaluate(const ExprEvalContext*); При оценке значения выражения используется вычислительный контекст (//struct\_ExprEvalContext//): struct ExprEvalContext { double time; const double* concentrations; const SchemaInstance* schemaInstance; }; Числовые выражения не требуют контекста для вычислений, для них может быть использовано //Expression::evaluate(nullptr)//. Выражения вычисляются в контексте //SchemaInstance//, в контексте //Schema// никогда (возможно только использование значений по-умолчанию из //Schema//((и //SchemaInstance// имеет ссылку на свою родительскую //Schema//))).