Skip to content

Commit ea3a856

Browse files
committed
feat: remove set_named_dimensionless_unit. Replace it by an extension of unit setter to allow tuple as parameter
1 parent 53cf486 commit ea3a856

File tree

4 files changed

+29
-33
lines changed

4 files changed

+29
-33
lines changed

src/ansys/dpf/core/field.py

Lines changed: 11 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -620,9 +620,15 @@ def unit(self):
620620
def unit(self, value):
621621
"""Change the unit for the field.
622622
623+
If the value is a single string, then it will be interpreted to a physical meaning (homogeneity).
624+
625+
If the value is a tuple, then it must contain an homogeneity and a string.
626+
If homogeneity is "dimensionless", then the unit string is kept as is.
627+
Otherwise, homogeneity is ignored, and unit string is interpreted to a physical meaning.
628+
623629
Parameters
624630
----------
625-
value : str
631+
value : str | tuple(str, str)
626632
Units for the field.
627633
628634
Examples
@@ -635,32 +641,18 @@ def unit(self, value):
635641
>>> my_field.unit
636642
'm'
637643
638-
"""
639-
fielddef = self.field_definition
640-
fielddef.unit = value
641-
self.field_definition = fielddef
642644
643-
def set_named_dimensionless_unit(self, value):
644-
"""Set a named dimensionless unit for the field.
645-
646-
Parameters
647-
----------
648-
value : str
649-
Units for the field. This unit must be homogeneous to no physical quantity
650-
651-
Examples
652-
--------
653-
Units for a psychoacoustics field.
645+
Named dimensionless unit.
654646
655647
>>> from ansys.dpf import core as dpf
656648
>>> my_field = dpf.Field(10)
657-
>>> my_field.set_named_dimensionless_unit("sones")
649+
>>> my_field.unit = ("dimensionless", "dollars")
658650
>>> print(my_field.unit)
659-
sones
651+
'dollars'
660652
661653
"""
662654
fielddef = self.field_definition
663-
fielddef.set_named_dimensionless_unit(value)
655+
fielddef.unit = value
664656
self.field_definition = fielddef
665657

666658
@property

src/ansys/dpf/core/field_definition.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,18 +205,16 @@ def is_of_quantity_type(self, quantity_type):
205205

206206
@unit.setter
207207
def unit(self, value):
208-
self._api.csfield_definition_set_unit(self, value, None, 0, 0, 0)
209-
210-
def set_named_dimensionless_unit(self, value):
211-
"""Set a named dimensionless unit for the field.
212-
213-
Parameters
214-
----------
215-
value : str
216-
Units for the field. This unit must be homogeneous to no physical quantity
217-
"""
218-
# 117 corresponds to dimensionless
219-
self._api.csfield_definition_set_unit(self, value, None, 117, 0, 0)
208+
# setter with explicit homogeneity: homogeneity is taken into account if it is dimensionless
209+
if isinstance(value, tuple):
210+
if value[0] == "dimensionless":
211+
# 117 corresponds to dimensionless
212+
self._api.csfield_definition_set_unit(self, value[1], None, 117, 0, 0)
213+
else:
214+
self._api.csfield_definition_set_unit(self, value[1], None, 0, 0, 0)
215+
# standard unit setter, using string interpreter
216+
else:
217+
self._api.csfield_definition_set_unit(self, value, None, 0, 0, 0)
220218

221219
@location.setter
222220
def location(self, value):

tests/entry/conftest.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ def _get_test_files_directory():
7171
"/tmp/test_files"
7272
)
7373

74+
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_10_0 = meets_version(
75+
get_server_version(core._global_server()), "10.0"
76+
)
7477
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_8_1 = meets_version(
7578
get_server_version(core._global_server()), "8.1"
7679
)

tests/test_field.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,11 +1426,14 @@ def test_deep_copy_big_field_remote(server_type, server_type_remote_process):
14261426
@pytest.mark.skipif(
14271427
not SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_10_0, reason="Available for servers >=10.0"
14281428
)
1429-
def test_set_named_dimensionless_units():
1429+
def test_set_units():
14301430
data = np.random.random(100)
14311431
field = dpf.core.field_from_array(data)
14321432
field.unit = "m"
14331433
assert field.unit == "m"
14341434

1435-
field.set_named_dimensionless_unit("sones")
1435+
field.unit = ("dimensionless", "sones")
14361436
assert field.unit == "sones"
1437+
1438+
with pytest.raises(Exception):
1439+
field.unit = "sones"

0 commit comments

Comments
 (0)