Skip to content

Commit 633ad27

Browse files
cbellot000PProfizi
andauthored
Accept rank-1 NumPy arrays for workflow and operator inputs which accept lists (#2025)
* Operator and workflow connect numpy array * style * Fix coverage for dpf_operator.py * Remove code related to unsupported DPF versions in workflow.py Current client is not compatible with DPF<4.0 anyway * Remove code related to unsupported DPF versions in dpf_operator.py Current client does not support DPF<4.0 anyway * Remove unused code --------- Co-authored-by: Paul Profizi <[email protected]>
1 parent 484d996 commit 633ad27

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed

src/ansys/dpf/core/dpf_operator.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import os
2727
import traceback
2828
import warnings
29+
import numpy
2930

3031
from enum import Enum
3132
from ansys.dpf.core.check_version import (
@@ -276,7 +277,7 @@ def connect(self, pin, inpt, pin_out=0):
276277
self._api.operator_connect_operator_output(self, pin, inpt, pin_out)
277278
elif isinstance(inpt, Output):
278279
self._api.operator_connect_operator_output(self, pin, inpt._operator, inpt._pin)
279-
elif isinstance(inpt, list):
280+
elif isinstance(inpt, (list, numpy.ndarray)):
280281
from ansys.dpf.core import collection
281282

282283
inpt = collection.CollectionBase.integral_collection(inpt, self._server)

src/ansys/dpf/core/workflow.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
from enum import Enum
3232
from typing import Union
3333

34+
import numpy
35+
3436
from ansys import dpf
3537
from ansys.dpf.core import dpf_operator, inputs, outputs
3638
from ansys.dpf.core.check_version import (
@@ -214,7 +216,7 @@ def connect(self, pin_name, inpt, pin_out=0):
214216
self._api.work_flow_connect_operator_output(self, pin_name, inpt, pin_out)
215217
elif isinstance(inpt, dpf_operator.Output):
216218
self._api.work_flow_connect_operator_output(self, pin_name, inpt._operator, inpt._pin)
217-
elif isinstance(inpt, list):
219+
elif isinstance(inpt, (list, numpy.ndarray)):
218220
from ansys.dpf.core import collection
219221

220222
inpt = collection.CollectionBase.integral_collection(inpt, self._server)

tests/test_operator.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import weakref
2828
from pathlib import Path
2929

30+
import numpy
3031
import numpy as np
3132
import pytest
3233
import copy
@@ -93,6 +94,14 @@ def test_connect_list_operator(velocity_acceleration):
9394
assert fcOut.get_available_ids_for_label() == [1, 2]
9495

9596

97+
def test_connect_array_operator(velocity_acceleration):
98+
model = dpf.core.Model(velocity_acceleration)
99+
op = model.operator("U")
100+
op.connect(0, numpy.array([1, 2], numpy.int32))
101+
fcOut = op.get_output(0, dpf.core.types.fields_container)
102+
assert fcOut.get_available_ids_for_label() == [1, 2]
103+
104+
96105
def test_connect_list_operator_builtin(velocity_acceleration):
97106
model = dpf.core.Model(velocity_acceleration)
98107
disp = model.results.displacement()

tests/test_workflow.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
from pathlib import Path
2424

25+
import numpy
2526
import numpy as np
2627
import pytest
2728
import platform
@@ -137,6 +138,19 @@ def test_connect_list_workflow(velocity_acceleration, server_type):
137138
assert f_out.get_available_ids_for_label() == [1, 2]
138139

139140

141+
def test_connect_array_workflow(velocity_acceleration, server_type):
142+
wf = dpf.core.Workflow(server=server_type)
143+
wf.progress_bar = False
144+
model = dpf.core.Model(velocity_acceleration, server=server_type)
145+
op = model.operator("U")
146+
wf.add_operator(op)
147+
wf.set_input_name("time_scoping", op, 0)
148+
wf.set_output_name("field", op, 0)
149+
wf.connect("time_scoping", numpy.array([1, 2], numpy.int32))
150+
f_out = wf.get_output("field", dpf.core.types.fields_container)
151+
assert f_out.get_available_ids_for_label() == [1, 2]
152+
153+
140154
def test_connect_fieldscontainer_workflow(server_type):
141155
wf = dpf.core.Workflow(server=server_type)
142156
wf.progress_bar = False

0 commit comments

Comments
 (0)