Skip to content

Heat passed through contact surface with the use of PyDPF #1028

Open
@dtsalag

Description

@dtsalag

📝 Description of the example

The script below measures the heat that has passed through the selected contact surface by getting the CONTA174 element heat flow and plots it at a specific time step of the analysis. Also it sums up and prints the total heat that has passed through the preferable contact surface during the whole analysis.

A prerequisite for the generation of the contact surface named selection is to add the following APDL command under the desired contact:

my_cont = cid

And the following command object before solution:

/PREP7

ESEL, S, TYPE, , my_cont
CM, PCB_CONT, ELEM
ALLSEL

/SOLU

The PyDPF script is as follows:

from ansys.dpf import core as dpf
from ansys.dpf.core.plotter import DpfPlotter

import numpy as np

"""
Load result file and create model database
"""

path = "../../model/file.rth"

ds = dpf.DataSources(path)
model = dpf.Model(ds)

mesh = model.metadata.meshed_region

"""
Select preferable Named Selection set in Mechanical
"""

get_NSs = model.metadata.available_named_selections

mesh_scoping = model.metadata.named_selection("PCB_CONT_2")

"""
Scope Named Selection to corresponding Mesh
"""

scoping_op = dpf.operators.mesh.from_scoping()
scoping_op.inputs.scoping.connect(mesh_scoping)
scoping_op.inputs.mesh.connect(mesh)

my_mesh = scoping_op.outputs.mesh()

"""
Get Heat Flow results at last time step
"""

contact_heatFlow_op = dpf.operators.result.nmisc(
    # time_scoping=-1,
    mesh_scoping=mesh_scoping,
    data_sources=ds,
    item_index=98,
)

contact_heatFlow_res = contact_heatFlow_op.outputs.fields_container()

"""
Contour Plot: Heat Flow
"""

sargs = dict(title="Contact Heat Flow [J]", title_font_size=30, label_font_size=20)
plot = DpfPlotter()
plot.add_field(contact_heatFlow_res[0], my_mesh, show_max=True, show_min=True, notebook=False, scalar_bar_args=sargs)
plot.show_figure(show_axes=True)

"""
Total Heat Flow through contact(s)
"""

heat_flow = np.sum(np.array(contact_heatFlow_res[0].data))
print("Total Heat Flow: ", round(heat_flow,2), " [J]")

📁 Files needed for running the example

Heat_through_Contact_PyDPF.zip

💻 Which operating system are you using?

Windows

📀 Which ANSYS version are you using?

2023R1

🐍 Which Python version are you using?

3.11

📦 Installed packages

ansys-dpf-core==0.8.1
ansys-dpf-gate==0.3.1
ansys-dpf-gatebin==0.3.1
ansys-grpc-dpf==0.7.1
asttokens==2.2.1
backcall==0.2.0
cachetools==5.3.1
certifi==2023.5.7
chardet==5.1.0
charset-normalizer==3.1.0
colorama==0.4.6
comm==0.1.3
contourpy==1.0.7
cycler==0.11.0
debugpy==1.6.7
decorator==5.1.1
et-xmlfile==1.1.0
executing==1.2.0
fonttools==4.40.0
google-api-core==2.11.0
google-api-python-client==2.88.0
google-auth==2.19.1
google-auth-httplib2==0.1.0
googleapis-common-protos==1.59.1
grpcio==1.54.2
httplib2==0.22.0
idna==3.4
importlib-metadata==6.6.0
ipykernel==6.23.2
ipython==8.14.0
jedi==0.18.2
jupyter_client==8.2.0
jupyter_core==5.3.0
kiwisolver==1.4.4
matplotlib==3.7.1
matplotlib-inline==0.1.6
nest-asyncio==1.5.6
numpy==1.24.3
openpyxl==3.1.2
packaging==23.1
pandas==2.0.2
parso==0.8.3
pexpect==4.8.0
pickleshare==0.7.5
Pillow==9.5.0
platformdirs==3.5.3
pooch==1.7.0
prompt-toolkit==3.0.38
protobuf==4.23.2
psutil==5.9.5
ptyprocess==0.7.0
pure-eval==0.2.2
pyasn1==0.5.0
pyasn1-modules==0.3.0
Pygments==2.15.1
pyparsing==3.0.9
python-dateutil==2.8.2
pytz==2023.3
pyvista==0.39.1
pywin32==306
pyzmq==25.1.0
requests==2.31.0
rsa==4.9
scooby==0.7.2
six==1.16.0
stack-data==0.6.2
tornado==6.3.2
tqdm==4.65.0
traitlets==5.9.0
tzdata==2023.3
uritemplate==4.1.1
urllib3==1.26.16
vtk==9.2.6
wcwidth==0.2.6
zipp==3.15.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    examplesRelated to PyDPF-Core examples

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions