.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples\07-distributed-post\01-distributed_workflows_on_remote.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_07-distributed-post_01-distributed_workflows_on_remote.py: .. _ref_distributed_workflows_on_remote: Create a custom workflow on distributed processes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This example shows how to read and postprocess distributed files on distributed processes. After remote postprocessing, results are merged on the local process. This example creates different operator sequences directly on different servers. These operators are then connected together so that you don't have to care that they are on remote processes. .. graphviz:: digraph foo { graph [pad="0", nodesep="0.3", ranksep="0.3"] node [shape=box, style=filled, fillcolor="#ffcc00", margin="0"]; rankdir=LR; splines=line; subgraph cluster_1 { ds01 [label="data_src", shape=box, style=filled, fillcolor=cadetblue2]; ds01 -> stress1 [style=dashed]; label="Server 1"; style=filled; fillcolor=lightgrey; } subgraph cluster_2 { ds02 [label="data_src", shape=box, style=filled, fillcolor=cadetblue2]; ds02 -> stress2 [style=dashed]; stress2 -> mul; label="Server 2"; style=filled; fillcolor=lightgrey; } stress1 -> "merge"; mul -> "merge"; } .. GENERATED FROM PYTHON SOURCE LINES 49-50 Import the ``dpf-core`` module and its examples files. .. GENERATED FROM PYTHON SOURCE LINES 50-55 .. code-block:: default from ansys.dpf import core as dpf from ansys.dpf.core import examples from ansys.dpf.core import operators as ops .. GENERATED FROM PYTHON SOURCE LINES 56-59 Configure the servers. To make it easier, this example starts local servers. However, you can connect to any existing servers on your network. .. GENERATED FROM PYTHON SOURCE LINES 59-69 .. code-block:: default global_server = dpf.start_local_server( as_global=True, config=dpf.AvailableServerConfigs.InProcessServer ) remote_servers = [ dpf.start_local_server(as_global=False, config=dpf.AvailableServerConfigs.GrpcServer), dpf.start_local_server(as_global=False, config=dpf.AvailableServerConfigs.GrpcServer), ] .. GENERATED FROM PYTHON SOURCE LINES 70-71 Send files to the temporary directory if they are not in shared memory. .. GENERATED FROM PYTHON SOURCE LINES 71-78 .. code-block:: default files = examples.download_distributed_files() server_file_paths = [ dpf.upload_file_in_tmp_folder(files[0], server=remote_servers[0]), dpf.upload_file_in_tmp_folder(files[1], server=remote_servers[1]), ] .. GENERATED FROM PYTHON SOURCE LINES 79-80 Create the first operator chain. .. GENERATED FROM PYTHON SOURCE LINES 80-88 .. code-block:: default remote_operators = [] stress1 = ops.result.stress(server=remote_servers[0]) remote_operators.append(stress1) ds = dpf.DataSources(server_file_paths[0], server=remote_servers[0]) stress1.inputs.data_sources(ds) .. GENERATED FROM PYTHON SOURCE LINES 89-90 Create the second operator chain. .. GENERATED FROM PYTHON SOURCE LINES 90-97 .. code-block:: default stress2 = ops.result.stress(server=remote_servers[1]) mul = stress2 * 2.0 remote_operators.append(mul) ds = dpf.DataSources(server_file_paths[1], server=remote_servers[1]) stress2.inputs.data_sources(ds) .. GENERATED FROM PYTHON SOURCE LINES 98-99 Create the local merge operator. .. GENERATED FROM PYTHON SOURCE LINES 99-102 .. code-block:: default merge = ops.utility.merge_fields_containers() .. GENERATED FROM PYTHON SOURCE LINES 103-104 Connect the operator chains together and get the output. .. GENERATED FROM PYTHON SOURCE LINES 104-113 .. code-block:: default nodal = ops.averaging.to_nodal_fc(merge) merge.connect(0, remote_operators[0], 0) merge.connect(1, remote_operators[1], 0) fc = nodal.get_output(0, dpf.types.fields_container) print(fc[0]) fc[0].meshed_region.plot(fc[0]) .. image-sg:: /examples/07-distributed-post/images/sphx_glr_01-distributed_workflows_on_remote_001.png :alt: 01 distributed workflows on remote :srcset: /examples/07-distributed-post/images/sphx_glr_01-distributed_workflows_on_remote_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none DPF stress_7491.964387Hz Field Location: Nodal Unit: Pa 432 entities Data: 6 components and 432 elementary data Nodal IDs data (Pa) ------------ ---------- 24 -1.931259e+11 4.889198e+11 9.893517e+10 -1.873750e+12 8.823901e+11 2.278725e+10 124 -4.577267e+11 -4.345968e+10 1.408608e+11 -4.123077e+10 1.609307e+10 6.080418e+10 89 -1.935788e+11 -3.031243e+11 1.267524e+11 5.413418e+10 3.645896e+10 -1.808178e+10 ... .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 6.535 seconds) .. _sphx_glr_download_examples_07-distributed-post_01-distributed_workflows_on_remote.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: 01-distributed_workflows_on_remote.py <01-distributed_workflows_on_remote.py>` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: 01-distributed_workflows_on_remote.ipynb <01-distributed_workflows_on_remote.ipynb>` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_