1、概述
工程师在仿真过程中常需要处理各种不同物理量的数据,例如长度、时间、质量、力、速度、加速度、应力、能量等,每种物理量有其特定的量纲和单位,然而这些单位之间都有相互的联系。实际上,恰当地规定一些基本的单位(称为基本单位),可以使任何其他的单位(称为导出单位)都表达为这些单位的乘积,将其统一以便于表示各个物理量之间的关系。基本单位可以人为选取,从而形成不同的单位制,如英制、国际单位制等。以国际单位制为例,其选取了七个基本单位:即:长度(),质量(),时间(),电流(),温度(),物质的量(),发光强度()。
物理量单位是仿真中不可或缺的一部分,同一个物理量采用不同单位时其数值是不同的,工程师常会需要花费大量时间进行各种单位制之间的换算。SimManager提供了完善的单位定义系统,默认支持英制及国际单位制两种常用单位制,可以在界面中自动完成单位转换。用户也可以根据需要通过修改配置文件定义自己的单位。SimManager的单位制在UnitsModule.xml配置文件中定义,下面对SimManager中的单位定义进行简要介绍。
2、单位定义方式
SimManager的单位制在UnitsModule.xml配置文件中定义。UnitsModule.xml中主要包括<UnitsFamily>、<QuantityType>和<UnitsSystem>三部分定义。
每个<UnitsFamily>元素定义了可用于度量的一族单位的基本单位。<UnitsFamily>元素可以包含name、siUnitName、siUnitLabel、length、mass、time等属性,分别对应了该<UnitsFamily>的名称、国际单位制名称、国际单位制标签、长度指数、质量指数、时间指数等。<UnitsFamily>元素可以包含<Unit>元素,用于定义同族其他单位及其相对于本族单位的转换关系。以加速度这族< UnitsFamily >为例:
<UnitsFamily name="Acceleration" siUnitName="m_per_s__2" siUnitLabel="m/s^2" length="1" time="-2" >
<Unit name="g" multiplier="9.81" />
<Unit name="mm_per_ms__2" label="mm/ms^2" baseUnit="m_per_s__2" multiplier="1.0e+03" />
<Unit name="mm_per_s__2" label="mm/s^2" baseUnit="m_per_s__2" divisor="1.0e+03" />
</UnitsFamily>
其中<UnitsFamily>元素定义了名为Acceleration,国际单位制名称为m_per_s__2,国际单位制标签为m/s^2,与国际单位制基本单位换算关系为Acceleration=length^1*time^2 (m_per_s__2=m/s^2,也即长度的一次方乘以时间的负二次方)的加速度基本单位。而三个<Unit>元素则以加速度基本单位为基础,进一步定义了三个加速度常用单位:
g=9.81*m_per_s__2,
mm_per_s__2= m_per_s__2/1.0e+03
<Unit>元素可以包含name、label、baseUnit、multiplier、divisor、offset、scale等属性,其所定义的单位y与本族其他单位(由baseUnit定义,默认为本族基本单位)x。之间的换算公式为:
y = ((multiplier*x/divisor) + offset)*10^scale
<QuantityType>元素用于定义物理量并指定物理量适用哪一族(由<UnitsFamily>定义的)单位。<QuantityType>元素可以包含name和family元素。例如:
<QuantityType name="Acceleration" family="Acceleration" />
定义了名为Acceleration的物理量,其单位为上面<UnitsFamily>中定义的Acceleration一族单位。
<UnitsSystem>元素用于定义常用的单位制,可以包含name属性及<QuantityUnits>元素。<QuantityUnits>定义该单位制下的物理量及其默认单位,可以包含quantityType和units属性。例如:
<UnitsSystem name="SI_CONSISTENT">
<QuantityUnits quantityType="Acceleration" units="m_per_s__2" />
......
</UnitsSystem>
定义了名为SI_CONSISTENT的单位制,其中物理量Acceleration的默认单位为m_per_s__2。