DimensionalAnalysis
Perform dimensional analysis on model
Description
TheDimensionalAnalysis
property specifies whether to perform dimensional analysis on the model before simulation. It is a property of theCompileOptions
object.CompileOptions
holds the model's compile time options and is the object property of theconfigset
object. WhenDimensionalAnalysis
is set totrue
, the SimBiology®software checks whether the physical quantities of the units involved in reactions and rules, match and are applicable.
For example, consider a reactiona + b —> c
. Using mass action kinetics, the reaction rate is defined asa*b*k
, wherek
is the rate constant of the reaction. If you specify that initial amounts ofa
andb
are 0.01M and 0.005M respectively, then units ofk
are1/(M*second)
. If you specifyk
with another equivalent unit definition, for example,1/[(moles/liter)*second]
,DimensionalAnalysis
checks whether the physical quantities match. If the physical quantities do not match, you see an error and the model is not simulated.
Unit conversion requires dimensional analysis. IfDimensionalAnalysis
is off, and you turnUnitConversion
on, thenDimensionalAnalysis
is turned on automatically. IfUnitConversion
is on and you turn offDimensionalAnalysis
, thenUnitConversion
is turned off automatically.
If you have MATLAB®function calls in your model, dimensional analysis ignores any expressions containing function calls and generates a warning.
Valid physical quantities for reaction rates are amount/time, mass/time, or concentration/time.
Characteristics
Applies to | Object:CompileOptions (inconfigset object) |
数据类型 | boolean |
Data values |
|
Access | Read/write |
Note
SimBiology allows exponentiation of any dimensionless quantity to any dimensionless power. For example, you can write the following expression if bothx
anda
are dimensionless:(x + 3)^(a + 0.5)
Note
SimBiology uses units including empty units in association withDimensionalAnalysis
andUnitConversion
特性。
When
DimensionalAnalysis
andUnitConversion
are bothfalse
, units are not used. However, SimBiology still performs a minimum level of dimensional analysis to decide whether a reaction rate is in dimensions of amount/time or concentration/time.When
DimensionalAnalysis
istrue
andUnitConversion
isfalse
, units (if not empty) must have consistent dimensions so that SimBiology can perform dimensional analysis. However, the units are not converted.When
UnitConversion
is set totrue
(which requiresDimensionalAnalysis
to betrue
), SimBiology performs a dimensional analysis and converts everything to consistent units. Hence, you must specify consistent units, and no units can be empty. If you have a dimensionless parameter, you must still set its unit todimensionless
.
Tip
If you have a custom function andUnitConversion
is on, follow the recommendation below.
Non-dimensionalize the parameters that are passed to the function if they are not already dimensionless.
Suppose you have a custom function defined as
y = f(t)
wheret
is the time in hour andy
is the concentration of a species in mole/liter. When you use this function in your model to define a repeated assignment rule for instance, define it as:s1 = f(time/t0)*s0
, wheretime
is the simulation time,t0
is a parameter defined as 1.0 hour,s0
is a parameter defined as 1.0 mole/liter, ands1
is the concentration of a species in mole/liter. Note thattime
ands1
do not have to be in the same units ast0
ands0
, but they must be dimensionally consistent. For example, thetime
ands1
units can be set to minute and picomole/liter, respectively.
Examples
This example shows how to retrieve and setDimensionalAnalysis
from the defaulttrue
tofalse
in the default configuration set in a model object.
Import a model.
modelObj = sbmlimport (“振荡器”)
SimBiology Model - Oscillator Model Components: Models: 0 Parameters: 0 Reactions: 42 Rules: 0 Species: 23
Retrieve the
configset
object of the model object.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
Retrieve the
CompileOptions
object.optionsObj = get(configsetObj,'CompileOptions') Compile Settings: UnitConversion: true DimensionalAnalysis: true
Assign a value of
false
toDimensionalAnalysis
.set(optionsObj,'DimensionalAnalysis', false)