This is an old revision of the document!
Черновики
Выражения
см. 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;
};
Выражения вычисляются в контексте SchemaInstance, в контексте Schema никогда (возможно только использование значений по-умолчанию из Schema1)).
