繁体   English   中英

`pint` 中派生维度中数量的标准格式

[英]Standard format for quantity in derived dimension in `pint`

TLDR:我希望在默认情况下将特定(派生)维度中的pint数量转换为预设单位。


细节:

我处理 5 个维度,如下所述。 请注意,[power](通常以 MW 为单位)和 [price](通常以 Eur/MWh 为单位)是派生的维度。

# units.txt

# Base dimensions and their units
hour = [time] = h = hr
megawatthour = [energy] = MWh
euro = [currency] = Eur = €

# Derived dimensions and their units
[power] = [energy] / [time]
megawatt = megawatthour / hour = MW
[price] = [currency] / [energy]
euro_per_MWh = euro / megawatthour  = Eur/MWh

我的问题:是否可以指定尺寸为 [power] 的计算量默认转换为 MW?


下面是一个例子:

import pint

ureg = pint.UnitRegistry("units.txt",)
ureg.default_format = ".0f~P"

energy = 100 * ureg.MWh
time = 4 * ureg.h
revenue = 4000 * ureg.euro

price = revenue / energy
power = energy / time

print(energy, time, revenue, price, power) 
# 100 MWh 4 h 4000 Eur 40 Eur/MWh 25 MWh/h

在这里,功率以MWh/h表示,因为它的计算方式,我可以通过调用power.to('MW')将其“转换”为MW 每次计算此维度中的数量时是否可以自动执行此操作?

请注意,对所有数量执行一揽子.to_base_units()会将其恢复为MWh/h

评论:

  • 我不想使用 [power] 作为基本维度。 无论如何,它会将问题转移到价格上。
  • 我知道前缀; 我只是把它们留在这里是为了使示例尽可能简短。

问题是 MWh 在units.txt文件中被定义为基本单位,而不是使用 MW 作为基本单位并从 MW 和小时构建 MWh。 一旦单元构造被排序, .to_base_units()将产生所需的结果。

# units-2.txt

# Base dimensions and their units
hour = [time] = h = hr
megawatt = [power] = MW 
euro = [currency] = Eur = €

# Derived dimensions and their units
[energy] = [power] * [time]
megawatthour = megawatt * hour = MWh
[price] = [currency] / [energy]
euro_per_MWh = euro / megawatthour  = Eur/MWh
>>> def test_defs(file):
...     ureg = pint.UnitRegistry(file,)
...     ureg.default_format = ".0f~P"
...     
...     energy = 100 * ureg.MWh
...     time = 4 * ureg.h
...     revenue = 4000 * ureg.euro
...     
...     price = revenue / energy
...     power = energy / time
...     
...     print(energy, time, revenue, price, power) 
...     print(power.to('MW'))
...     print(power.to_base_units())
... 
>>> test_defs("units.txt")
100 MWh 4 h 4000 Eur 40 Eur/MWh 25 MWh/h
25 MW
25 MWh/h
>>> test_defs("units-2.txt")
100 MWh 4 h 4000 Eur 40 Eur/MWh 25 MWh/h
25 MW
25 MW
>>> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM