I use dpf core to read a rst file which included defined local coordinate system (ID 1205) and generate normal strain in X, Y direction on a specified location (for example (10,20,0)) but it's can not find that local coordinate system. Can any one help me. My code are below:
import sys
from ansys.dpf import core as dpf
from ansys.dpf.core import operators as ops
rst_path = 'D:/02_AE_ECU/2026/PCBStrain/APU/powerPCB_files/dp0/SYS-13/MECH/file.rst'
data_sources = dpf.DataSources(rst_path)
cs_id = 1205
try:
cs_provider = ops.metadata.coordinate_system_data_provider()
cs_provider.inputs.data_sources.connect(data_sources)
cs_container = cs_provider.outputs.coordinate_systems_container()
target_cs = cs_container.by_id(cs_id)
print(f"Founded coordinate system with ID: {cs_id}")
except Exception as e:
print(f"Error: Can not find coordinate system with ID {cs_id}.")
print(f"Recheck ID or your .rst. Detail: {e}")
sys.exit()
strain_op = ops.result.elastic_strain()
strain_op.inputs.data_sources.connect(data_sources)
strain_op.inputs.result_coordinate_system.connect(target_cs)
try:
strain_fields_container = strain_op.outputs.fields_container.get()
except AttributeError:
strain_fields_container = strain_op.outputs.fields_container()
if not strain_fields_container:
print("No strain output on your rst file.")
sys.exit()
(time_step=1)
strain_tensor_field = strain_fields_container[0]
EX
ex_selector = ops.logic.component_selector()
ex_selector.inputs.field.connect(strain_tensor_field)
ex_selector.inputs.component_number.connect(0)
normal_strain_X_field = ex_selector.outputs.field()
EY
ey_selector = ops.logic.component_selector()
ey_selector.inputs.field.connect(strain_tensor_field)
ey_selector.inputs.component_number.connect(1)
normal_strain_Y_field = ey_selector.outputs.field()
4. Show
print("\n--- Done ---")
print(f"Read and process with: {rst_path}")
print(f"Strain according to coordinate system: {cs_id}")
print("\n Normal Strain X (EX):")
print(normal_strain_X_field)
print(f"Max EX : {normal_strain_X_field.data.max()}")
print(f"Min EX : {normal_strain_X_field.data.min()}")
print("\n Normal Strain Y (EY):")
print(normal_strain_Y_field)
print(f" Max EY : {normal_strain_Y_field.data.max()}")
print(f" Min EY : {normal_strain_Y_field.data.min()}")