声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2597|回复: 4

[Python] uniUnit - 统一单位系统的程序包

[复制链接]
发表于 2014-11-27 16:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本帖最后由 mayaview 于 2014-11-27 18:35 编辑

@Rainyboy 版主大人,你好!好久没来了,这两天写了个小程序,觉得挺有意思,发来大家看看,本来是有限元相关的,但是好像没有合适的板块可以发,就灌水灌到你这来了!^_^


有限元和类似计算方法往往是无量纲的,而实际的计算是需要一个量纲的,因此计算人员必须保证模型中量的量纲是一致的。这是一个很繁杂的工作,大部分计算人员都或多或少的在这个问题上犯过错误。因此,在这里我写了一个程序包来彻底的解决这个问题。

这个程序包的想法很简单。首先,你需要告诉我你想要的量纲系统。其次,你需要告诉我一个正确的量。然后一切就搞定了,程序包会返回在你指定的量纲系统中量的值是多少。

这里是几个例子:

from uniunit import *
conv_dict = {'kg':'g','m':'mm','s':'s',
                        'A':'mA','K':'K','mol':'mol','cd':'cd'}
myunit = uniUnit(conv_dict)

myunit.to_unit(100 * kg)
# 100000.0 [g]
哈,这样的功能有谁会需要,太简单了!好吧,那下面这个例子怎么样呢?

myunit.to_unit(J)
# 1000000000.0 [g.mm2/s2]

myunit.to_unit(W/m/m)
# 1000.0 [g/mm0.s3]

W/m/m == kg/s/s/s
# True
或者,如果你是个纳米科学专家,你可能喜欢用纳米为单位的量。

conv_dict = {'kg':'ug','m':'nm','s':'ps',
                        'A':'mA','K':'K','mol':'mol','cd':'cd'}
myunit1 = uniUnit(conv_dict)

myunit1.to_unit(2E11*Pa)
# 2e-13 [ug/nm.ps2]
还是很简单吗?那如果不是国际单位制呢?试试告诉我1 W/m/m在pound, inch, min的量纲系统中是多少?

conv_dict = {'kg':'pound','m':'inch','s':'min'}
myunit2 = uniUnit(conv_dict)

myunit2.to_unit(W/m/m)
# 476198.486319 [pound/inch0.min3]

1*W/m/m - 476198.486319*pound/min**3
#  7.04547531427e-13 [W/m2]
备注:

你不需要提供整个量纲对应表,只需要提供你需要用到的那些;
但是,你必须提供你需要用到的所有量纲的对应表,因为对应表是没有默认值的;
你还可以用自定义的量纲系统。这里是一个例子:
Long = unum.Unum.unit('Long',1000*km)
Flash = unum.Unum.unit('Flash',1*ms)

conv_dict = {'m':'Long','s':'Flash'}

myunit3 = uniUnit(conv_dict)

myunit3.to_unit(m)
# 1e-06 [Long]

myunit3.to_unit(9.8 * m/s**2)
# 9.8e-12 [Long/Flash2]
在你开始之前,下面这些内容可能你会感兴趣:

1 [T] 不是 1000 [kg], 而是 1 特斯拉;
in 是Python的保留字,不能用来作为单位。
库的依赖关系
unum - 你可以用 easy_install unum安装它

程序包刚写出来,还没有Release的版本,有人有兴趣吗?欢迎对程序的功能提意见和建议!



评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2014-11-27 20:43 | 显示全部楼层
本帖最后由 Rainyboy 于 2014-11-27 13:48 编辑

欢迎欢迎!
看来这个库是自己写的了?

这个功能应该还是挺有用的。

虽然我个人还是习惯事先自己把参数的单位都确认好。


 楼主| 发表于 2014-11-28 12:52 | 显示全部楼层
Rainyboy 发表于 2014-11-27 20:43
欢迎欢迎!
看来这个库是自己写的了?

很奇怪没有现成的库实现这种简单的功能,每次换算单位都要找换算表对着换。
发表于 2014-11-28 22:57 | 显示全部楼层
mayaview 发表于 2014-11-28 05:52
很奇怪没有现成的库实现这种简单的功能,每次换算单位都要找换算表对着换。

可不就是自己换算嘛
发表于 2014-12-18 13:45 | 显示全部楼层
每次分析时都先想好单位再建模,这个挺好的
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 07:15 , Processed in 0.075933 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表