Skip to content

Commit

Permalink
feat: Add units and units_quantity in FieldInfo message (#3568)
Browse files Browse the repository at this point in the history
* feat: Add units and units_quantity in FieldInfo message

* feat: Add units and units_quantity in FieldInfo message

* feat: use units_quantity
  • Loading branch information
hpohekar authored Dec 18, 2024
1 parent edd9adc commit d07c742
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 6 deletions.
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ packages = [

[tool.poetry.dependencies]
python = ">=3.10,<4.0"
ansys-api-fluent = "^0.3.28"
ansys-api-fluent = "^0.3.30"
ansys-platform-instancemanagement = "~=1.0"
ansys-tools-filetransfer = ">=0.1,<0.3"
ansys-units = "^0.3.3"
Expand Down
20 changes: 15 additions & 5 deletions src/ansys/fluent/core/post_objects/post_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

import re

from ansys.fluent.core.solver.flunits import get_si_unit_for_fluent_quantity
from ansys.fluent.core.utils.fluent_version import FluentVersion


class IncompleteISOSurfaceDefinition(RuntimeError):
"""Raised when iso-surface definition is incomplete."""
Expand Down Expand Up @@ -131,11 +134,18 @@ def get_vector_fields(self):

def get_field_unit(self, field):
"""Returns the unit of the field."""
quantity = self._field_unit_quantity(field)
if quantity == "*null*":
return ""
scheme_eval_str = f"(units/get-pretty-wb-units-from-dimension (units/inquire-dimension '{quantity}))"
return " ".join(self._scheme_str_to_py_list(scheme_eval_str))
session = self.obj.get_root().session
if FluentVersion(session.scheme_eval.version) < FluentVersion.v252:
quantity = self._field_unit_quantity(field)
if quantity == "*null*":
return ""
scheme_eval_str = f"(units/get-pretty-wb-units-from-dimension (units/inquire-dimension '{quantity}))"
return " ".join(self._scheme_str_to_py_list(scheme_eval_str))
else:
fields_info = self.field_info.get_fields_info()
for field_info in fields_info:
if field_info["solverName"] == field:
return get_si_unit_for_fluent_quantity(field_info["quantity_name"])

def _field_unit_quantity(self, field):
scheme_eval_str = f"(cdr (assq 'units (%fill-render-info '{field})))"
Expand Down
18 changes: 18 additions & 0 deletions src/ansys/fluent/core/services/field_data.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,10 @@ def __init__(
stub=FieldGrpcModule.FieldDataStub(intercept_channel), metadata=metadata
)

def get_fields_info(self, request):
"""GetFieldsInfo RPC of FieldData service."""
return self._stub.GetFieldsInfo(request, metadata=self._metadata)

def get_scalar_field_range(self, request):
"""GetRange RPC of FieldData service."""
return self._stub.GetRange(request, metadata=self._metadata)
Expand Down Expand Up @@ -88,6 +92,9 @@ class FieldInfo:
Methods
-------
get_fields_info(field: str) -> List[dict]
Get fields info.
get_scalar_field_range(field: str, node_value: bool, surface_ids: List[int])
-> List[float]
Get the range (minimum and maximum values) of the field.
Expand All @@ -111,6 +118,17 @@ def __init__(
self._service = service
self._is_data_valid = is_data_valid

def get_fields_info(self) -> List[dict]:
"""Get fields info.
Returns
-------
List[dict]
"""
request = FieldDataProtoModule.GetFieldsInfo()
response = self._service.get_fields_info(request)
return response["fieldInfo"]

def get_scalar_field_range(
self, field: str, node_value: bool = False, surface_ids: List[int] = None
) -> List[float]:
Expand Down

0 comments on commit d07c742

Please sign in to comment.