User Tools

Site Tools


libkin:classes:expr:calccontext

Context

Используемые в программе выражения могут содержать в себе ссылки на Сущности (Entities). Первое разделение сущностей: на параметры (в том числе и константы скоростей) и реагенты. Реагенты, точнее, их концентрации – выступают в качестве переменных интегрирования систем дифф.ур-ний, в то время как параметры – это обычно коэффициенты или функции времени в этих уравнениях.

Второе: говоря о реагентах, мы можем иметь в виду функции концентраций от времени, получаемые в процессе интегрирования; либо просто начальные значения концентраций, тогда это обычные параметры схемы.

Эти случаи учитываются при вычислении значений выражений: вводится понятие Контекст вычисления. Объекты этого типа передаются в методы evaluate() классов Expression и ParsedExpression, используются сначала при синтаксическом разборе, а затем и при вычислениях в процессе интегрирования.

struct CalcContext {
  double time;
  const double* concentrations;
  const SchemaInstance* schemaInstance;
};
class ParsedExpression
{
 public:
  virtual double evaluate(const CalcContext*) const = 0;
 ...
};

Выражения, не содержащие ссылок на Сущности, вычисляются без Контекста (в качестве аргумента nullptr). Выражения, не ссылающиеся на значения переменных интегрирования, вычисляются в контексте со значением указателя concentrations=nullptr1).

1)
например, такой контекст используется при вычислении начальных значений концентраций реагентов
libkin/classes/expr/calccontext.txt · Last modified: by 127.0.0.1