Perform unit conversion


The UnitConversion property specifies whether to perform unit conversion for the model before simulation. It is a property of the CompileOptions object. CompileOptions holds the model's compile time options and is the object property of the configset object.

When UnitConversion is set to true, the SimBiology® software converts the matching physical quantities to one consistent unit system in order to resolve them. This conversion is in preparation for correct simulation, but species amounts are returned in the user-specified units.

For example, consider a reaction a + b —> c. Using mass action kinetics the reaction rate is defined as a*b*k where k is the rate constant of the reaction. If you specify that initial amounts of a and b are 0.01M and 0.005M respectively, then units of k are 1/(M*second). If you specify k with another equivalent unit definition, for example, 1/((molecules/liter)*second), UnitConversion occurs after DimensionalAnalysis.


If UnitConversion fails, then you see an error when you simulate (sbiosimulate).

If UnitConversion is set to false, the simulation uses the given object values.

Unit conversion involving temperature supports Celsius as the temperature unit. Avoid using mixed temperature units as you might get an error.


Applies toObject: CompileOptions (in configset object)
Data typeboolean
Data values

true or false. Default value is false.


    Note:   SimBiology uses unit strings including empty units in association with DimensionalAnalysis and UnitConversion features.

    • When DimensionalAnalysis and UnitConversion are both false, unit strings 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 UnitConversion is set to true (which requires DimensionalAnalysis to be true), SimBiology performs a dimensional analysis and converts everything to consistent units. Hence, you must specify consistent units, and no unit strings can be empty. If you have a dimensionless parameter, you must still set its unit string to dimensionless.


This example shows how to retrieve and set unitconversion from the default true to false in the default configuration set in a model object.

  1. Import a model.

    modelObj = sbmlimport('oscillator')

    SimBiology Model - Oscillator 
       Model Components:
         Models:            0
         Parameters:        0
         Reactions:         42
         Rules:             0
         Species:           23
  2. Retrieve the configset object of the model object.

    configsetObj = getconfigset(modelObj)
     Configuration Settings - default (active)
         SolverType:           ode15s
         StopTime:             10.000000
         AbsoluteTolerance:    1.000000e-006
         RelativeTolerance:    1.000000e-003
         StatesToLog:          all
         UnitConversion:       false
         DimensionalAnalysis:  true
  3. Retrieve the CompileOptions object.

    optionsObj = get(configsetObj,'CompileOptions')
    Compile Settings:
         UnitConversion:       false
         DimensionalAnalysis:  true
  4. Assign a value of false to UnitConversion.

     set(optionsObj,'UnitConversion', true)
Was this topic helpful?