Amount unit used internally during simulation when UnitConversion is on
This property defines the amount unit that SimBiology uses internally
during model simulation when
on. You can set this to any character vector representing an amount
unit such as molecule, mole, or mole with any valid prefix. It can
also be a custom unit if it is consistent with amount as its dimension.
The default is
<automatic>, which means SimBiology
automatically selects an amount unit for simulation. SimBiology examines
the units on all of the states and selects an amount unit such that
AbsoluteTolerance of the states in amount,
or amount per volume is at least as stringent as the simulation absolute
tolerance multiplied by the smallest amount unit. This stringency
is relaxed appropriately for states that become large when
AbsoluteToleranceScaling is on.
It is recommended that you use the default unit (
or choose units for states such that the simulated values are neither
too large (greater than 106) or too small
(less than 10-6).
However, for some edge cases, you may need to change
Suppose you have a model with a state that takes on values around
10-12 moles for the entire simulation,
and you need to use
mole as its unit. Then it may
be appropriate to set
In this case, the internal simulation values would be around 1, instead
of around 10-12 as in the default case.
AbsoluteTolerance of the simulation is
determined using this internal value. Thus by choosing
the amount unit, you effectively reduce the size of
AmountUnits property is closely
related to changing
AbsoluteTolerance when considering
the effects on simulation results.
Even when using the default unit, it may be still necessary
For details, see Selecting Absolute Tolerance and Relative Tolerance for Simulation.
If you need to recover the simulation behavior from releases prior to R2015b:
mole. However, if the model has quantity units in
molecule, set the unit to
If you have a custom function and
on (whether or not you are using the default unit
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)where
tis the time in hour and
yis 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, where
timeis the simulation time,
t0is a parameter defined as 1.0 hour,
s0is a parameter defined as 1.0 mole/liter, and
s1is the concentration of a species in mole/liter. Note that
s1do not have to be in the same units as
s0, but they must be dimensionally consistent. For example, the
s1units can be set to minute and picomole/liter, respectively.
|Applies to||Object: |
|Data type||Character vector|
Character vector specifying any amount unit. The default
Read/write for properties of