Выполните размерный анализ на модели
The DimensionalAnalysis
свойство задает, выполнять ли размерный анализ модели перед симуляцией. Это свойство CompileOptions
объект. CompileOptions
содержит опции времени компиляции модели и является свойством объекта configset
объект. Когда DimensionalAnalysis
установлено в true
, SimBiology® программа проверяет, соответствуют ли физические величины модулей, участвующих в реакциях и правилах, и применяются ли они.
Например, рассмотрим реакцию a + b —> c
. Используя кинетику действующих масс, скорость реакции определяется как a*b*k
, где k
- константа скорости реакции. Если вы задаете это начальное количество a
и b
0.01M и 0.005M соответственно, затем модули k
являются 1/(M*second)
. Если вы задаете k
с другим эквивалентным определением модуля, например 1/[(moles/liter)*second]
, DimensionalAnalysis
проверяет соответствие физических величин. Если физические величины не совпадают, вы видите ошибку, и модель не моделируется.
Модуль измерения требует размерного анализа. Если DimensionalAnalysis
выключена, и ты поворачиваешься UnitConversion
затем DimensionalAnalysis
включается автоматически. Если UnitConversion
включен, и вы отключаете DimensionalAnalysis
, затем UnitConversion
автоматически отключается.
Если у вас есть MATLAB® вызовы функций в вашей модели, размерный анализ игнорирует любые выражения, содержащие вызовы функций, и генерирует предупреждение.
Действительными физическими величинами для скорости реакции являются количество/время, масса/время или концентрация/время.
Применяется к | Объект: CompileOptions (в configset объект) |
Тип данных | boolean |
Значения данных |
|
Доступ | Чтение/запись |
Примечание
SimBiology допускает экспоненцию любой безразмерной величины до любой безразмерной степени. Для примера можно написать следующее выражение, если оба x
и a
безразмерны: (x + 3)^(a + 0.5)
Примечание
SimBiology использует модули, включая пустые модули в сочетании с DimensionalAnalysis
и UnitConversion
функции.
Когда DimensionalAnalysis
и UnitConversion
являются ли оба false
, модули измерения не используются. Однако SimBiology все еще выполняет минимальный уровень размерного анализа, чтобы решить, является ли скорость реакции размерностями количества/времени или концентрации/времени.
Когда DimensionalAnalysis
является true
и UnitConversion
является false
, модули (если не пустые) должны иметь допустимые размерности, чтобы SimBiology мог выполнить размерный анализ. Однако модули не преобразуются.
Когда UnitConversion
установлено в true
(что требует DimensionalAnalysis
чтобы быть true
), SimBiology выполняет размерный анализ и преобразует все в последовательные модули. Следовательно, необходимо задать допустимые модули, и никакие модули измерения не могут быть пустыми. Если у вас есть безразмерный параметр, необходимо все равно задать его модуль dimensionless
.
Совет
Если у вас есть пользовательская функция и UnitConversion
на, следуйте рекомендации ниже.
Не-размерять параметры, которые передаются функции, если они еще не безразмерны.
Предположим, что у вас есть пользовательская функция, заданная как y = f(t)
где t
время в часах и y
- концентрация вида в моль/литр. Когда вы используете эту функцию в модели, чтобы задать повторное правило присвоения для образца, задайте ее как: s1 = f(time/t0)*s0
, где time
- время симуляции, t0
является параметром, заданным как 1,0 час, s0
является параметром, заданным как 1,0 моль/литр, и s1
- концентрация вида в моль/литр. Обратите внимание, что time
и s1
не обязательно находиться в тех же модулях, что и t0
и s0
но они должны быть размерно последовательными. Для примера, time
и s1
можно установить в минутах и пикомоле/литре, соответственно.
В этом примере показано, как извлечь и задать DimensionalAnalysis
из true
по умолчанию на
false
в конфигурации модели по умолчанию в объекте модели.
Импортируйте модель.
modelObj = sbmlimport('oscillator')
SimBiology Model - Oscillator Model Components: Models: 0 Parameters: 0 Reactions: 42 Rules: 0 Species: 23
Извлечение configset
объект объекта модели.
configsetObj = getconfigset(modelObj) Configuration Settings - default (active) SolverType: ode15s StopTime: 10.000000 SolverOptions: AbsoluteTolerance: 1.000000e-006 RelativeTolerance: 1.000000e-003 RuntimeOptions: StatesToLog: all CompileOptions: UnitConversion: true DimensionalAnalysis: true
Извлечение CompileOptions
объект.
optionsObj = get(configsetObj,'CompileOptions')
Compile Settings:
UnitConversion: true
DimensionalAnalysis: true
Присвойте значение false
на DimensionalAnalysis
.
set(optionsObj,'DimensionalAnalysis', false)