|
29 | 29 |
|
30 | 30 | import numpy as np |
31 | 31 | import numpy.testing |
| 32 | +from packaging.version import parse as parse_version |
32 | 33 | import pytest |
33 | 34 |
|
34 | 35 | from ansys.acp.core import ElementalDataType, UnitSystemType |
@@ -145,20 +146,45 @@ def test_mesh_data(minimal_complete_model): |
145 | 146 | numpy.testing.assert_equal(mesh.element_nodes_offsets, np.array([0])) |
146 | 147 |
|
147 | 148 |
|
148 | | -def test_elemental_data(minimal_complete_model): |
| 149 | +def test_elemental_data(acp_instance, minimal_complete_model): |
149 | 150 | data = minimal_complete_model.elemental_data |
150 | 151 | numpy.testing.assert_allclose(data.element_labels.values, np.array([1])) |
151 | 152 | numpy.testing.assert_allclose(data.normal.values, np.array([[0.0, 0.0, 1.0]])) |
152 | 153 | numpy.testing.assert_allclose(data.thickness.values, np.array([1e-4])) |
153 | 154 | numpy.testing.assert_allclose(data.relative_thickness_correction.values, np.array([1.0])) |
154 | 155 | numpy.testing.assert_allclose(data.area.values, np.array([9e4])) |
155 | | - # numpy.testing.assert_allclose(data.price.values, np.array([0.0])) # disabled due to issue #717. |
| 156 | + # The 'price' is disabled on servers prior to 25.2 due to issue #717. |
| 157 | + if parse_version(acp_instance.server_version) >= parse_version("25.2"): |
| 158 | + numpy.testing.assert_allclose(data.price.values, np.array([0.0])) |
| 159 | + else: |
| 160 | + data.price is None |
156 | 161 | numpy.testing.assert_allclose(data.volume.values, np.array([9.0])) |
157 | 162 | numpy.testing.assert_allclose(data.mass.values, np.array([7.065e-08])) |
158 | 163 | numpy.testing.assert_allclose(data.offset.values, np.array([5e-5])) |
159 | 164 | numpy.testing.assert_allclose(data.cog.values, np.array([[0.0, 0.0, 5e-5]])) |
160 | 165 |
|
161 | 166 |
|
| 167 | +def test_elemental_data_with_void_filler_analysis_plies( |
| 168 | + acp_instance, load_model_from_tempfile, skip_before_version |
| 169 | +): |
| 170 | + """Regression test for issue #717. |
| 171 | +
|
| 172 | + Retrieving the price of a model with void and filler analysis plies crashes the server |
| 173 | + prior to 25.2. |
| 174 | + """ |
| 175 | + # On 2024R2, accessing the elemental data failed for this model since the |
| 176 | + # CoG is not supported for LayeredPolyhedron elements. |
| 177 | + skip_before_version("25.1") |
| 178 | + |
| 179 | + is_supported = parse_version(acp_instance.server_version) >= parse_version("25.2") |
| 180 | + |
| 181 | + with load_model_from_tempfile("regression_model_717.acph5") as model: |
| 182 | + if is_supported: |
| 183 | + assert model.elemental_data.price is not None |
| 184 | + else: |
| 185 | + assert model.elemental_data.price is None |
| 186 | + |
| 187 | + |
162 | 188 | def test_nodal_data(minimal_complete_model): |
163 | 189 | data = minimal_complete_model.nodal_data |
164 | 190 | numpy.testing.assert_allclose(data.node_labels.values, np.array([1, 2, 3, 4])) |
@@ -187,9 +213,16 @@ def test_elemental_data_to_pyvista(minimal_complete_model): |
187 | 213 |
|
188 | 214 | @pytest.mark.graphics |
189 | 215 | @pytest.mark.parametrize("component", [e.value for e in ElementalDataType]) |
190 | | -def test_elemental_data_to_pyvista_with_component(minimal_complete_model, component): |
| 216 | +def test_elemental_data_to_pyvista_with_component( |
| 217 | + acp_instance, |
| 218 | + minimal_complete_model, |
| 219 | + component, |
| 220 | +): |
191 | 221 | import pyvista |
192 | 222 |
|
| 223 | + if component == "price" and parse_version(acp_instance.server_version) < parse_version("25.2"): |
| 224 | + pytest.skip("Price is not supported on this version of the server.") |
| 225 | + |
193 | 226 | data = minimal_complete_model.elemental_data |
194 | 227 | if not hasattr(data, component): |
195 | 228 | pytest.skip(f"Model elemental data does not contain component '{component}'") |
|
0 commit comments