qnty 0.0.8__py3-none-any.whl → 0.0.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qnty/__init__.py +140 -58
- qnty/_backup/problem_original.py +1251 -0
- qnty/_backup/quantity.py +63 -0
- qnty/codegen/cli.py +125 -0
- qnty/codegen/generators/data/unit_data.json +8807 -0
- qnty/codegen/generators/data_processor.py +345 -0
- qnty/codegen/generators/dimensions_gen.py +434 -0
- qnty/codegen/generators/doc_generator.py +141 -0
- qnty/codegen/generators/out/dimension_mapping.json +974 -0
- qnty/codegen/generators/out/dimension_metadata.json +123 -0
- qnty/codegen/generators/out/units_metadata.json +223 -0
- qnty/codegen/generators/quantities_gen.py +159 -0
- qnty/codegen/generators/setters_gen.py +178 -0
- qnty/codegen/generators/stubs_gen.py +167 -0
- qnty/codegen/generators/units_gen.py +295 -0
- qnty/codegen/generators/utils/__init__.py +0 -0
- qnty/equations/__init__.py +4 -0
- qnty/{equation.py → equations/equation.py} +78 -118
- qnty/equations/system.py +127 -0
- qnty/expressions/__init__.py +61 -0
- qnty/expressions/cache.py +94 -0
- qnty/expressions/functions.py +96 -0
- qnty/{expression.py → expressions/nodes.py} +209 -216
- qnty/generated/__init__.py +0 -0
- qnty/generated/dimensions.py +514 -0
- qnty/generated/quantities.py +6003 -0
- qnty/generated/quantities.pyi +4192 -0
- qnty/generated/setters.py +12210 -0
- qnty/generated/units.py +9798 -0
- qnty/problem/__init__.py +91 -0
- qnty/problem/base.py +142 -0
- qnty/problem/composition.py +385 -0
- qnty/problem/composition_mixin.py +382 -0
- qnty/problem/equations.py +413 -0
- qnty/problem/metaclass.py +302 -0
- qnty/problem/reconstruction.py +1016 -0
- qnty/problem/solving.py +180 -0
- qnty/problem/validation.py +64 -0
- qnty/problem/variables.py +239 -0
- qnty/quantities/__init__.py +6 -0
- qnty/quantities/expression_quantity.py +314 -0
- qnty/quantities/quantity.py +428 -0
- qnty/quantities/typed_quantity.py +215 -0
- qnty/solving/__init__.py +0 -0
- qnty/solving/manager.py +90 -0
- qnty/solving/order.py +355 -0
- qnty/solving/solvers/__init__.py +20 -0
- qnty/solving/solvers/base.py +92 -0
- qnty/solving/solvers/iterative.py +185 -0
- qnty/solving/solvers/simultaneous.py +547 -0
- qnty/units/__init__.py +0 -0
- qnty/{prefixes.py → units/prefixes.py} +54 -33
- qnty/{unit.py → units/registry.py} +73 -32
- qnty/utils/__init__.py +0 -0
- qnty/utils/logging.py +40 -0
- qnty/validation/__init__.py +0 -0
- qnty/validation/registry.py +0 -0
- qnty/validation/rules.py +167 -0
- qnty-0.0.9.dist-info/METADATA +199 -0
- qnty-0.0.9.dist-info/RECORD +63 -0
- qnty/dimension.py +0 -186
- qnty/unit_types/base.py +0 -47
- qnty/units.py +0 -8113
- qnty/variable.py +0 -300
- qnty/variable_types/base.py +0 -58
- qnty/variable_types/expression_variable.py +0 -106
- qnty/variable_types/typed_variable.py +0 -87
- qnty/variables.py +0 -2298
- qnty/variables.pyi +0 -6148
- qnty-0.0.8.dist-info/METADATA +0 -355
- qnty-0.0.8.dist-info/RECORD +0 -19
- /qnty/{unit_types → codegen}/__init__.py +0 -0
- /qnty/{variable_types → codegen/generators}/__init__.py +0 -0
- {qnty-0.0.8.dist-info → qnty-0.0.9.dist-info}/WHEEL +0 -0
@@ -0,0 +1,514 @@
|
|
1
|
+
"""
|
2
|
+
Dimension System
|
3
|
+
================
|
4
|
+
|
5
|
+
Compile-time dimensional analysis using type system for ultra-fast operations.
|
6
|
+
|
7
|
+
This file is auto-generated by codegen/generators/dimensions_gen.py
|
8
|
+
DO NOT EDIT MANUALLY - changes will be overwritten.
|
9
|
+
"""
|
10
|
+
|
11
|
+
from dataclasses import dataclass
|
12
|
+
from enum import IntEnum
|
13
|
+
from typing import ClassVar, final
|
14
|
+
|
15
|
+
|
16
|
+
class BaseDimension(IntEnum):
|
17
|
+
"""Base dimensions as prime numbers for efficient bit operations."""
|
18
|
+
LENGTH = 2
|
19
|
+
MASS = 3
|
20
|
+
TIME = 5
|
21
|
+
CURRENT = 7
|
22
|
+
TEMPERATURE = 11
|
23
|
+
AMOUNT = 13
|
24
|
+
LUMINOSITY = 17
|
25
|
+
DIMENSIONLESS = 1 # Must be 1 to act as multiplicative identity
|
26
|
+
|
27
|
+
|
28
|
+
@final
|
29
|
+
@dataclass(frozen=True, slots=True)
|
30
|
+
class DimensionSignature:
|
31
|
+
"""Immutable dimension signature for zero-cost dimensional analysis."""
|
32
|
+
|
33
|
+
# Store as bit pattern for ultra-fast comparison
|
34
|
+
_signature: int | float = 1
|
35
|
+
|
36
|
+
# Pre-computed signature cache for common dimensions
|
37
|
+
_COMMON_SIGNATURES: ClassVar[dict[tuple[int, ...], int | float]] = {
|
38
|
+
(0, 0, 0, 0, 0, 0, 0): 1, # Dimensionless
|
39
|
+
(-1, 0, 0, 0, 0, 0, 0): 0.5, # L^-1
|
40
|
+
(0, 0, -1, 0, 0, 0, 0): 0.2, # T^-1
|
41
|
+
(0, 0, 0, 0, 0, 0, 1): 17, # J
|
42
|
+
(0, 0, 0, 0, 0, 1, 0): 13, # N
|
43
|
+
(0, 0, 0, 0, 1, 0, 0): 11, # Θ
|
44
|
+
(0, 0, 0, 1, 0, 0, 0): 7, # A
|
45
|
+
(0, 0, 1, 0, 0, 0, 0): 5, # T
|
46
|
+
(0, 1, 0, 0, 0, 0, 0): 3, # M
|
47
|
+
(1, 0, 0, 0, 0, 0, 0): 2, # L
|
48
|
+
(-2, 0, 0, 0, 0, 0, 0): 0.25, # L^-2 L
|
49
|
+
(-1, 0, 0, 1, 0, 0, 0): 3.5, # A L^-1
|
50
|
+
(-1, 1, 0, 0, 0, 0, 0): 1.5, # L^-1 M
|
51
|
+
(0, -1, 0, 0, 0, 1, 0): 4.333333333, # N M^-1
|
52
|
+
(0, 0, -2, 0, 0, 0, 0): 0.04, # T^-2
|
53
|
+
(0, 0, -1, 0, 0, 1, 0): 2.6, # N T^-1
|
54
|
+
(0, 1, -1, 0, 0, 0, 0): 0.6, # M T^-1
|
55
|
+
(0, 1, 0, 0, 0, -1, 0): 0.2307692308, # N^-1 M
|
56
|
+
(1, -1, 0, 0, 0, 0, 0): 0.6666666667, # L M^-1
|
57
|
+
(1, 0, -1, 0, 0, 0, 0): 0.4, # L T^-1
|
58
|
+
(1, 0, 0, 0, 1, 0, 0): 22, # L Θ
|
59
|
+
(2, 0, 0, 0, 0, 0, 0): 4, # L^2
|
60
|
+
(-3, 0, 0, 0, 0, 0, 0): 0.125, # L^-3
|
61
|
+
(-2, 0, -1, 0, 0, 0, 0): 0.05, # L^-2 T^-1
|
62
|
+
(-2, 1, 0, 0, 0, 0, 0): 0.75, # L^-2 M
|
63
|
+
(-1, 1, -1, 0, 0, 0, 0): 0.3, # L^-1 M T^-1
|
64
|
+
(0, -1, 1, 1, 0, 0, 0): 11.66666667, # A M^-1 T
|
65
|
+
(0, 0, 1, 1, 0, -1, 0): 2.692307692, # N^-1 A T
|
66
|
+
(0, 1, -2, 0, 0, 0, 0): 0.12, # M T^-2
|
67
|
+
(1, -1, 1, 0, 0, 0, 0): 3.333333333, # L M^-1 T
|
68
|
+
(1, 0, -2, 0, 0, 0, 0): 0.08, # L T^-2
|
69
|
+
(1, 0, 1, 1, 0, 0, 0): 70, # A L T
|
70
|
+
(1, 1, -1, 0, 0, 0, 0): 1.2, # L M T^-1
|
71
|
+
(2, -1, 0, 0, 0, 0, 0): 1.333333333, # L^2 M^-1
|
72
|
+
(2, 0, -1, 0, 0, 0, 0): 0.8, # L^2 T^-1
|
73
|
+
(2, 0, 0, 1, 0, 0, 0): 28, # A L^2
|
74
|
+
(2, 1, 0, 0, 0, 0, 0): 12, # L^2 M
|
75
|
+
(3, 0, 0, 0, 0, 0, 0): 8, # L^3
|
76
|
+
(-3, 0, 0, 0, 0, 1, 0): 1.625, # N L^-3
|
77
|
+
(-3, 1, 0, 0, 0, 0, 0): 0.375, # L^-3 M
|
78
|
+
(-2, 0, -1, 0, 0, 1, 0): 0.65, # N L^-2 T^-1
|
79
|
+
(-2, 1, -1, 0, 0, 0, 0): 0.15, # L^-2 M T^-1
|
80
|
+
(-1, 1, -2, 0, 0, 0, 0): 0.06, # L^-1 M T^-2
|
81
|
+
(0, 1, -3, 0, 0, 0, 0): 0.024, # M T^-3
|
82
|
+
(0, 1, -2, -1, 0, 0, 0): 0.01714285714, # A^-1 M T^-2
|
83
|
+
(1, 1, -2, 0, 0, 0, 0): 0.24, # L M T^-2
|
84
|
+
(2, 0, -2, 0, 0, 0, 0): 0.16, # L^2 T^-2
|
85
|
+
(2, 1, -1, 0, 0, 0, 0): 2.4, # L^2 M T^-1
|
86
|
+
(3, -1, 0, 0, 0, 0, 0): 2.666666667, # L^3 M^-1
|
87
|
+
(3, 0, -1, 0, 0, 0, 0): 1.6, # L^3 T^-1
|
88
|
+
}
|
89
|
+
|
90
|
+
# Instance cache for interning common dimensions
|
91
|
+
_INSTANCE_CACHE: ClassVar[dict[int | float, "DimensionSignature"]] = {}
|
92
|
+
|
93
|
+
def __new__(cls, signature: int | float = 1):
|
94
|
+
"""Optimized constructor with instance interning."""
|
95
|
+
if signature in cls._INSTANCE_CACHE:
|
96
|
+
return cls._INSTANCE_CACHE[signature]
|
97
|
+
|
98
|
+
instance = object.__new__(cls)
|
99
|
+
|
100
|
+
# Cache common signatures
|
101
|
+
if len(cls._INSTANCE_CACHE) < 100: # Limit cache size
|
102
|
+
cls._INSTANCE_CACHE[signature] = instance
|
103
|
+
|
104
|
+
return instance
|
105
|
+
|
106
|
+
@classmethod
|
107
|
+
def create(cls, length=0, mass=0, time=0, current=0, temp=0, amount=0, luminosity=0):
|
108
|
+
"""Create dimension from exponents with optimized lookup."""
|
109
|
+
# Check cache first
|
110
|
+
key = (length, mass, time, current, temp, amount, luminosity)
|
111
|
+
if key in cls._COMMON_SIGNATURES:
|
112
|
+
return cls(cls._COMMON_SIGNATURES[key])
|
113
|
+
|
114
|
+
# Fast path for dimensionless
|
115
|
+
if not any([length, mass, time, current, temp, amount, luminosity]):
|
116
|
+
return cls(1)
|
117
|
+
|
118
|
+
# Compute signature
|
119
|
+
signature = 1
|
120
|
+
if length != 0:
|
121
|
+
signature *= BaseDimension.LENGTH ** length
|
122
|
+
if mass != 0:
|
123
|
+
signature *= BaseDimension.MASS ** mass
|
124
|
+
if time != 0:
|
125
|
+
signature *= BaseDimension.TIME ** time
|
126
|
+
if current != 0:
|
127
|
+
signature *= BaseDimension.CURRENT ** current
|
128
|
+
if temp != 0:
|
129
|
+
signature *= BaseDimension.TEMPERATURE ** temp
|
130
|
+
if amount != 0:
|
131
|
+
signature *= BaseDimension.AMOUNT ** amount
|
132
|
+
if luminosity != 0:
|
133
|
+
signature *= BaseDimension.LUMINOSITY ** luminosity
|
134
|
+
|
135
|
+
return cls(signature)
|
136
|
+
|
137
|
+
def __mul__(self, other):
|
138
|
+
"""Multiply dimensions."""
|
139
|
+
return DimensionSignature(self._signature * other._signature)
|
140
|
+
|
141
|
+
def __truediv__(self, other):
|
142
|
+
"""Divide dimensions."""
|
143
|
+
return DimensionSignature(self._signature / other._signature)
|
144
|
+
|
145
|
+
def __pow__(self, power):
|
146
|
+
"""Raise dimension to a power."""
|
147
|
+
if power == 1:
|
148
|
+
return self
|
149
|
+
if power == 0:
|
150
|
+
return DimensionSignature(1)
|
151
|
+
return DimensionSignature(self._signature ** power)
|
152
|
+
|
153
|
+
def is_compatible(self, other):
|
154
|
+
"""Check dimensional compatibility."""
|
155
|
+
return self._signature == other._signature
|
156
|
+
|
157
|
+
def __eq__(self, other):
|
158
|
+
"""Check equality."""
|
159
|
+
if self is other:
|
160
|
+
return True
|
161
|
+
return isinstance(other, DimensionSignature) and self._signature == other._signature
|
162
|
+
|
163
|
+
def __hash__(self):
|
164
|
+
"""Hash based on signature."""
|
165
|
+
return hash(self._signature)
|
166
|
+
|
167
|
+
|
168
|
+
# Pre-computed dimension signatures for all dimensions
|
169
|
+
_DIMENSION_SIGNATURES = {
|
170
|
+
"ABSORBED_DOSE": 0.16, # L^2 T^-2
|
171
|
+
"ACCELERATION": 0.08, # L T^-2
|
172
|
+
"ACTIVATION_ENERGY": 0.01230769231, # N^-1 L^2 T^-2
|
173
|
+
"AMOUNT": 13, # N
|
174
|
+
"AMOUNT_OF_SUBSTANCE": 13, # N
|
175
|
+
"ANGLE_PLANE": 1, # Dimensionless
|
176
|
+
"ANGLE_SOLID": 1, # Dimensionless
|
177
|
+
"ANGULAR_ACCELERATION": 0.04, # T^-2
|
178
|
+
"ANGULAR_MOMENTUM": 2.4, # L^2 M T^-1
|
179
|
+
"AREA": 4, # L^2
|
180
|
+
"AREA_PER_UNIT_VOLUME": 0.5, # L^-1
|
181
|
+
"ATOMIC_WEIGHT": 0.2307692308, # N^-1 M
|
182
|
+
"CONCENTRATION": 0.375, # L^-3 M
|
183
|
+
"CURRENT": 7, # A
|
184
|
+
"DIMENSIONLESS": 1, # Dimensionless
|
185
|
+
"DYNAMIC_FLUIDITY": 3.333333333, # L M^-1 T
|
186
|
+
"ELECTRICAL_CONDUCTANCE": 510.4166667, # A^2 L^-2 M^-1 T^3
|
187
|
+
"ELECTRICAL_PERMITTIVITY": 1276.041667, # A^2 L^-3 M^-1 T^4
|
188
|
+
"ELECTRICAL_RESISTIVITY": 0.003918367347, # A^-2 L^3 M T^-3
|
189
|
+
"ELECTRIC_CAPACITANCE": 2552.083333, # A^2 L^-2 M^-1 T^4
|
190
|
+
"ELECTRIC_CHARGE": 2.692307692, # N^-1 A T
|
191
|
+
"ELECTRIC_CURRENT_INTENSITY": 7, # A
|
192
|
+
"ELECTRIC_DIPOLE_MOMENT": 70, # A L T
|
193
|
+
"ELECTRIC_FIELD_STRENGTH": 0.006857142857, # A^-1 L M T^-3
|
194
|
+
"ELECTRIC_INDUCTANCE": 0.009795918367, # A^-2 L^2 M T^-2
|
195
|
+
"ELECTRIC_POTENTIAL": 0.01371428571, # A^-1 L^2 M T^-3
|
196
|
+
"ELECTRIC_RESISTANCE": 0.001959183673, # A^-2 L^2 M T^-3
|
197
|
+
"ENERGY_FLUX": 0.024, # M T^-3
|
198
|
+
"ENERGY_HEAT_WORK": 0.48, # L^2 M T^-2
|
199
|
+
"ENERGY_PER_UNIT_AREA": 0.12, # M T^-2
|
200
|
+
"FORCE": 0.24, # L M T^-2
|
201
|
+
"FORCE_BODY": 0.03, # L^-2 M T^-2
|
202
|
+
"FORCE_PER_UNIT_MASS": 0.08, # L T^-2
|
203
|
+
"FREQUENCY_VOLTAGE_RATIO": 72.91666667, # A L^-2 M^-1 T^3
|
204
|
+
"FUEL_CONSUMPTION": 0.25, # L^-2
|
205
|
+
"HEAT_OF_COMBUSTION": 0.16, # L^2 T^-2
|
206
|
+
"HEAT_OF_FUSION": 0.16, # L^2 T^-2
|
207
|
+
"HEAT_OF_VAPORIZATION": 0.16, # L^2 T^-2
|
208
|
+
"HEAT_TRANSFER_COEFFICIENT": 0.002181818182, # M Θ^-1 T^-3
|
209
|
+
"ILLUMINANCE": 0.25, # L^-2 L
|
210
|
+
"KINETIC_ENERGY_OF_TURBULENCE": 0.16, # L^2 T^-2
|
211
|
+
"LENGTH": 2, # L
|
212
|
+
"LINEAR_MASS_DENSITY": 1.5, # L^-1 M
|
213
|
+
"LINEAR_MOMENTUM": 1.2, # L M T^-1
|
214
|
+
"LUMINANCE_SELF": 0.25, # L^-2 L
|
215
|
+
"LUMINOSITY": 17, # J
|
216
|
+
"LUMINOUS_FLUX": 1, # L
|
217
|
+
"LUMINOUS_INTENSITY": 1, # L
|
218
|
+
"MAGNETIC_FIELD": 3.5, # A L^-1
|
219
|
+
"MAGNETIC_FLUX": 0.06857142857, # A^-1 L^2 M T^-2
|
220
|
+
"MAGNETIC_INDUCTION_FIELD_STRENGTH": 0.01714285714, # A^-1 M T^-2
|
221
|
+
"MAGNETIC_MOMENT": 28, # A L^2
|
222
|
+
"MAGNETIC_PERMEABILITY": 0.009795918367, # A^-2 L^2 M T^-2
|
223
|
+
"MAGNETOMOTIVE_FORCE": 7, # A
|
224
|
+
"MASS": 3, # M
|
225
|
+
"MASS_DENSITY": 0.375, # L^-3 M
|
226
|
+
"MASS_FLOW_RATE": 0.6, # M T^-1
|
227
|
+
"MASS_FLUX": 0.15, # L^-2 M T^-1
|
228
|
+
"MASS_FRACTION_OF_I": 1, # Dimensionless
|
229
|
+
"MASS_TRANSFER_COEFFICIENT": 0.15, # L^-2 M T^-1
|
230
|
+
"MOLALITY_OF_SOLUTE_I": 4.333333333, # N M^-1
|
231
|
+
"MOLARITY_OF_I": 1.625, # N L^-3
|
232
|
+
"MOLAR_CONCENTRATION_BY_MASS": 13, # N
|
233
|
+
"MOLAR_FLOW_RATE": 2.6, # N T^-1
|
234
|
+
"MOLAR_FLUX": 0.65, # N L^-2 T^-1
|
235
|
+
"MOLAR_HEAT_CAPACITY": 0.001118881119, # N^-1 L^2 Θ^-1 T^-2
|
236
|
+
"MOLE_FRACTION_OF_I": 1, # Dimensionless
|
237
|
+
"MOMENTUM_FLOW_RATE": 0.24, # L M T^-2
|
238
|
+
"MOMENTUM_FLUX": 0.06, # L^-1 M T^-2
|
239
|
+
"MOMENT_OF_INERTIA": 12, # L^2 M
|
240
|
+
"NORMALITY_OF_SOLUTION": 1.625, # N L^-3
|
241
|
+
"PARTICLE_DENSITY": 0.125, # L^-3
|
242
|
+
"PERCENT": 1, # Dimensionless
|
243
|
+
"PERMEABILITY": 4, # L^2
|
244
|
+
"PHOTON_EMISSION_RATE": 0.05, # L^-2 T^-1
|
245
|
+
"POWER_PER_UNIT_MASS": 0.032, # L^2 T^-3
|
246
|
+
"POWER_PER_UNIT_VOLUME": 0.012, # L^-1 M T^-3
|
247
|
+
"POWER_THERMAL_DUTY": 0.096, # L^2 M T^-3
|
248
|
+
"PRESSURE": 0.06, # L^-1 M T^-2
|
249
|
+
"RADIATION_DOSE_EQUIVALENT": 0.16, # L^2 T^-2
|
250
|
+
"RADIATION_EXPOSURE": 11.66666667, # A M^-1 T
|
251
|
+
"RADIOACTIVITY": 0.2, # T^-1
|
252
|
+
"SECOND_MOMENT_OF_AREA": 16, # L^4
|
253
|
+
"SECOND_RADIATION_CONSTANT_PLANCK": 22, # L Θ
|
254
|
+
"SPECIFIC_ENTHALPY": 0.16, # L^2 T^-2
|
255
|
+
"SPECIFIC_GRAVITY": 1, # Dimensionless
|
256
|
+
"SPECIFIC_HEAT_CAPACITY_CONSTANT_PRESSURE": 0.04363636364, # L^2 M Θ^-1 T^-2
|
257
|
+
"SPECIFIC_LENGTH": 0.6666666667, # L M^-1
|
258
|
+
"SPECIFIC_SURFACE": 1.333333333, # L^2 M^-1
|
259
|
+
"SPECIFIC_VOLUME": 2.666666667, # L^3 M^-1
|
260
|
+
"STRESS": 0.06, # L^-1 M T^-2
|
261
|
+
"SURFACE_MASS_DENSITY": 0.75, # L^-2 M
|
262
|
+
"SURFACE_TENSION": 0.12, # M T^-2
|
263
|
+
"TEMPERATURE": 11, # Θ
|
264
|
+
"THERMAL_CONDUCTIVITY": 0.528, # L M Θ T^-3
|
265
|
+
"TIME": 5, # T
|
266
|
+
"TORQUE": 0.48, # L^2 M T^-2
|
267
|
+
"TURBULENCE_ENERGY_DISSIPATION_RATE": 0.032, # L^2 T^-3
|
268
|
+
"VELOCITY_ANGULAR": 0.2, # T^-1
|
269
|
+
"VELOCITY_LINEAR": 0.4, # L T^-1
|
270
|
+
"VISCOSITY_DYNAMIC": 0.3, # L^-1 M T^-1
|
271
|
+
"VISCOSITY_KINEMATIC": 0.8, # L^2 T^-1
|
272
|
+
"VOLUME": 8, # L^3
|
273
|
+
"VOLUMETRIC_CALORIFIC_HEATING_VALUE": 0.06, # L^-1 M T^-2
|
274
|
+
"VOLUMETRIC_COEFFICIENT_OF_EXPANSION": 0.03409090909, # L^-3 M Θ^-1
|
275
|
+
"VOLUMETRIC_FLOW_RATE": 1.6, # L^3 T^-1
|
276
|
+
"VOLUMETRIC_FLUX": 0.4, # L T^-1
|
277
|
+
"VOLUMETRIC_MASS_FLOW_RATE": 0.075, # L^-3 M T^-1
|
278
|
+
"VOLUME_FRACTION_OF_I": 1, # Dimensionless
|
279
|
+
"WAVENUMBER": 0.5, # L^-1
|
280
|
+
}
|
281
|
+
|
282
|
+
# Lazy loading cache
|
283
|
+
_dimension_cache: dict[str, DimensionSignature] = {}
|
284
|
+
|
285
|
+
def __getattr__(name: str) -> DimensionSignature:
|
286
|
+
"""Lazy load dimension constants."""
|
287
|
+
if name in _DIMENSION_SIGNATURES:
|
288
|
+
if name not in _dimension_cache:
|
289
|
+
_dimension_cache[name] = DimensionSignature(_DIMENSION_SIGNATURES[name])
|
290
|
+
return _dimension_cache[name]
|
291
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
292
|
+
|
293
|
+
# All dimension constants generated from unit data
|
294
|
+
ABSORBED_DOSE = DimensionSignature(0.16) # L^2 T^-2
|
295
|
+
ACCELERATION = DimensionSignature(0.08) # L T^-2
|
296
|
+
ACTIVATION_ENERGY = DimensionSignature(0.01230769231) # N^-1 L^2 T^-2
|
297
|
+
AMOUNT_OF_SUBSTANCE = DimensionSignature(13) # N
|
298
|
+
ANGLE_PLANE = DimensionSignature(1) # Dimensionless
|
299
|
+
ANGLE_SOLID = DimensionSignature(1) # Dimensionless
|
300
|
+
ANGULAR_ACCELERATION = DimensionSignature(0.04) # T^-2
|
301
|
+
ANGULAR_MOMENTUM = DimensionSignature(2.4) # L^2 M T^-1
|
302
|
+
AREA = DimensionSignature(4) # L^2
|
303
|
+
AREA_PER_UNIT_VOLUME = DimensionSignature(0.5) # L^-1
|
304
|
+
ATOMIC_WEIGHT = DimensionSignature(0.2307692308) # N^-1 M
|
305
|
+
CONCENTRATION = DimensionSignature(0.375) # L^-3 M
|
306
|
+
DIMENSIONLESS = DimensionSignature(1) # Dimensionless
|
307
|
+
DYNAMIC_FLUIDITY = DimensionSignature(3.333333333) # L M^-1 T
|
308
|
+
ELECTRIC_CAPACITANCE = DimensionSignature(2552.083333) # A^2 L^-2 M^-1 T^4
|
309
|
+
ELECTRIC_CHARGE = DimensionSignature(2.692307692) # N^-1 A T
|
310
|
+
ELECTRIC_CURRENT_INTENSITY = DimensionSignature(7) # A
|
311
|
+
ELECTRIC_DIPOLE_MOMENT = DimensionSignature(70) # A L T
|
312
|
+
ELECTRIC_FIELD_STRENGTH = DimensionSignature(0.006857142857) # A^-1 L M T^-3
|
313
|
+
ELECTRIC_INDUCTANCE = DimensionSignature(0.009795918367) # A^-2 L^2 M T^-2
|
314
|
+
ELECTRIC_POTENTIAL = DimensionSignature(0.01371428571) # A^-1 L^2 M T^-3
|
315
|
+
ELECTRIC_RESISTANCE = DimensionSignature(0.001959183673) # A^-2 L^2 M T^-3
|
316
|
+
ELECTRICAL_CONDUCTANCE = DimensionSignature(510.4166667) # A^2 L^-2 M^-1 T^3
|
317
|
+
ELECTRICAL_PERMITTIVITY = DimensionSignature(1276.041667) # A^2 L^-3 M^-1 T^4
|
318
|
+
ELECTRICAL_RESISTIVITY = DimensionSignature(0.003918367347) # A^-2 L^3 M T^-3
|
319
|
+
ENERGY_FLUX = DimensionSignature(0.024) # M T^-3
|
320
|
+
ENERGY_HEAT_WORK = DimensionSignature(0.48) # L^2 M T^-2
|
321
|
+
ENERGY_PER_UNIT_AREA = DimensionSignature(0.12) # M T^-2
|
322
|
+
FORCE = DimensionSignature(0.24) # L M T^-2
|
323
|
+
FORCE_BODY = DimensionSignature(0.03) # L^-2 M T^-2
|
324
|
+
FORCE_PER_UNIT_MASS = DimensionSignature(0.08) # L T^-2
|
325
|
+
FREQUENCY_VOLTAGE_RATIO = DimensionSignature(72.91666667) # A L^-2 M^-1 T^3
|
326
|
+
FUEL_CONSUMPTION = DimensionSignature(0.25) # L^-2
|
327
|
+
HEAT_OF_COMBUSTION = DimensionSignature(0.16) # L^2 T^-2
|
328
|
+
HEAT_OF_FUSION = DimensionSignature(0.16) # L^2 T^-2
|
329
|
+
HEAT_OF_VAPORIZATION = DimensionSignature(0.16) # L^2 T^-2
|
330
|
+
HEAT_TRANSFER_COEFFICIENT = DimensionSignature(0.002181818182) # M Θ^-1 T^-3
|
331
|
+
ILLUMINANCE = DimensionSignature(0.25) # L^-2 L
|
332
|
+
KINETIC_ENERGY_OF_TURBULENCE = DimensionSignature(0.16) # L^2 T^-2
|
333
|
+
LENGTH = DimensionSignature(2) # L
|
334
|
+
LINEAR_MASS_DENSITY = DimensionSignature(1.5) # L^-1 M
|
335
|
+
LINEAR_MOMENTUM = DimensionSignature(1.2) # L M T^-1
|
336
|
+
LUMINANCE_SELF = DimensionSignature(0.25) # L^-2 L
|
337
|
+
LUMINOUS_FLUX = DimensionSignature(1) # L
|
338
|
+
LUMINOUS_INTENSITY = DimensionSignature(1) # L
|
339
|
+
MAGNETIC_FIELD = DimensionSignature(3.5) # A L^-1
|
340
|
+
MAGNETIC_FLUX = DimensionSignature(0.06857142857) # A^-1 L^2 M T^-2
|
341
|
+
MAGNETIC_INDUCTION_FIELD_STRENGTH = DimensionSignature(0.01714285714) # A^-1 M T^-2
|
342
|
+
MAGNETIC_MOMENT = DimensionSignature(28) # A L^2
|
343
|
+
MAGNETIC_PERMEABILITY = DimensionSignature(0.009795918367) # A^-2 L^2 M T^-2
|
344
|
+
MAGNETOMOTIVE_FORCE = DimensionSignature(7) # A
|
345
|
+
MASS = DimensionSignature(3) # M
|
346
|
+
MASS_DENSITY = DimensionSignature(0.375) # L^-3 M
|
347
|
+
MASS_FLOW_RATE = DimensionSignature(0.6) # M T^-1
|
348
|
+
MASS_FLUX = DimensionSignature(0.15) # L^-2 M T^-1
|
349
|
+
MASS_FRACTION_OF_I = DimensionSignature(1) # Dimensionless
|
350
|
+
MASS_TRANSFER_COEFFICIENT = DimensionSignature(0.15) # L^-2 M T^-1
|
351
|
+
MOLALITY_OF_SOLUTE_I = DimensionSignature(4.333333333) # N M^-1
|
352
|
+
MOLAR_CONCENTRATION_BY_MASS = DimensionSignature(13) # N
|
353
|
+
MOLAR_FLOW_RATE = DimensionSignature(2.6) # N T^-1
|
354
|
+
MOLAR_FLUX = DimensionSignature(0.65) # N L^-2 T^-1
|
355
|
+
MOLAR_HEAT_CAPACITY = DimensionSignature(0.001118881119) # N^-1 L^2 Θ^-1 T^-2
|
356
|
+
MOLARITY_OF_I = DimensionSignature(1.625) # N L^-3
|
357
|
+
MOLE_FRACTION_OF_I = DimensionSignature(1) # Dimensionless
|
358
|
+
MOMENT_OF_INERTIA = DimensionSignature(12) # L^2 M
|
359
|
+
MOMENTUM_FLOW_RATE = DimensionSignature(0.24) # L M T^-2
|
360
|
+
MOMENTUM_FLUX = DimensionSignature(0.06) # L^-1 M T^-2
|
361
|
+
NORMALITY_OF_SOLUTION = DimensionSignature(1.625) # N L^-3
|
362
|
+
PARTICLE_DENSITY = DimensionSignature(0.125) # L^-3
|
363
|
+
PERCENT = DimensionSignature(1) # Dimensionless
|
364
|
+
PERMEABILITY = DimensionSignature(4) # L^2
|
365
|
+
PHOTON_EMISSION_RATE = DimensionSignature(0.05) # L^-2 T^-1
|
366
|
+
POWER_PER_UNIT_MASS = DimensionSignature(0.032) # L^2 T^-3
|
367
|
+
POWER_PER_UNIT_VOLUME = DimensionSignature(0.012) # L^-1 M T^-3
|
368
|
+
POWER_THERMAL_DUTY = DimensionSignature(0.096) # L^2 M T^-3
|
369
|
+
PRESSURE = DimensionSignature(0.06) # L^-1 M T^-2
|
370
|
+
RADIATION_DOSE_EQUIVALENT = DimensionSignature(0.16) # L^2 T^-2
|
371
|
+
RADIATION_EXPOSURE = DimensionSignature(11.66666667) # A M^-1 T
|
372
|
+
RADIOACTIVITY = DimensionSignature(0.2) # T^-1
|
373
|
+
SECOND_MOMENT_OF_AREA = DimensionSignature(16) # L^4
|
374
|
+
SECOND_RADIATION_CONSTANT_PLANCK = DimensionSignature(22) # L Θ
|
375
|
+
SPECIFIC_ENTHALPY = DimensionSignature(0.16) # L^2 T^-2
|
376
|
+
SPECIFIC_GRAVITY = DimensionSignature(1) # Dimensionless
|
377
|
+
SPECIFIC_HEAT_CAPACITY_CONSTANT_PRESSURE = DimensionSignature(0.04363636364) # L^2 M Θ^-1 T^-2
|
378
|
+
SPECIFIC_LENGTH = DimensionSignature(0.6666666667) # L M^-1
|
379
|
+
SPECIFIC_SURFACE = DimensionSignature(1.333333333) # L^2 M^-1
|
380
|
+
SPECIFIC_VOLUME = DimensionSignature(2.666666667) # L^3 M^-1
|
381
|
+
STRESS = DimensionSignature(0.06) # L^-1 M T^-2
|
382
|
+
SURFACE_MASS_DENSITY = DimensionSignature(0.75) # L^-2 M
|
383
|
+
SURFACE_TENSION = DimensionSignature(0.12) # M T^-2
|
384
|
+
TEMPERATURE = DimensionSignature(11) # Θ
|
385
|
+
THERMAL_CONDUCTIVITY = DimensionSignature(0.528) # L M Θ T^-3
|
386
|
+
TIME = DimensionSignature(5) # T
|
387
|
+
TORQUE = DimensionSignature(0.48) # L^2 M T^-2
|
388
|
+
TURBULENCE_ENERGY_DISSIPATION_RATE = DimensionSignature(0.032) # L^2 T^-3
|
389
|
+
VELOCITY_ANGULAR = DimensionSignature(0.2) # T^-1
|
390
|
+
VELOCITY_LINEAR = DimensionSignature(0.4) # L T^-1
|
391
|
+
VISCOSITY_DYNAMIC = DimensionSignature(0.3) # L^-1 M T^-1
|
392
|
+
VISCOSITY_KINEMATIC = DimensionSignature(0.8) # L^2 T^-1
|
393
|
+
VOLUME = DimensionSignature(8) # L^3
|
394
|
+
VOLUME_FRACTION_OF_I = DimensionSignature(1) # Dimensionless
|
395
|
+
VOLUMETRIC_CALORIFIC_HEATING_VALUE = DimensionSignature(0.06) # L^-1 M T^-2
|
396
|
+
VOLUMETRIC_COEFFICIENT_OF_EXPANSION = DimensionSignature(0.03409090909) # L^-3 M Θ^-1
|
397
|
+
VOLUMETRIC_FLOW_RATE = DimensionSignature(1.6) # L^3 T^-1
|
398
|
+
VOLUMETRIC_FLUX = DimensionSignature(0.4) # L T^-1
|
399
|
+
VOLUMETRIC_MASS_FLOW_RATE = DimensionSignature(0.075) # L^-3 M T^-1
|
400
|
+
WAVENUMBER = DimensionSignature(0.5) # L^-1
|
401
|
+
|
402
|
+
# Module exports
|
403
|
+
__all__ = [
|
404
|
+
"BaseDimension",
|
405
|
+
"DimensionSignature",
|
406
|
+
"ABSORBED_DOSE",
|
407
|
+
"ACCELERATION",
|
408
|
+
"ACTIVATION_ENERGY",
|
409
|
+
"AMOUNT_OF_SUBSTANCE",
|
410
|
+
"ANGLE_PLANE",
|
411
|
+
"ANGLE_SOLID",
|
412
|
+
"ANGULAR_ACCELERATION",
|
413
|
+
"ANGULAR_MOMENTUM",
|
414
|
+
"AREA",
|
415
|
+
"AREA_PER_UNIT_VOLUME",
|
416
|
+
"ATOMIC_WEIGHT",
|
417
|
+
"CONCENTRATION",
|
418
|
+
"DIMENSIONLESS",
|
419
|
+
"DYNAMIC_FLUIDITY",
|
420
|
+
"ELECTRIC_CAPACITANCE",
|
421
|
+
"ELECTRIC_CHARGE",
|
422
|
+
"ELECTRIC_CURRENT_INTENSITY",
|
423
|
+
"ELECTRIC_DIPOLE_MOMENT",
|
424
|
+
"ELECTRIC_FIELD_STRENGTH",
|
425
|
+
"ELECTRIC_INDUCTANCE",
|
426
|
+
"ELECTRIC_POTENTIAL",
|
427
|
+
"ELECTRIC_RESISTANCE",
|
428
|
+
"ELECTRICAL_CONDUCTANCE",
|
429
|
+
"ELECTRICAL_PERMITTIVITY",
|
430
|
+
"ELECTRICAL_RESISTIVITY",
|
431
|
+
"ENERGY_FLUX",
|
432
|
+
"ENERGY_HEAT_WORK",
|
433
|
+
"ENERGY_PER_UNIT_AREA",
|
434
|
+
"FORCE",
|
435
|
+
"FORCE_BODY",
|
436
|
+
"FORCE_PER_UNIT_MASS",
|
437
|
+
"FREQUENCY_VOLTAGE_RATIO",
|
438
|
+
"FUEL_CONSUMPTION",
|
439
|
+
"HEAT_OF_COMBUSTION",
|
440
|
+
"HEAT_OF_FUSION",
|
441
|
+
"HEAT_OF_VAPORIZATION",
|
442
|
+
"HEAT_TRANSFER_COEFFICIENT",
|
443
|
+
"ILLUMINANCE",
|
444
|
+
"KINETIC_ENERGY_OF_TURBULENCE",
|
445
|
+
"LENGTH",
|
446
|
+
"LINEAR_MASS_DENSITY",
|
447
|
+
"LINEAR_MOMENTUM",
|
448
|
+
"LUMINANCE_SELF",
|
449
|
+
"LUMINOUS_FLUX",
|
450
|
+
"LUMINOUS_INTENSITY",
|
451
|
+
"MAGNETIC_FIELD",
|
452
|
+
"MAGNETIC_FLUX",
|
453
|
+
"MAGNETIC_INDUCTION_FIELD_STRENGTH",
|
454
|
+
"MAGNETIC_MOMENT",
|
455
|
+
"MAGNETIC_PERMEABILITY",
|
456
|
+
"MAGNETOMOTIVE_FORCE",
|
457
|
+
"MASS",
|
458
|
+
"MASS_DENSITY",
|
459
|
+
"MASS_FLOW_RATE",
|
460
|
+
"MASS_FLUX",
|
461
|
+
"MASS_FRACTION_OF_I",
|
462
|
+
"MASS_TRANSFER_COEFFICIENT",
|
463
|
+
"MOLALITY_OF_SOLUTE_I",
|
464
|
+
"MOLAR_CONCENTRATION_BY_MASS",
|
465
|
+
"MOLAR_FLOW_RATE",
|
466
|
+
"MOLAR_FLUX",
|
467
|
+
"MOLAR_HEAT_CAPACITY",
|
468
|
+
"MOLARITY_OF_I",
|
469
|
+
"MOLE_FRACTION_OF_I",
|
470
|
+
"MOMENT_OF_INERTIA",
|
471
|
+
"MOMENTUM_FLOW_RATE",
|
472
|
+
"MOMENTUM_FLUX",
|
473
|
+
"NORMALITY_OF_SOLUTION",
|
474
|
+
"PARTICLE_DENSITY",
|
475
|
+
"PERCENT",
|
476
|
+
"PERMEABILITY",
|
477
|
+
"PHOTON_EMISSION_RATE",
|
478
|
+
"POWER_PER_UNIT_MASS",
|
479
|
+
"POWER_PER_UNIT_VOLUME",
|
480
|
+
"POWER_THERMAL_DUTY",
|
481
|
+
"PRESSURE",
|
482
|
+
"RADIATION_DOSE_EQUIVALENT",
|
483
|
+
"RADIATION_EXPOSURE",
|
484
|
+
"RADIOACTIVITY",
|
485
|
+
"SECOND_MOMENT_OF_AREA",
|
486
|
+
"SECOND_RADIATION_CONSTANT_PLANCK",
|
487
|
+
"SPECIFIC_ENTHALPY",
|
488
|
+
"SPECIFIC_GRAVITY",
|
489
|
+
"SPECIFIC_HEAT_CAPACITY_CONSTANT_PRESSURE",
|
490
|
+
"SPECIFIC_LENGTH",
|
491
|
+
"SPECIFIC_SURFACE",
|
492
|
+
"SPECIFIC_VOLUME",
|
493
|
+
"STRESS",
|
494
|
+
"SURFACE_MASS_DENSITY",
|
495
|
+
"SURFACE_TENSION",
|
496
|
+
"TEMPERATURE",
|
497
|
+
"THERMAL_CONDUCTIVITY",
|
498
|
+
"TIME",
|
499
|
+
"TORQUE",
|
500
|
+
"TURBULENCE_ENERGY_DISSIPATION_RATE",
|
501
|
+
"VELOCITY_ANGULAR",
|
502
|
+
"VELOCITY_LINEAR",
|
503
|
+
"VISCOSITY_DYNAMIC",
|
504
|
+
"VISCOSITY_KINEMATIC",
|
505
|
+
"VOLUME",
|
506
|
+
"VOLUME_FRACTION_OF_I",
|
507
|
+
"VOLUMETRIC_CALORIFIC_HEATING_VALUE",
|
508
|
+
"VOLUMETRIC_COEFFICIENT_OF_EXPANSION",
|
509
|
+
"VOLUMETRIC_FLOW_RATE",
|
510
|
+
"VOLUMETRIC_FLUX",
|
511
|
+
"VOLUMETRIC_MASS_FLOW_RATE",
|
512
|
+
"WAVENUMBER",
|
513
|
+
]
|
514
|
+
|