User Tools

Site Tools


libkin:classes:expr:index

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
libkin:classes:expr:index [2025/12/22 15:12] – created - external edit 127.0.0.1libkin:classes:expr:index [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Expression ====== 
-При анализе текста схемы процесса (см. [[..:schema:|Schema]]) выявляются её параметры, прежде всего //константы скоростей элементрарных реакций//. В кинетических расчётах они не такие уж и константы: как минимум, они зависят от температуры, а температура среды может изменяться (см. раздел [[Thermochemistry]]). 
- 
-Итак, значением переметра может быть выражение, //Expression//. В //ABCKinetics// в качестве выражения допустимы математические выражения, включающие арифметические операции (+ - * / ^), стандартные функции (показательная, логарифм, тригонометрические и т.д.), а также ссылки на значения других параметров и на значения концентраций реагентов процесса. Более того, пользователь для своего удобства может объявлять [[.:UDF|собственные функции]]. 
- 
-Подчеркну ещё раз: выражения -- это возможные значения параметров, не сами параметры((программисты такие объекты называют //RValues (right side values)//, то, что можно использовать в правой части оператора присваивания)). 
-<file> 
-class Expression 
-{ 
- public: 
-  Expression(const Expression&) = delete; 
-  Expression operator=(const Expression&) = delete; 
- 
-  Expression(); 
-  Expression(double); 
-  Expression(const String&); 
-  ~Expression(); 
- 
-  double evaluate(const CalcContext*) const; 
- // for readers' info: 
- private: 
-  const ParsedExpression* pexpr; 
-}; 
-</file> 
- 
-Для оптимизации вычислений, выражения предварительно компилируются. Если это константное выражение (напр., //π/2// или //sqrt(2)//), то результатом компиляции будет обыкновенное число. Этот результат хранится в приватной части объектов //Expression//, в члене класса с типом //ParsedExpression//, с помощью которого и отрабатывает публичный метод //evaluate//. 
- 
-В общем случае выражения содержат ссылки на значения параметров и на текущие концентрации реагентов. Поэтому для вычисления выражения методу //evaluate// нужно сообщить контекст (для какого варианта/инстанса схемы проводить расчёт, то есть где взять конкретные значения параметров и концентраций). Это объект типа //[[CalcContext]]//. 
  
libkin/classes/expr/index.1766405539.txt.gz · Last modified: by 127.0.0.1