diff --git a/pyproject.toml b/pyproject.toml index 2856cd44..5358a2fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] # Check https://python-poetry.org/docs/pyproject/ for all available sections name = "ansys-fluent-visualization" -version = "0.21.0" +version = "0.21.1" description = "A python wrapper for ansys Fluent visualization" license = "MIT" authors = ["ANSYS, Inc. "] @@ -25,7 +25,7 @@ packages = [ [tool.poetry.dependencies] python = ">=3.10,<4.0" importlib-metadata = {version = "^4.0", python = "<3.9"} -ansys-fluent-core = "~=0.34.0" +ansys-fluent-core = "~=0.34.1" pyvista = ">=0.44.0" matplotlib = ">=3.6.0" pyvistaqt = { version = "~=0.11.1", optional = true } diff --git a/src/ansys/fluent/interface/post_objects/meta.py b/src/ansys/fluent/interface/post_objects/meta.py index 748dcf54..f57a3292 100644 --- a/src/ansys/fluent/interface/post_objects/meta.py +++ b/src/ansys/fluent/interface/post_objects/meta.py @@ -254,6 +254,8 @@ def __new__(cls, name, bases, attrs): attrs["root"] = property(lambda self: self.get_root()) attrs["path"] = property(lambda self: self.get_path()) attrs["session"] = property(lambda self: self.get_session()) + attrs["field_data"] = property(lambda self: self.get_session().field_data) + attrs["monitors"] = property(lambda self: self.get_session().monitors) attrs["session_handle"] = property(lambda self: self.get_session_handle()) return super(PyLocalBaseMeta, cls).__new__(cls, name, bases, attrs) diff --git a/src/ansys/fluent/interface/post_objects/post_helper.py b/src/ansys/fluent/interface/post_objects/post_helper.py index e292ced6..48db651f 100644 --- a/src/ansys/fluent/interface/post_objects/post_helper.py +++ b/src/ansys/fluent/interface/post_objects/post_helper.py @@ -63,8 +63,8 @@ def _get_api_handle(self): return self.obj.get_root().session.results.surfaces def _delete_if_exists_on_server(self): - field_info = self.obj._api_helper.field_info() - surfaces_list = list(field_info.get_surfaces_info().keys()) + field_data = self.obj._api_helper.field_data() + surfaces_list = list(field_data.surfaces()) if self._surface_name_on_server in surfaces_list: self.delete_surface_on_server() @@ -130,8 +130,8 @@ def create_surface_on_server(self): "method": method, position: value, } - field_info = self.obj._api_helper.field_info() - surfaces_list = list(field_info.get_surfaces_info().keys()) + field_data = self.obj._api_helper.field_data() + surfaces_list = list(field_data.surfaces()) if self._surface_name_on_server not in surfaces_list: raise SurfaceCreationError() @@ -145,7 +145,6 @@ def delete_surface_on_server(self): def __init__(self, obj): """__init__ method of PostAPIHelper class.""" self.obj = obj - self.field_info = lambda: obj.get_root().session.fields.field_info self.field_data = lambda: obj.get_root().session.fields.field_data if obj.__class__.__name__ == "Surface": self.surface_api = PostAPIHelper._SurfaceAPI(obj) @@ -163,14 +162,14 @@ def remote_surface_name(self, local_surface_name): def get_field_unit(self, field): """Return the unit of the field.""" session = self.obj.get_root().session - if FluentVersion(session.scheme_eval.version) < FluentVersion.v252: + if FluentVersion(session.scheme.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}))" # noqa: E501 return " ".join(self._scheme_str_to_py_list(scheme_eval_str)) else: - fields_info = self.field_info().get_scalar_fields_info() + fields_info = self.field_data().scalar_fields() return get_si_unit_for_fluent_quantity(fields_info[field]["quantity_name"]) def _field_unit_quantity(self, field): @@ -180,7 +179,7 @@ def _field_unit_quantity(self, field): def _scheme_str_to_py_list(self, scheme_eval_str): session = self.obj.get_root().session if hasattr(session, "scheme_eval"): - str_val = session.scheme_eval.string_eval(scheme_eval_str) + str_val = session.scheme.string_eval(scheme_eval_str) return list(filter(None, re.split(r'[\s()"\']', str_val))) else: return ["*null*"] diff --git a/src/ansys/fluent/interface/post_objects/post_object_definitions.py b/src/ansys/fluent/interface/post_objects/post_object_definitions.py index 2621aa26..0d014df0 100644 --- a/src/ansys/fluent/interface/post_objects/post_object_definitions.py +++ b/src/ansys/fluent/interface/post_objects/post_object_definitions.py @@ -107,7 +107,7 @@ class monitor_set_name(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Monitor set allowed values.""" - return self.session.monitors.get_monitor_set_names() + return self.monitors.get_monitor_set_names() class XYPlotDefn(PlotDefn): @@ -138,7 +138,7 @@ class y_axis_function(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Y axis function allowed values.""" - return list(self.session.field_info.get_scalar_fields_info()) + return list(self.field_data.scalar_fields()) class x_axis_function(metaclass=PyLocalPropertyMeta): """X Axis Function.""" @@ -158,7 +158,7 @@ class surfaces(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Surface list allowed values.""" - return list(self.session.field_info.get_surfaces_info()) + list( + return list(self.field_data.surfaces()) + list( self.get_root()._local_surfaces_provider() ) @@ -176,7 +176,7 @@ class surfaces(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Surface list allowed values.""" - return list(self.session.field_info.get_surfaces_info()) + list( + return list(self.field_data.surfaces()) + list( self.get_root()._local_surfaces_provider() ) @@ -209,7 +209,7 @@ class field(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Field allowed values.""" - return list(self.session.field_info.get_scalar_fields_info()) + return list(self.field_data.scalar_fields()) class surfaces(metaclass=PyLocalPropertyMeta): """List of surfaces for pathlines.""" @@ -219,7 +219,7 @@ class surfaces(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Surface list allowed values.""" - return list(self.session.field_info.get_surfaces_info()) + list( + return list(self.field_data.surfaces()) + list( self.get_root()._local_surfaces_provider() ) @@ -286,9 +286,7 @@ class x(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """X value range.""" - return self.session.field_info.get_scalar_field_range( - "x-coordinate", True - ) + return self.field_data.scalar_fields.range("x-coordinate", True) class y(metaclass=PyLocalPropertyMeta): """Y value.""" @@ -298,9 +296,7 @@ class y(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """Y value range.""" - return self.session.field_info.get_scalar_field_range( - "y-coordinate", True - ) + return self.field_data.scalar_fields.range("y-coordinate", True) class z(metaclass=PyLocalPropertyMeta): """Z value.""" @@ -310,9 +306,7 @@ class z(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """Z value range.""" - return self.session.field_info.get_scalar_field_range( - "z-coordinate", True - ) + return self.field_data.scalar_fields.range("z-coordinate", True) class normal(metaclass=PyLocalObjectMeta): """Normal entry for point-and-normal surface.""" @@ -368,9 +362,7 @@ class z(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """Z value range.""" - return self.session.field_info.get_scalar_field_range( - "z-coordinate", True - ) + return self.field_data.scalar_fields.range("z-coordinate", True) class yz_plane(metaclass=PyLocalObjectMeta): """YZ Plane definition.""" @@ -388,9 +380,7 @@ class x(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """X value range.""" - return self.session.field_info.get_scalar_field_range( - "x-coordinate", True - ) + return self.field_data.scalar_fields.range("x-coordinate", True) class zx_plane(metaclass=PyLocalObjectMeta): """ZX Plane definition.""" @@ -408,9 +398,7 @@ class y(metaclass=PyLocalPropertyMeta): @Attribute def range(self): """Y value range.""" - return self.session.field_info.get_scalar_field_range( - "y-coordinate", True - ) + return self.field_data.scalar_fields.range("y-coordinate", True) class iso_surface(metaclass=PyLocalObjectMeta): """Iso surface definition.""" @@ -428,7 +416,7 @@ class field(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Field allowed values.""" - return list(self.session.field_info.get_scalar_fields_info()) + return list(self.field_data.scalar_fields()) class rendering(metaclass=PyLocalPropertyMeta): """Iso surface rendering.""" @@ -465,9 +453,7 @@ def range(self): """Iso value range.""" field = self._parent.field() if field: - return self.session.field_info.get_scalar_field_range( - field, True - ) + return self.field_data.scalar_fields.range(field, True) class ContourDefn(GraphicsDefn): @@ -483,7 +469,7 @@ class field(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Field allowed values.""" - return list(self.session.field_info.get_scalar_fields_info()) + return list(self.field_data.scalar_fields()) class surfaces(metaclass=PyLocalPropertyMeta): """Contour surfaces.""" @@ -493,7 +479,7 @@ class surfaces(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Surfaces list allowed values.""" - return list(self.session.field_info.get_surfaces_info()) + list( + return list(self.field_data.surfaces()) + list( self.get_root()._local_surfaces_provider() ) @@ -607,8 +593,8 @@ def value(self): if getattr(self, "_value", None) is None: field = self.get_ancestors_by_type(ContourDefn).field() if field: - field_info = self.session.field_info - field_range = field_info.get_scalar_field_range( + field_data = self.field_data + field_range = field_data.scalar_fields.range( field, self.get_ancestors_by_type(ContourDefn).node_values(), ) @@ -636,8 +622,8 @@ def value(self): if getattr(self, "_value", None) is None: field = self.get_ancestors_by_type(ContourDefn).field() if field: - field_info = self.session.field_info - field_range = field_info.get_scalar_field_range( + field_data = self.field_data + field_range = field_data.scalar_fields.range( field, self.get_ancestors_by_type(ContourDefn).node_values(), ) @@ -663,7 +649,7 @@ class vectors_of(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Vectors of allowed values.""" - return list(self.session.field_info.get_vector_fields_info()) + return list(self.field_data.vectors()) class field(metaclass=PyLocalPropertyMeta): """Vector color field.""" @@ -673,7 +659,7 @@ class field(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Field allowed values.""" - return list(self.session.field_info.get_scalar_fields_info()) + return list(self.field_data.scalar_fields()) class surfaces(metaclass=PyLocalPropertyMeta): """List of surfaces for vector graphics.""" @@ -683,7 +669,7 @@ class surfaces(metaclass=PyLocalPropertyMeta): @Attribute def allowed_values(self): """Surface list allowed values.""" - return list(self.session.field_info.get_surfaces_info()) + list( + return list(self.field_data.surfaces()) + list( self.get_root()._local_surfaces_provider() ) @@ -750,8 +736,8 @@ class minimum(metaclass=PyLocalPropertyMeta): def value(self): """Range minimum property setter.""" if getattr(self, "_value", None) is None: - field_info = self.session.field_info - field_range = field_info.get_scalar_field_range( + field_data = self.field_data + field_range = field_data.scalar_fields.range( "velocity-magnitude", False, ) @@ -771,8 +757,8 @@ class maximum(metaclass=PyLocalPropertyMeta): def value(self): """Range maximum property setter.""" if getattr(self, "_value", None) is None: - field_info = self.session.field_info - field_range = field_info.get_scalar_field_range( + field_data = self.field_data + field_range = field_data.scalar_fields.range( "velocity-magnitude", False, ) diff --git a/src/ansys/fluent/visualization/graphics/graphics_windows_manager.py b/src/ansys/fluent/visualization/graphics/graphics_windows_manager.py index 39f66b39..bde31069 100644 --- a/src/ansys/fluent/visualization/graphics/graphics_windows_manager.py +++ b/src/ansys/fluent/visualization/graphics/graphics_windows_manager.py @@ -276,28 +276,22 @@ def _fetch_monitor_data(self, obj): "yscale": "log" if monitor_set_name == "residual" else "linear", } - @staticmethod - def _pack_faces_connectivity_data(faces_data): - flat = [] - for face in faces_data: - flat.append(len(face)) - flat.extend(face) - return np.array(flat) - def _resolve_mesh_data(self, mesh_data): - if mesh_data.connectivity[0].shape[0] == 2: # Line + if mesh_data.connectivity.size == 0: + return pv.PolyData() + if mesh_data.connectivity[0] == 2: # Line return pv.PolyData( mesh_data.vertices, - lines=self._pack_faces_connectivity_data(mesh_data.connectivity), + lines=mesh_data.connectivity, ) else: # Face return pv.PolyData( mesh_data.vertices, - faces=self._pack_faces_connectivity_data(mesh_data.connectivity), + faces=mesh_data.connectivity, ) def _display_vector(self, obj, obj_dict): - field_info = obj.session.field_info + field_data = obj.session.field_data vectors_of = obj.vectors_of() # scalar bar properties try: @@ -339,7 +333,7 @@ def _display_vector(self, obj, obj_dict): else: auto_range_on = obj.range.auto_range_on if auto_range_on.global_range(): - range_ = field_info.get_scalar_field_range(obj.field(), False) + range_ = field_data.scalar_fields.range(obj.field(), False) else: range_ = [np.min(scalar_field), np.max(scalar_field)] @@ -404,7 +398,7 @@ def _display_pathlines(self, obj, obj_dict): mesh = pv.PolyData( surface_data.vertices, - lines=self._pack_faces_connectivity_data(surface_data.lines), + lines=surface_data.lines, ) mesh.point_data[field] = surface_data.scalar_field @@ -527,12 +521,10 @@ def _display_contour(self, obj, obj_dict): auto_range_on = obj.range.auto_range_on if auto_range_on.global_range(): if filled: - field_info = obj.session.field_info + field_data = obj.session.field_data _mesh_dict = { "data": mesh, - "clim": field_info.get_scalar_field_range( - obj.field(), False - ), + "clim": field_data.scalar_fields.range(obj.field(), False), "scalars": field, "show_edges": obj.show_edges(), "scalar_bar_args": scalar_bar_args, diff --git a/src/ansys/fluent/visualization/graphics/pyvista/renderer.py b/src/ansys/fluent/visualization/graphics/pyvista/renderer.py index 6ee88be6..2cd0dc74 100644 --- a/src/ansys/fluent/visualization/graphics/pyvista/renderer.py +++ b/src/ansys/fluent/visualization/graphics/pyvista/renderer.py @@ -133,8 +133,9 @@ def render(self, meshes: list[list[dict]]): ) del mesh_dict["position"] if isinstance(mesh, pv.DataSet): - mesh_dict.update(mesh_dict.pop("kwargs")) - self.plotter.add_mesh(mesh, **mesh_dict) + if mesh.n_points > 0: + mesh_dict.update(mesh_dict.pop("kwargs")) + self.plotter.add_mesh(mesh, **mesh_dict) else: y_range = None chart = pv.Chart2D() diff --git a/src/ansys/fluent/visualization/post_data_extractor.py b/src/ansys/fluent/visualization/post_data_extractor.py index 936e132f..c6c306aa 100644 --- a/src/ansys/fluent/visualization/post_data_extractor.py +++ b/src/ansys/fluent/visualization/post_data_extractor.py @@ -89,11 +89,12 @@ def _fetch_mesh_data(obj, *args, **kwargs): raise RuntimeError("Mesh definition is incomplete.") obj._pre_display() field_data = obj.session.fields.field_data - transaction = field_data.new_transaction() + transaction = field_data.new_batch() surf_request = SurfaceFieldDataRequest( surfaces=obj.surfaces(), data_types=[SurfaceDataType.Vertices, SurfaceDataType.FacesConnectivity], + flatten_connectivity=True, *args, **kwargs, ) @@ -143,11 +144,12 @@ def _fetch_contour_data(obj, *args, **kwargs): boundary_values = obj.boundary_values() field_data = obj.session.fields.field_data - transaction = field_data.new_transaction() + transaction = field_data.new_batch() # get scalar field data surf_request = SurfaceFieldDataRequest( surfaces=obj.surfaces(), data_types=[SurfaceDataType.Vertices, SurfaceDataType.FacesConnectivity], + flatten_connectivity=True, *args, **kwargs, ) @@ -178,9 +180,11 @@ def _fetch_pathlines_data(obj, *args, **kwargs): obj._pre_display() field = obj.field() field_data = obj.session.fields.field_data - transaction = field_data.new_transaction() + transaction = field_data.new_batch() pathlines_request = PathlinesFieldDataRequest( - surfaces=obj.surfaces(), field_name=field + surfaces=obj.surfaces(), + field_name=field, + flatten_connectivity=True, ) try: @@ -200,17 +204,17 @@ def _fetch_vector_data(self, obj, *args, **kwargs): field = obj.field() if not field: field = obj.field = "velocity-magnitude" - field_info = obj.session.fields.field_info field_data = obj.session.fields.field_data - transaction = field_data.new_transaction() + transaction = field_data.new_batch() # surface ids - surfaces_info = field_info.get_surfaces_info() + surfaces_info = field_data.surfaces() surf_request = SurfaceFieldDataRequest( surfaces=obj.surfaces(), data_types=[SurfaceDataType.Vertices, SurfaceDataType.FacesConnectivity], + flatten_connectivity=True, *args, **kwargs, ) @@ -286,10 +290,9 @@ def _fetch_xy_data(self, obj): boundary_values = obj.boundary_values() direction_vector = obj.direction_vector() surfaces = obj.surfaces() - field_info = obj.session.fields.field_info field_data = obj.session.fields.field_data - transaction = field_data.new_transaction() - surfaces_info = field_info.get_surfaces_info() + transaction = field_data.new_batch() + surfaces_info = field_data.surfaces() surface_ids = [ id for surf in map(obj._api_helper.remote_surface_name, obj.surfaces()) diff --git a/tests/test_metadata.py b/tests/test_metadata.py index 26d02c1a..104213a2 100644 --- a/tests/test_metadata.py +++ b/tests/test_metadata.py @@ -24,4 +24,4 @@ def test_pkg_version(): - assert __version__ == "0.21.0" + assert __version__ == "0.21.1" diff --git a/tests/test_post.py b/tests/test_post.py index 4d2208d9..c6068b49 100644 --- a/tests/test_post.py +++ b/tests/test_post.py @@ -109,10 +109,9 @@ def get_fields(self) -> Dict[int, Dict]: class MockFieldData: - def __init__(self, solver_data, field_info): + def __init__(self, solver_data): self._session_data = solver_data self._request_to_serve = {"surf": [], "scalar": [], "vector": []} - self._field_info = field_info def new_transaction(self): return MockFieldTransaction(self._session_data, self._request_to_serve) @@ -123,7 +122,7 @@ def get_surface_data( data_type: Union[SurfaceDataType, int], overset_mesh: Optional[bool] = False, ) -> Dict: - surfaces_info = self._field_info().get_surfaces_info() + surfaces_info = self.surfaces() surface_ids = surfaces_info[surface_name]["surface_id"] self._request_to_serve["surf"].append( ( @@ -152,35 +151,26 @@ def get_surface_data( for surface_id in surface_ids } + class _Scalars: + def __init__(self, scalar_data): + self._scalar_data = scalar_data -class MockFieldInfo: - def __init__(self, solver_data): - self._session_data = solver_data + @staticmethod + def range(*args, **kwargs): + return [0.0, 0.0] - def get_scalar_field_range( - self, field: str, node_value: bool = False, surface_ids: List[int] = [] - ) -> List[float]: - if not surface_ids: - surface_ids = [ - v["surface_id"][0] - for k, v in self._session_data["surfaces_info"].items() - ] - minimum, maximum = None, None - for surface_id in surface_ids: - range = self._session_data["range"][field][surface_id][ - "node_value" if node_value else "cell_value" - ] - minimum = min(range[0], minimum) if minimum else range[0] - maximum = max(range[1], maximum) if maximum else range[1] - return [minimum, maximum] + def __call__(self): + return self._scalar_data - def get_scalar_fields_info(self) -> dict: - return self._session_data["scalar_fields_info"] + @property + def scalar_fields(self) -> _Scalars: + return self._Scalars(self._session_data["scalar_fields_info"]) - def get_vector_fields_info(self) -> dict: + @property + def vector_fields(self) -> dict: return self._session_data["vector_fields_info"] - def get_surfaces_info(self) -> dict: + def surfaces(self) -> dict: return self._session_data["surfaces_info"] @@ -199,10 +189,7 @@ def __init__(self, obj=None): "rb", ) as pickle_obj: MockAPIHelper._session_data = pickle.load(pickle_obj) - self.field_info = lambda: MockFieldInfo(MockAPIHelper._session_data) - self.field_data = lambda: MockFieldData( - MockAPIHelper._session_data, self.field_info - ) + self.field_data = lambda: MockFieldData(MockAPIHelper._session_data) self.id = lambda: 1 @@ -220,27 +207,21 @@ def __init__(self, obj=None): class Fields: def __init__(self): - self.field_info = MockFieldInfo(MockSession._session_data) - self.field_data = MockFieldData( - MockSession._session_data, self.field_info - ) + self.field_data = MockFieldData(MockSession._session_data) self.fields = Fields() - self.field_info = MockFieldInfo(MockSession._session_data) - self.field_data = MockFieldData(MockSession._session_data, self.field_info) + self.field_data = MockFieldData(MockSession._session_data) self.id = lambda: 1 + self.monitors = lambda: None def test_field_api(): pyvista_graphics = Graphics(session=MockSession, post_api_helper=MockAPIHelper) contour1 = pyvista_graphics.Contours["contour-1"] - field_info = contour1._api_helper.field_info() field_data = contour1._api_helper.field_data() - surfaces_id = [ - v["surface_id"][0] for k, v in field_info.get_surfaces_info().items() - ] + surfaces_id = [v["surface_id"][0] for k, v in field_data.surfaces().items()] # Get vertices vertices_data = field_data.get_surface_data("wall", SurfaceDataType.Vertices) @@ -303,19 +284,10 @@ def test_graphics_operations(): def test_contour_object(): pyvista_graphics = Graphics(session=MockSession()) contour1 = pyvista_graphics.Contours["contour-1"] - field_info = contour1._api_helper.field_info() - - # Surfaces allowed values should be all surfaces. - assert contour1.surfaces.allowed_values == list( - field_info.get_surfaces_info().keys() - ) # Should accept all valid surface. contour1.surfaces = contour1.surfaces.allowed_values - # Field allowed values should be all fields. - assert contour1.field.allowed_values == list(field_info.get_scalar_fields_info()) - # Important. Because there is no type checking so following passes. contour1.field = [contour1.field.allowed_values[0]] @@ -350,29 +322,6 @@ def test_contour_object(): contour1.range.option = "auto-range-off" assert contour1.range.auto_range_on() is None - # Range should adjust to min/max of node field values. - contour1.node_values = True - contour1.field = "temperature" - surfaces_id = [ - v["surface_id"][0] - for k, v in field_info.get_surfaces_info().items() - if k in contour1.surfaces() - ] - - range = field_info.get_scalar_field_range( - contour1.field(), contour1.node_values(), surfaces_id - ) - assert range[0] == pytest.approx(contour1.range.auto_range_off.minimum()) - assert range[1] == pytest.approx(contour1.range.auto_range_off.maximum()) - - # Range should adjust to min/max of node field values - contour1.field = "pressure" - range = field_info.get_scalar_field_range( - contour1.field(), contour1.node_values(), surfaces_id - ) - assert range[0] == pytest.approx(contour1.range.auto_range_off.minimum()) - assert range[1] == pytest.approx(contour1.range.auto_range_off.maximum()) - def test_vector_object(): if sys.version_info > (3, 13): @@ -382,11 +331,9 @@ def test_vector_object(): ) pyvista_graphics = Graphics(session=MockSession()) vector1 = pyvista_graphics.Vectors["contour-1"] - field_info = vector1._api_helper.field_info() + field_data = vector1._api_helper.field_data() - assert vector1.surfaces.allowed_values == list( - field_info.get_surfaces_info().keys() - ) + assert vector1.surfaces.allowed_values == list(field_data.surfaces().keys()) vector1.surfaces = vector1.surfaces.allowed_values @@ -396,13 +343,7 @@ def test_vector_object(): vector1.range.option = "auto-range-off" assert vector1.range.auto_range_on() is None - surfaces_id = [ - v["surface_id"][0] - for k, v in field_info.get_surfaces_info().items() - if k in vector1.surfaces() - ] - - range = field_info.get_scalar_field_range("velocity-magnitude", False) + range = field_data.scalar_fields.range("velocity-magnitude", False) assert range == pytest.approx( [ vector1.range.auto_range_off.minimum(), @@ -419,7 +360,6 @@ def test_surface_object(): ) pyvista_graphics = Graphics(session=MockSession()) surf1 = pyvista_graphics.Surfaces["surf-1"] - field_info = surf1._api_helper.field_info() surf1.definition.type = "iso-surface" assert surf1.definition.plane_surface() is None @@ -433,21 +373,9 @@ def test_surface_object(): surf1.definition.type = "iso-surface" iso_surf = surf1.definition.iso_surface - assert iso_surf.field.allowed_values == list(field_info.get_scalar_fields_info()) - # Important. Because there is no type checking so following test passes. iso_surf.field = [iso_surf.field.allowed_values[0]] - # Iso surface value should automatically update upon change in field. - iso_surf.field = "temperature" - range = field_info.get_scalar_field_range(iso_surf.field(), True) - assert (range[0] + range[1]) / 2.0 == pytest.approx(iso_surf.iso_value()) - - # Iso surface value should automatically update upon change in field. - iso_surf.field = "pressure" - range = field_info.get_scalar_field_range(iso_surf.field(), True) - assert (range[0] + range[1]) / 2.0 == pytest.approx(iso_surf.iso_value()) - # New surface should be in allowed values for graphics. cont1 = pyvista_graphics.Contours["surf-1"] assert "surf-1" in cont1.surfaces.allowed_values @@ -480,15 +408,13 @@ def test_create_plot_objects(): def test_xyplot_object(): matplotlib_plots = Plots(session=MockSession(), post_api_helper=MockAPIHelper) p1 = matplotlib_plots.XYPlots["p-1"] - field_info = p1._api_helper.field_info() + field_data = p1._api_helper.field_data() - assert p1.surfaces.allowed_values == list(field_info.get_surfaces_info().keys()) + assert p1.surfaces.allowed_values == list(field_data.surfaces().keys()) p1.surfaces = p1.surfaces.allowed_values - assert p1.y_axis_function.allowed_values == list( - field_info.get_scalar_fields_info() - ) + assert p1.y_axis_function.allowed_values == list(field_data.scalar_fields()) # Important. Because there is no type checking so following passes. p1.y_axis_function = [p1.y_axis_function.allowed_values[0]]