Skip to content

Commit

Permalink
Fix retro for deep_copy (#1387)
Browse files Browse the repository at this point in the history
* Add test on MeshedRegion.deep_copy() with bigger mesh (failed in examples)

Signed-off-by: paul.profizi <paul.profizi@ansys.com>

* Add test on MeshedRegion.deep_copy() with bigger mesh (failed in examples)

Signed-off-by: paul.profizi <paul.profizi@ansys.com>

* Add test on MeshedRegion.deep_copy() with bigger mesh (failed in examples)

Signed-off-by: paul.profizi <paul.profizi@ansys.com>

* Fix validated locally for 2024.1.1

Signed-off-by: paul.profizi <paul.profizi@ansys.com>

* fix tests

* retro

* retro

* retro

---------

Signed-off-by: paul.profizi <paul.profizi@ansys.com>
Co-authored-by: cbellot <camille.bellot@ansys.com>
  • Loading branch information
PProfizi and cbellot000 committed Feb 1, 2024
1 parent 6bddcba commit 5142873
Show file tree
Hide file tree
Showing 5 changed files with 62 additions and 13 deletions.
2 changes: 1 addition & 1 deletion src/ansys/dpf/core/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ def _deep_copy(dpf_entity, server=None):
if stream_type == 1:
out = serializer.get_output(0, types.bytes)
else:
out = serializer.get_output(0, types.string)
out = serializer.outputs.serialized_string # Required for retro with 241
deserializer.connect(-1, stream_type)
deserializer.connect(0, out)
type_map = types_enum_to_types()
Expand Down
15 changes: 15 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,21 @@ def return_ds(server=None):
return return_ds


@pytest.fixture()
def fluent_multiphase():
"""Return a function which creates a data sources
with a cas and a dat file of fluent multiphase case."""

def return_ds(server=None):
ds = core.DataSources(server=server)
files = examples.download_fluent_multi_phase(server=server)
ds.set_result_file_path(files["cas"], "cas")
ds.add_file_path(files["dat"], "dat")
return ds

return return_ds


@pytest.fixture()
def cfx_heating_coil():
"""Return a function which creates a data sources
Expand Down
45 changes: 33 additions & 12 deletions tests/test_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -1298,22 +1298,43 @@ def test_field_no_inprocess_localfield(server_in_process, allkindofcomplexity):
assert field == local_field


def test_deep_copy_2_field(server_type, server_in_process):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_type)
assert np.allclose(field_a.data, data)
if SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_8_0:
def test_deep_copy_2_field(server_type, server_in_process):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_type)
assert np.allclose(field_a.data, data)

out = dpf.core.core._deep_copy(field_a, server_in_process)
assert np.allclose(out.data, data)
out = dpf.core.core._deep_copy(field_a, server_in_process)
assert np.allclose(out.data, data)


def test_deep_copy_2_field_remote(server_type, server_type_remote_process):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_type)
assert np.allclose(field_a.data, data)
def test_deep_copy_2_field_remote(server_type, server_type_remote_process):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_type)
assert np.allclose(field_a.data, data)

out = dpf.core.core._deep_copy(field_a, server_type_remote_process)
assert np.allclose(out.data, data)
out = dpf.core.core._deep_copy(field_a, server_type_remote_process)
assert np.allclose(out.data, data)

elif conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_6_0:
# before server version 8.0 deep copying between a legacy grpc client and another client type
# is not supported.
def test_deep_copy_2_field(server_clayer, server_in_process):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_clayer)
assert np.allclose(field_a.data, data)

out = dpf.core.core._deep_copy(field_a, server_in_process)
assert np.allclose(out.data, data)


def test_deep_copy_2_field_remote(server_type):
data = np.random.random(10)
field_a = dpf.core.field_from_array(data, server=server_type)
assert np.allclose(field_a.data, data)

out = dpf.core.core._deep_copy(field_a, server_type)
assert np.allclose(out.data, data)


@pytest.mark.skipif(not SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_8_0, reason="Available for servers >=8.0")
Expand Down
11 changes: 11 additions & 0 deletions tests/test_meshregion.py
Original file line number Diff line number Diff line change
Expand Up @@ -547,6 +547,7 @@ def test_has_element_shape_meshed_region(server_type):

@pytest.mark.slow
def test_mesh_deep_copy(allkindofcomplexity, server_type):
# Small mesh
model = dpf.core.Model(allkindofcomplexity, server=server_type)
mesh = model.metadata.meshed_region
copy = mesh.deep_copy()
Expand Down Expand Up @@ -575,6 +576,16 @@ def test_mesh_deep_copy(allkindofcomplexity, server_type):
)


@pytest.mark.skipif(
not conftest.SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_7_0, reason="Available with CFF starting 7.0"
)
def test_mesh_deep_copy_large(fluent_multiphase, server_type):
model = dpf.core.Model(fluent_multiphase(server=server_type), server=server_type)
mesh = model.metadata.meshed_region
copy = mesh.deep_copy()
assert np.allclose(copy.nodes.scoping.ids, mesh.nodes.scoping.ids)


@pytest.mark.slow
def test_mesh_deep_copy2(simple_bar_model, server_type):
mesh = simple_bar_model.metadata.meshed_region
Expand Down
2 changes: 2 additions & 0 deletions tests/test_operator.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_4_0,
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_5_0,
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_6_2,
SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_8_0,
)

# Check for ANSYS installation env var
Expand Down Expand Up @@ -1337,6 +1338,7 @@ def test_connect_get_non_ascii_string(server_type):
assert str == str_out


@pytest.mark.skipif(not SERVERS_VERSION_GREATER_THAN_OR_EQUAL_TO_8_0, reason="Available for servers >=8.0")
def test_deep_copy_non_ascii_string(server_type):
str = "\N{GREEK CAPITAL LETTER DELTA}"
str_out = dpf.core.core._deep_copy(str, server_type)
Expand Down

0 comments on commit 5142873

Please sign in to comment.