Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Configure angle as dimension #309

Merged
merged 41 commits into from
Nov 7, 2024
Merged
Changes from 1 commit
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
4d4b86a
feat: Remove angle as dimension
hpohekar Nov 5, 2024
9556b7d
feat: Remove angle as dimension 1
hpohekar Nov 5, 2024
1362d5b
feat: Support Python 3.13
hpohekar Nov 5, 2024
4a46495
feat: example fix
hpohekar Nov 5, 2024
bb3c1bf
feat: configure angle
hpohekar Nov 5, 2024
a1a3c22
feat: configure angle 1
hpohekar Nov 5, 2024
e8a2730
feat: test update 1
hpohekar Nov 5, 2024
36783df
feat: test update 2
hpohekar Nov 5, 2024
05cd020
feat: test update 3
hpohekar Nov 5, 2024
751ec36
feat: test update 4
hpohekar Nov 5, 2024
da3fe17
feat: test update 5
hpohekar Nov 5, 2024
8f75f05
feat: test update 6
hpohekar Nov 5, 2024
fb4cb48
feat: test update 7
hpohekar Nov 5, 2024
30f20fe
feat: test update 8
hpohekar Nov 5, 2024
1204aab
feat: test update 9
hpohekar Nov 5, 2024
b83d182
feat: test update 10
hpohekar Nov 5, 2024
63af28b
feat: test update 11
hpohekar Nov 5, 2024
36ba7c4
feat: test update 12
hpohekar Nov 5, 2024
fd1315a
feat: test update 13
hpohekar Nov 5, 2024
10b02fa
feat: test update 14
hpohekar Nov 5, 2024
7cb8044
feat: test update 15
hpohekar Nov 5, 2024
5ce4abe
feat: test update 16
hpohekar Nov 5, 2024
f289311
feat: test update 17
hpohekar Nov 5, 2024
7d086d0
feat: test update 18
hpohekar Nov 5, 2024
6bb2819
feat: Contributors
hpohekar Nov 5, 2024
8ab140e
feat: refactoring 1
hpohekar Nov 5, 2024
51e988d
feat: refactoring 2
hpohekar Nov 5, 2024
54952f0
feat: refactoring 3
hpohekar Nov 5, 2024
72b68bb
feat: refactoring 4
hpohekar Nov 5, 2024
2e253cf
feat: refactoring 5
hpohekar Nov 6, 2024
0247775
feat: refactoring 6
hpohekar Nov 6, 2024
a3a00c1
feat: refactoring 7
hpohekar Nov 6, 2024
50e3c94
feat: refactoring 8
hpohekar Nov 6, 2024
9b8b6a0
feat: test fix 1
hpohekar Nov 6, 2024
9166bbd
feat: test fix 2
hpohekar Nov 6, 2024
fb31f20
feat: test fix 3
hpohekar Nov 6, 2024
d398625
remove maintenance changes
hpohekar Nov 6, 2024
0135640
Merge branch 'main' into feat/configure_angles_as_dimensions
hpohekar Nov 7, 2024
28a61cf
add more tests
hpohekar Nov 7, 2024
79060b3
Merge branch 'feat/configure_angles_as_dimensions' of https://github.…
hpohekar Nov 7, 2024
907c371
update license
hpohekar Nov 7, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat: test update 1
hpohekar committed Nov 5, 2024
commit e8a2730b243fdae115ea1267c81dce6b7a25ed6f
36 changes: 29 additions & 7 deletions tests/lib_compare/test_angle_units.py
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@
# SOFTWARE.

import math
import os

import pytest
import util
@@ -45,13 +46,15 @@ def test_pint_angles_are_dimensionless():
assert str(angle_in_radians_dimensions) == "dimensionless"


def test_pyunits_angles_are_dimensionsless():
def test_pyunits_angles_have_angle_dimensions():
os.environ["PYANSYS_UNITS_ANGLE_AS_DIMENSION"] = "1"
from ansys.units import BaseDimensions, Dimensions
from ansys.units.quantity import Quantity

radian = Quantity(1.0, "radian")
assert not radian.dimensions
assert radian.dimensions == Dimensions({BaseDimensions.ANGLE: 1})
degree = Quantity(1.0, "degree")
assert not degree.dimensions
assert degree.dimensions == Dimensions({BaseDimensions.ANGLE: 1})


# pint is happy to convert between angle and dimensionless because it
@@ -78,13 +81,18 @@ def test_pint_angle_and_dimensionless_are_convertible():
assert num_deg_rom_rad == util.one_degree_in_radians


def test_pyunits_angle_and_dimensionless_are_convertible():
from ansys.units.quantity import Quantity
def test_pyunits_angle_and_dimensionless_are_not_convertible():
os.environ["PYANSYS_UNITS_ANGLE_AS_DIMENSION"] = "1"
from ansys.units.quantity import IncompatibleDimensions, Quantity

no_dim = Quantity(1.0, "")
assert no_dim.to("radian")
with pytest.raises(IncompatibleDimensions):
no_dim.to("radian")
radian = Quantity(1.0, "radian")
assert radian.to("")
with pytest.raises(IncompatibleDimensions):
# seems generally meaningless, but OK, this is something
# that could happen in a generic loop:
radian.to("")


# because of the way that pint treats angles, we get seamless integration
@@ -110,3 +118,17 @@ def test_pyunits_angle_works_with_trigonometry():
assert math.sin(get_si_value(half_pi_rads)) == pytest.approx(1.0)
# see that PyUnits goes to radians for the float conversion, which is nice
assert math.cos(get_si_value(sixty_degrees)) == pytest.approx(0.5)


def test_ansunits_frequency_and_angular_frequency_are_not_convertible():
os.environ["PYANSYS_UNITS_ANGLE_AS_DIMENSION"] = "1"
from ansys.units.quantity import IncompatibleDimensions, Quantity

# ansunits avoids the pint complications by simply not allowing
# those conversions
hz = Quantity(1.0, "Hz")
with pytest.raises(IncompatibleDimensions):
hz.to("radian s^-1")
rad_per_s = Quantity(1.0, "radian s^-1")
with pytest.raises(IncompatibleDimensions):
rad_per_s.to("Hz")
3 changes: 3 additions & 0 deletions tests/test_quantity.py
Original file line number Diff line number Diff line change
@@ -21,6 +21,7 @@
# SOFTWARE.

import math
import os

import pytest

@@ -612,6 +613,8 @@ def dim_test(units, dim_dict):
dim_test("MPa", {dims.MASS: 1.0, dims.LENGTH: -1.0, dims.TIME: -2.0})
dim_test("kPa^2", {dims.MASS: 2.0, dims.LENGTH: -2.0, dims.TIME: -4.0})
dim_test("slug inch^-1 s^-1", {dims.MASS: 1.0, dims.LENGTH: -1.0, dims.TIME: -1.0})
if os.getenv("PYANSYS_UNITS_ANGLE_AS_DIMENSION"):
dim_test("radian", {dims.ANGLE: 1.0})
dim_test(
"ohm", {dims.MASS: 1.0, dims.LENGTH: 2.0, dims.TIME: -3.0, dims.CURRENT: -2.0}
)