Выполните модульное преобразование
Свойство UnitConversion
задает, выполнить ли модульное преобразование для модели перед симуляцией. Это - свойство объекта CompileOptions
. CompileOptions
содержит опции времени компиляции модели и является свойством объекта объекта configset
.
Когда UnitConversion
установлен в true
, программное обеспечение SimBiology® преобразовывает соответствующие физические количества в одну сопоставимую модульную систему в порядке разрешить их. Это преобразование при подготовке к правильной симуляции, но суммы разновидностей возвращены в заданных пользователями модулях.
Например, считайте реакцию a + b —> c
. Используя кинетику действующих масс скорость реакции задана как a*b*k
, где k
является константой скорости реакции. Если вы указываете, что начальные суммы a
и b
0.01M и 0.005M соответственно, то модулями k
является 1/(M*second)
. Если вы задаете k
с другим эквивалентным модульным определением, например, 1/((molecules/liter)*second)
, UnitConversion
происходит после DimensionalAnalysis
.
Модульное преобразование требует размерного анализа. Если DimensionalAnalysis
выключен, и вы включаете UnitConversion
, то DimensionalAnalysis
включен автоматически. Если UnitConversion
включен, и вы выключаете DimensionalAnalysis
, то UnitConversion
выключен автоматически.
Если UnitConversion
перестал работать, то вы видите ошибку, когда вы моделируете (sbiosimulate
).
Если UnitConversion
установлен в false
, симуляция использует данные объектные значения.
Модульное преобразование включающая температура поддерживает Celsius
как температурный модуль. Избегайте использования смешанных температурных модулей, когда вы можете получить ошибку.
Применяется | Объект: CompileOptions (в объекте configset ) |
Тип данных | boolean |
Значения данных |
|
Доступ | Чтение-запись |
SimBiology использует модули включая пустые модули в сотрудничестве с функциями UnitConversion
и DimensionalAnalysis
.
Когда 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
могут быть установлены в минуту и picomole/liter, соответственно.
Этот пример показывает, как получить и установить unitconversion
от 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: false DimensionalAnalysis: true
Получите объект CompileOptions
.
optionsObj = get(configsetObj,'CompileOptions') Compile Settings: UnitConversion: false DimensionalAnalysis: true
Присвойте значение лжи к UnitConversion
.
set(optionsObj,'UnitConversion', true)