国际单位制和数量库
siquant的Python项目详细描述
siquant是一个简单的纯python 3库,可以让维度分析变得轻松。
开始
维度分析
>>> fromsiquant.systemsimportsi>>> force=100*si.kilonewtons>>> moment_arm=50*si.meters>>> torque=force*moment_arm>>> torque.quantity5000 >>> str(torque.units)'1000*kg**1*m**2*s**-2' >>> torque.get_as(si.newtons*si.meters)5000000.0 >>> torque.get_as(si.newtons)Traceback (most recent call last): ...siquant.exceptions.UnitMismatchError: ...>>> torque=torque.cvt_to(si.newtons*si.meters)>>> torque.quantity5000000.0 >>> str(torque.units)'1*kg**1*m**2*s**-2'
验证
>>> fromsiquant.dimensionsimportforce,area,stress>>> fromsiquant.systemsimportsi>>> defnormal_stress(force_q,area_q):... assertforce_q.is_of(force)... assertarea_q.is_of(area)... returnforce_q/area_q>>> stress_q=normal_stress(1*si.newtons,1*si.meters**2)>>> stress_q.is_of(stress)True >>> stress_q.is_of(area)False
有时可能需要检查默认情况下未提供的维度。
>>> fromsiquant.dimensionsimportSIDimensions>>> fromsiquant.systemsimportsi>>> new_dim=SIDimensions(kg=1,m=1,s=1,k=1,a=1,mol=1,cd=1)>>> dist_q=1*si.meters>>> dist_q.is_of(new_dim)False
标准化
>>> fromsiquantimportScalarQuantity>>> fromsiquant.systemsimportsi>>> meters_cvt=ScalarQuantity.As(si.meters)>>> dist_q=meters_cvt(1000*si.millimeters)>>> dist_q.quantity1 >>> dist_q=meters_cvt(1000*si.meters)>>> dist_q.quantity1000 >>> dist_q=meters_cvt(1000)>>> dist_q.quantity1000
新单位
SIUnit可由工厂直接创建:
>>> fromsiquant.unitsimportSIUnit>>> fathom=SIUnit.Unit(1.8288,m=1)SIUnit(1.8288, (0, 1, 0, 0, 0, 0, 0))
或者可以导出:
>>> fromsiquant.systemsimportsi>>> rpm=si.unity/si.minutes>>> rpmSIUnit(0.016667, (0, 0, -1, 0, 0, 0, 0))