-
Notifications
You must be signed in to change notification settings - Fork 66
Expand file tree
/
Copy pathunit_conversion.py
More file actions
executable file
·206 lines (158 loc) · 5.4 KB
/
unit_conversion.py
File metadata and controls
executable file
·206 lines (158 loc) · 5.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
#!/usr/bin/env python3
"""A pilot version to perform unit conversions. Each conversion must be representable
as a formula where {var} is substituted by the actual variable (scalar, array) to convert,
and {kind} by either _ followed by the kind of the variable, or an emptry string.
This allows having formulars such as func({var}) where func is defined as an elemental
function or as an interface to scalar and array-based functions that perform more
complex conversions than the ones listed here. It is also possible, but in some cases
less performant, to construct conversions for composed units by combining some of the
basic conversions listed here. For instance, one could create a speed conversion from
km h-1 to m s-1 by combining the formulas for km to m and h to min, which will be
slower than boiling it down to a single mathematical expression (see example below)."""
############
# Length #
############
def mm__to__m():
"""Convert millimeter to meter"""
return '1.0E-3{kind}*{var}'
def m__to__mm():
"""Convert meter to millimeter"""
return '1.0E+3{kind}*{var}'
def cm__to__m():
"""Convert centimeter to meter"""
return '1.0E-2{kind}*{var}'
def m__to__cm():
"""Convert meter to centimeter"""
return '1.0E+2{kind}*{var}'
def um__to__m():
"""Convert micrometer to meter"""
return '1.0E-6{kind}*{var}'
def m__to__um():
"""Convert meter to micrometer"""
return '1.0E+6{kind}*{var}'
def m__to__km():
"""Convert meter to kilometer"""
return '1.0E-3{kind}*{var}'
def km__to__m():
"""Convert kilometer to meter"""
return '1.0E+3{kind}*{var}'
def mm__to__km():
"""Convert millimeter to kilometer"""
return '1.0E-6{kind}*{var}'
def km__to__mm():
"""Convert kilometer to millimeter"""
return '1.0E+6{kind}*{var}'
############
# Time #
############
def s__to__min():
"""Convert second to minute"""
return '{var}/6.0E+1{kind}'
def min__to__s():
"""Convert minute to second"""
return '6.0E+1{kind}*{var}'
def s__to__h():
"""Convert second to hour"""
return '{var}/3.6E+3{kind}'
def h__to__s():
"""Convert hour to second"""
return '3.6E+3{kind}*{var}'
def h__to__d():
"""Convert hour to day"""
return '{var}/2.4E+1{kind}'
def d__to__h():
"""Convert day to hour"""
return '2.4E+1{kind}*{var}'
def s__to__d():
"""Convert second to day"""
return '{var}/8.64E+4{kind}'
def d__to__s():
"""Convert day to second"""
return '8.64E+4{kind}*{var}'
##################
# Temperature #
##################
def K__to__C():
"""Convert Kelvin to Celcius"""
return '{var}-273.15{kind}'
def C__to__K():
"""Convert Celcius to Kelvin"""
return '{var}+273.15{kind}'
##################
# Mass #
##################
def kg_kg_minus_1__to__g_kg_minus_1():
"""Convert kilogram per kilogram to gram per kilogram"""
return '1.0E+3{kind}*{var}'
def g_kg_minus_1__to__kg_kg_minus_1():
"""Convert gram per kilogram to kilogram per kilogram"""
return '1.0E-3{kind}*{var}'
##################
# Plane angle #
##################
def radian__to__degree():
"""Convert radian to degree"""
return '57.295779513{kind}*{var}'
def degree__to__radian():
"""Convert degree to radian"""
return '{var}/57.295779513{kind}'
def radian__to__degree_north():
"""Convert radian to degree north"""
return radian__to__degree()
def degree_north__to__radian():
"""Convert degree north to radian"""
return degree__to__radian()
def radian__to__degree_east():
"""Convert radian to degree east"""
return radian__to__degree()
def degree_east__to__radian():
"""Convert degree east to radian"""
return degree__to__radian()
##################
# Composed units #
##################
def Pa__to__hPa():
"""Convert Pascal to Hectopascal"""
return '1.0E-2{kind}*{var}'
def hPa__to__Pa():
"""Convert Hectopascal to Pascal"""
return '1.0E+2{kind}*{var}'
def m_s_minus_1__to__km_h_minus_1():
"""Convert meter per second to kilometer per hour. A more expensive
and less accurate option would be to combine the above conversions
for meter to kilometer and second to hours into the following formula:
'({0})/({1})'.format(m__to__km(),s__to__h()) + '*{var}'"""
return '3.6E+0{kind}*{var}'
def km_h_minus_1__to__m_s_minus_1():
"""Convert kilometer per hour to meter per second. A more expensive
and less accurate option would be to combine the above conversions
for kilometer to meter and hours to second into the following formula:
'({0})/({1})'.format(km__to__m(),h__to__s()) + '*{var}'"""
return '{var}/3.6E+0{kind}'
def W_m_minus_2__to__erg_cm_minus_2_s_minus_1():
"""Convert Watt per square meter to erg per square centimeter and second."""
return '1.0E+3{kind}*{var}'
def erg_cm_minus_2_s_minus_1__to__W_m_minus_2():
"""Convert erg per square centimeter and second to Watt per square meter"""
return '1.0E-3{kind}*{var}'
####################
# Equivalent units #
####################
def m_plus_2_s_minus_2__to__J_kg_minus_1():
"""Equivalent units"""
return '{var}'
def J_kg_minus_1__to__m_plus_2_s_minus_2():
"""Equivalent units"""
return '{var}'
def V_A__to__W():
"""Equivalent units"""
return '{var}'
def W__to__V_A():
"""Equivalent units"""
return '{var}'
def N_m_minus_2__to__Pa():
"""Equivalent units"""
return '{var}'
def Pa__to__N_m_minus_2():
"""Equivalent units"""
return '{var}'