Working with physical variables#
PyFluent integrates with the PyAnsys-units library, which provides a shared catalog of variable objects based on physical quantities like temperature, pressure, and velocity. These variable objects, or VariableDescriptors, can be used throughout PyFluent to reference fields and quantities in a clear, consistent, and reliable way.
Instead of relying on raw strings like "temperature"
or "SV_T"
, which may vary between Fluent interfaces or be hard to interpret, you can use named descriptors from the catalog. This improves code readability, reduces the chance of errors, and makes it easier to work across different APIs.
The same catalog is designed to work not just with PyFluent, but also with other PyAnsys libraries, offering a unified and expressive way to interact with physical quantities across products.
Overview#
The key benefits of using the VariableCatalog
include:
Code that is portable across Ansys products and more resistant to typos
Simplified refactoring when field names change in Fluent or across versions
Integrated dimensional consistency (via
ansys-units
)Autocompletion and discoverability of supported quantities
Accessing field data#
Here’s how to use VariableCatalog
to read and reduce field data using unit-aware quantity references:
from ansys.fluent.core import launch_fluent, examples
from ansys.units.variable_descriptor import VariableCatalog
solver_session = launch_fluent()
case_path = examples.download_file("mixing_elbow.cas.h5", "pyfluent/mixing_elbow")
solver_session.file.read(file_type="case", file_name=case_path)
solver_session.settings.solution.initialization.hybrid_initialize()
temperature = VariableCatalog.TEMPERATURE
locations = ["hot-inlet"]
# Access scalar field data
temp_data = solver_session.fields.field_data.get_scalar_field_data(
field_name=temperature, surfaces=locations
)
print(temp_data[locations[0]][0]) # value at hot-inlet
# Compute minimum of a physical quantity
temp_min = solver_session.fields.reduction.minimum(expression=temperature, locations=locations)
print(temp_min)
# Access solution variable data
sol_data = solver_session.fields.solution_variable_data.get_data(
variable_name=temperature, zone_names=locations
)
print(sol_data[locations[0]][0])
Using variables with report definitions#
You can also use physical quantities in report definitions to improve clarity and maintainability:
surface_report = solver_session.settings.solution.report_definitions.surface["avg_temp"]
surface_report.report_type = "surface-areaavg"
surface_report.field = temperature # Note: using VariableCatalog, not a string
surface_report.surface_names = locations
result = solver_session.solution.report_definitions.compute(report_defs=["avg_temp"])
print(result[0]["avg_temp"][0])
Notes#
All quantities used via
VariableCatalog
map to their correct Fluent field identifiers internally.These objects can be validated against their expected dimensional types.
VariableCatalog
is part ofansys-units
, which is automatically installed with PyFluent.