Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
etype, ele_data_arr,
nitem, elemtype,
ptr_off,
as_global=not in_element_coord_sys)
if nitem != 6:
ele_data_arr = ele_data_arr[:, :6]
else:
raise NotImplementedError('Not implemented for ANSYS older than v14.5')
# trim off extra data
ele_data_arr = ele_data_arr[:nelemnode]
if principal:
ele_data_arr, isnan = _binary_reader.compute_principal_stress(ele_data_arr)
ele_data_arr[isnan] = np.nan
splitind = np.cumsum(nnode)
element_stress = np.split(ele_data_arr, splitind[:-1])
# reorder list using sorted indices
enum = self._eeqv
sidx = np.argsort(enum)
element_stress = [element_stress[i] for i in sidx]
enode = []
for i in sidx:
enode.append(self.geometry.elem[i][10:10+nnode[i]])
# Get element numbers
elemnum = self._eeqv[self._sidx_elem]
>>> import pyansys
>>> rst = pyansys.read_binary('file.rst')
>>> nnum, stress = rst.principal_nodal_stress(0)
Notes
-----
ANSYS equivalent of:
PRNSOL, S, PRIN
which returns:
S1, S2, S3 principal stresses, SINT stress intensity, and SEQV
equivalent stress.
"""
# get component stress
nodenum, stress = self.nodal_stress(rnum)
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
return nodenum, pstress
pstress[isnan] = np.nan
pstress_r, isnan = _binary_reader.compute_principal_stress(stress_r)
pstress_r[isnan] = np.nan
return nnum, pstress + 1j*pstress_r
elif full_rotor:
# compute principle stress
pstress = np.empty((self.n_sector, stress.shape[1], 5), np.float64)
for i in range(stress.shape[0]):
pstress[i], isnan = _binary_reader.compute_principal_stress(stress[i])
pstress[i, isnan] = np.nan
return nnum, pstress
else:
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
return nnum, pstress
equivalent stress.
"""
if as_complex and full_rotor:
raise Exception('complex and full_rotor cannot both be True')
# get component stress
nnum, stress = self.nodal_stress(rnum, phase, as_complex, full_rotor)
# compute principle stress
if as_complex:
stress_r = np.imag(stress)
stress = np.real(stress)
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
pstress_r, isnan = _binary_reader.compute_principal_stress(stress_r)
pstress_r[isnan] = np.nan
return nnum, pstress + 1j*pstress_r
elif full_rotor:
# compute principle stress
pstress = np.empty((self.n_sector, stress.shape[1], 5), np.float64)
for i in range(stress.shape[0]):
pstress[i], isnan = _binary_reader.compute_principal_stress(stress[i])
pstress[i, isnan] = np.nan
return nnum, pstress
else:
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
return nnum, pstress
which returns:
S1, S2, S3 principal stresses, SINT stress intensity, and SEQV
equivalent stress.
"""
if as_complex and full_rotor:
raise Exception('complex and full_rotor cannot both be True')
# get component stress
nnum, stress = self.nodal_stress(rnum, phase, as_complex, full_rotor)
# compute principle stress
if as_complex:
stress_r = np.imag(stress)
stress = np.real(stress)
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
pstress_r, isnan = _binary_reader.compute_principal_stress(stress_r)
pstress_r[isnan] = np.nan
return nnum, pstress + 1j*pstress_r
elif full_rotor:
# compute principle stress
pstress = np.empty((self.n_sector, stress.shape[1], 5), np.float64)
for i in range(stress.shape[0]):
pstress[i], isnan = _binary_reader.compute_principal_stress(stress[i])
pstress[i, isnan] = np.nan
return nnum, pstress
else:
pstress, isnan = _binary_reader.compute_principal_stress(stress)
if as_complex:
stress_r = np.imag(stress)
stress = np.real(stress)
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
pstress_r, isnan = _binary_reader.compute_principal_stress(stress_r)
pstress_r[isnan] = np.nan
return nnum, pstress + 1j*pstress_r
elif full_rotor:
# compute principle stress
pstress = np.empty((self.n_sector, stress.shape[1], 5), np.float64)
for i in range(stress.shape[0]):
pstress[i], isnan = _binary_reader.compute_principal_stress(stress[i])
pstress[i, isnan] = np.nan
return nnum, pstress
else:
pstress, isnan = _binary_reader.compute_principal_stress(stress)
pstress[isnan] = np.nan
return nnum, pstress