# Use Mechanical DPF to define a "path" and calculate/integrate stress along it

Options
Member, Employee Posts: 283
edited June 2023

How can we define a conceptual path (not an actual path + result in the tree) in DPF in Mechanical. I want to define the path with start+end points and # of divisions. I then want to map a stress result to those path points and then possibly also do a length-normalized average or integration along that path.

Anybody have examples of this?

Tagged:

• Member, Employee Posts: 230
Options
```# example to create 1 path and generate multiple stress results on it ~~~~~~~~~~~
import os
import matplotlib.pyplot as plt
from ansys.dpf import core as dpf
from ansys.dpf.core import operators as ops
from ansys.dpf.core.plotter import DpfPlotter
import numpy as np

result_dict = {} # not used, customer wanted only 1st/last result
path2rst = r'mypath'

example_path = os.path.join(path2rst,'file.rst')
model = dpf.Model(example_path)
stress_fc = model.results.stress().eqv().eval()
stressX = model.results.stress().X().eval()
stressY = model.results.stress().Y().eval()
stressZ = model.results.stress().Z().eval()
stresses = {'X':stressX, 'Y': stressY , 'Z': stressZ , 'EQV': stress_fc}

# Here you can use any coordinates for the start/end. Robust, doesn't care if you are in the model or not!
startCoordinate = [0,0,0]
endCoordinate = [1000,500,1000]
ipoints = 100  # in between points, must be >= 0 obviously

dxyz = (np.array(endCoordinate) - np.array(startCoordinate))/(ipoints+1) # delta for xyz

pathCoordinates = [startCoordinate]
for i in range(1,ipoints+2):
pathCoordinates.append((startCoordinate + i * dxyz).tolist())

field_coord = dpf.fields_factory.create_3d_vector_field(len(pathCoordinates))
field_coord.data = pathCoordinates
field_coord.scoping.ids = list(range(1, len(pathCoordinates) + 1))

for stress in stresses:
stressModel = stresses[stress]
mapping_operator = ops.mapping.on_coordinates(
fields_container=stressModel, coordinates=field_coord, create_support=True, mesh=mesh)
fields_mapped = mapping_operator.outputs.fields_container()

field_m = fields_mapped[0]
mesh_m = field_m.meshed_region
pl = DpfPlotter()