User Tools

Site Tools


libkin:drafts

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
libkin:drafts [2026/08/03 16:28] – [Выражения] abclibkin:drafts [2026/08/03 17:36] (current) – [Выражения] abc
Line 9: Line 9:
   - начальные концентрации реагентов (набор стартовых значений переменных в системе дифф.уравнений)   - начальные концентрации реагентов (набор стартовых значений переменных в системе дифф.уравнений)
  
-Процесс описывается кинетической схемой (см. //class Schema//). На этом этапе декларируются имена реагентов, констант скорости элементарных реакций и вспомогательных параметров.+Процесс описывается кинетической схемой (см. //class\_Schema//). На этом этапе декларируются имена реагентов, констант скорости элементарных реакций и вспомогательных параметров.
  
-Конкретные реализации процесса (для краткости, //варианты//), отличающиеся набором начальных значений концентраций и других констант (//class SchemaInstance//) имеют возможность установить значения **всех** параметров. Однако есть возможность в варианте не устанавливать значение параметра; тогда оно будет браться из объявлений в общей схеме (как бы глобальные параметры, или значения по умолчанию).+Конкретные реализации процесса (для краткости, //варианты//), отличающиеся набором начальных значений концентраций и других констант (//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//))).
 +
 +  
libkin/drafts.1785763723.txt.gz · Last modified: by abc