对模型进行量纲分析
的DimensionalAnalysis
属性指定在模拟之前是否对模型执行维度分析。它是属性CompileOptions
对象。CompileOptions
对象的对象属性,包含模型的编译时选项configset
对象。当DimensionalAnalysis
被设置为真正的
,SimBiology®软件检查反应和规则所涉及的单位的物理量是否匹配和适用。
例如,考虑一个反应a + b - > c
。利用质量作用动力学,将反应速率定义为a * b * k
,在那里k
是反应的速率常数。如果你指定初始量一个
和b
分别为0.01M和0.005M,则单位为k
是1 / (M *秒)
。如果您指定k
用另一个等价单位定义,例如,1 /((摩尔/升)*秒)
,DimensionalAnalysis
检查物理量是否匹配。如果物理量不匹配,就会出现错误,模型就不会被模拟。
单位转换需要量纲分析。如果DimensionalAnalysis
关了,你转身了吗UnitConversion
上之后,DimensionalAnalysis
是自动开启的。如果UnitConversion
打开,你关掉DimensionalAnalysis
,然后UnitConversion
自动关闭。
如果你有MATLAB®在模型中,维度分析忽略任何包含函数调用的表达式,并生成警告。
反应速率的有效物理量是量/时间、质量/时间或浓度/时间。
适用于 | 对象:CompileOptions (在configset 对象) |
数据类型 | 布尔 |
数据值 |
|
访问 | 读/写 |
SimBiology允许对任何无因次量求幂到任何无因次幂。例如,如果两者都有,可以写下面的表达式x
和一个
是无量纲的:(x + 3)^(a + 0.5)
SimBiology使用单位,包括与关联的空单位DimensionalAnalysis
和UnitConversion
特性。
当DimensionalAnalysis
和UnitConversion
都是假
,不使用单位。然而,SimBiology仍然通过最小的维度分析来决定反应速率是在量/时间还是在浓度/时间的维度上。
当DimensionalAnalysis
是真正的
和UnitConversion
是假
,单元(如果不是空的)必须具有一致的维度,以便SimBiology能够执行维度分析。然而,单位没有被转换。
当UnitConversion
被设置为真正的
(需要DimensionalAnalysis
是真正的
), SimBiology执行量纲分析并将一切转换为一致的单位。因此,您必须指定一致的单元,并且任何单元都不能是空的。如果你有一个无量纲参数,你仍然必须设置它的单位无量纲的
。
如果你有一个自定义函数和UnitConversion
,请遵循下面的建议。
无量纲化传递给函数的参数,如果它们不是无量纲的。
假设您有一个自定义函数定义为y = f (t)
在哪里t
时间是一小时一小时吗y
是一种物质的浓度,单位是摩尔/升。当你在你的模型中使用这个函数来定义一个重复的分配规则,例如,定义它为:s1 = f(时间/ t0) * s0
,在那里时间
为模拟时间,t0
是定义为1.0小时的参数,s0
参数是否定义为1.0 mol /ls1
是一种物质的浓度,单位是摩尔/升。请注意,时间
和s1
不需要在相同的单位t0
和s0
,但它们必须在维度上一致。例如,时间
和s1
单位可分别设置为分钟和皮摩尔/升。
这个示例展示了如何检索和设置DimensionalAnalysis
从默认真正的
来假
在模型对象的默认配置中设置。
导入模型。
modelObj = sbmlimport (“振荡器”)
SimBiology模型-振荡器模型组成:模型:0参数:0反应:42规则:0种:23
检索configset
模型对象的对象。
configsetObj = getconfigset(modelObj)配置设置-默认(活动)SolverType: ode15s StopTime: 10.000000 SolverOptions:绝对公差:1.000000e-006 RelativeTolerance: 1.000000e-003 RuntimeOptions: StatesToLog:所有编译选项:UnitConversion:真维度分析:真
检索CompileOptions
对象。
optionsObj =得到(configsetObj,“CompileOptions”编译设置:单位转换:真维度分析:真
赋值假
来DimensionalAnalysis
。
集(optionsObj,“DimensionalAnalysis”假)