Skip to content

Commit 740ca61

Browse files
rafacantonPProfizi
andauthored
New API for MeshInfo (#1029)
* Add better support for plotting on faces * deep_copy mesh with an operator * use passed server * legacy behavior for legacy server * Improve MeshInfo api. Begin example * Update all get_property calls * fix missing test * New API for mesh_info * Remove unwanted scenarios * Update tests/test_mesh_info.py * Revert test change --------- Co-authored-by: Paul Profizi <[email protected]>
1 parent e37485e commit 740ca61

File tree

5 files changed

+88
-68
lines changed

5 files changed

+88
-68
lines changed

src/ansys/dpf/core/generic_data_container.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,14 +95,13 @@ def set_property(self, property_name, prop):
9595
any_dpf = Any.new_from(prop, self._server)
9696
self._api.generic_data_container_set_property_any(self, property_name, any_dpf)
9797

98-
def get_property(self, property_name, output_type):
98+
def get_property(self, property_name):
9999
"""Get property with given name.
100100
101101
Parameters
102102
----------
103103
property_name : str
104104
Property name.
105-
output_type : :class:`ansys.dpf.core.common.types`
106105
107106
Returns
108107
-------
@@ -111,8 +110,32 @@ def get_property(self, property_name, output_type):
111110
"""
112111
any_ptr = self._api.generic_data_container_get_property_any(self, property_name)
113112
any_dpf = Any(any_ptr, self._server)
113+
output_type = self._type_to_output_method[self.get_property_description()[property_name]]
114114
return any_dpf.cast(output_type)
115115

116+
@property
117+
def _type_to_output_method(self):
118+
# Only the types in any.py need to be casted
119+
from ansys.dpf.core import (
120+
field,
121+
property_field,
122+
string_field,
123+
scoping,
124+
)
125+
126+
out = {
127+
"bool": bool,
128+
"int": int,
129+
"str": str,
130+
"float": float,
131+
"Field": field.Field,
132+
"PropertyField": property_field.PropertyField,
133+
"StringField": string_field.StringField,
134+
"Scoping": scoping.Scoping,
135+
"GenericDataContainer": GenericDataContainer,
136+
}
137+
return out
138+
116139
def get_property_description(self):
117140
"""Get a dictionary description of properties by name and data type
118141

src/ansys/dpf/core/mesh_info.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@
44
"""
55
from ansys.dpf.core import server as server_module
66
from ansys.dpf.core.generic_data_container import GenericDataContainer
7-
from ansys.dpf.core.scoping import Scoping
8-
from ansys.dpf.core.string_field import StringField
97

108

119
class MeshInfo:
@@ -104,21 +102,20 @@ def deep_copy(self, server=None):
104102
mesh_info.generic_data_container = self._generic_data_container.deep_copy(server)
105103
return mesh_info
106104

107-
def get_property(self, property_name, output_type):
105+
def get_property(self, property_name):
108106
"""Get property with given name.
109107
110108
Parameters
111109
----------
112110
property_name : str
113111
Property name.
114-
output_type : :class:`ansys.dpf.core.common.types`
115112
116113
Returns
117114
-------
118115
type
119116
Property object instance.
120117
"""
121-
return self.generic_data_container.get_property(property_name, output_type)
118+
return self.generic_data_container.get_property(property_name)
122119

123120
def set_property(self, property_name, prop):
124121
"""Register given property with the given name.
@@ -142,7 +139,7 @@ def get_number_nodes(self):
142139
Number of nodes of the mesh.
143140
"""
144141

145-
return self.generic_data_container.get_property("num_nodes", int)
142+
return self.generic_data_container.get_property("num_nodes")
146143

147144
@property
148145
def get_number_elements(self):
@@ -153,7 +150,7 @@ def get_number_elements(self):
153150
Number of elements of the mesh.
154151
"""
155152

156-
return self.generic_data_container.get_property("num_elements", int)
153+
return self.generic_data_container.get_property("num_elements")
157154

158155
@property
159156
def get_splittable_by(self):
@@ -164,7 +161,7 @@ def get_splittable_by(self):
164161
Name of the properties according to which the mesh can be split by.
165162
"""
166163

167-
return self.generic_data_container.get_property("splittable_by", StringField)
164+
return self.generic_data_container.get_property("splittable_by")
168165

169166
@property
170167
def get_available_elem_types(self):
@@ -175,7 +172,7 @@ def get_available_elem_types(self):
175172
element type available for the mesh.
176173
"""
177174

178-
return self.generic_data_container.get_property("avalaible_elem_type", Scoping)
175+
return self.generic_data_container.get_property("avalaible_elem_type")
179176

180177
def set_number_nodes(self, number_of_nodes):
181178
"""Set the number of nodes in the mesh"""

tests/test_any.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def test_cast_generic_data_container_any(server_type):
9090
any_dpf = dpf.Any.new_from(entity)
9191
new_entity = any_dpf.cast()
9292

93-
new_field = new_entity.get_property("field", dpf.Field)
93+
new_field = new_entity.get_property("field")
9494

9595
assert field.location == new_field.location
9696

tests/test_generic_data_container.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def test_set_get_property_generic_data_container(server_type):
2020
gdc = dpf.GenericDataContainer(server=server_type)
2121
entity = dpf.Field(location="phase", nature=dpf.natures.scalar, server=server_type)
2222
gdc.set_property("viscosity", entity)
23-
new_entity = gdc.get_property("viscosity", dpf.Field)
23+
new_entity = gdc.get_property("viscosity")
2424
assert entity.location == new_entity.location
2525

2626

@@ -31,17 +31,17 @@ def test_get_property_description_generic_data_container(server_type):
3131
gdc = dpf.GenericDataContainer(server=server_type)
3232
entity = 42
3333
gdc.set_property("my-int", entity)
34-
new_entity = gdc.get_property("my-int", int)
34+
new_entity = gdc.get_property("my-int")
3535
assert 42 == new_entity
3636

3737
entity = 4.2
3838
gdc.set_property("my-float", entity)
39-
new_entity = gdc.get_property("my-float", float)
39+
new_entity = gdc.get_property("my-float")
4040
assert 4.2 == new_entity
4141

4242
entity = "hello world"
4343
gdc.set_property("my-string", entity)
44-
new_entity = gdc.get_property("my-string", str)
44+
new_entity = gdc.get_property("my-string")
4545
assert "hello world" == new_entity
4646

4747
entity = dpf.Field(location="phase", nature=dpf.natures.scalar, server=server_type)

0 commit comments

Comments
 (0)