如何模拟依赖于基础物质的措施

时间:2015-05-27 02:11:38

标签: oop smalltalk

我在Aconcagua中使用Pharo测量库。我使用它来模拟天和公里等事情已经取得了很大的成功,但遇到了一个有趣的问题,即单位之间的转换需要有关被测物质的信息。以千克/立方米为单位表示空气中物质含量的公式,单位为百万分之一:

PPM = mg/m^3 x 24.45 / molecularWeight;其中mw是材料的分子量。

我想象的用法如下: tlvCO := carbonMonoxide tlv. "returns the Threshold limit Value as 29 mg/m3" ... tlvCO convertTo: PPM "where PPM is an Aconcagua unit"

问题在于,虽然我在Aconcagua中看到的测量示例中包含了转换所需的所有信息,但在这种情况下,您必须知道被测物质的分子量。因此mg/m3 -> ppm本身并不具有意义。一个正确形成的问题是mg/m3 of ammonia -> ppm

我的直觉是:

  1. 创建一个像MaterialQuantity这样的新类,它有一个材料和一个度量,或者
  2. 创建一个具有材质的特殊单元子类
  3. 但我没有100%销售,并希望得到一些意见......

2 个答案:

答案 0 :(得分:1)

我认为分子量不是单位的一部分,而是计算的一部分,比如24.45(不清楚,但似乎是你考虑的空气分子质量的平均值)。

我不确定ppm是否可以转换为密度单位,因为它们属于不同的域。

答案 1 :(得分:0)

据我所知,你需要将tlv作为一个复合单元或公式来实现,你可以要求提供元素。然后你可以简单地做一些像[:tlv | tlv *(24.45 / tlv element)]