animate_nodal_solution_set for Stresses, Strains
Hi,
I currently have a sim with one load step and several substeps. Just curious as to whether I can animate the nodal stresses, strains using the animate_nodal_solution_set function?
At the moment, no, but I can add these features in the near future.
No problem. Perhaps a simpler alternative in the interim would be to write a sequence of .vtu files, i.e. results001.vtu, results.002.vtu. This can get read by Paraview as an animated sequence. I modified the save_to_vtk() function to remove the "Nodal Solution X" label. This way every .vtu file simply has "Nodal Solution" without numbering, allowing for proper playback.
I have attached my modified function here if it is of any help. I simply use this in a loop.
def save_as_vtk2(resultf, filename, rsets=None, result_types=['ENS','EEL','EPL']):
# Copy grid as to not write results to original object
grid = resultf.grid.copy()
if rsets is None:
rsets = range(resultf.nsets)
elif isinstance(rsets, int):
rsets = [rsets]
elif not isinstance(rsets, Iterable):
raise TypeError('rsets must be an iterable like [0, 1, 2] or range(3)')
if result_types is None:
result_types = ELEMENT_INDEX_TABLE_KEYS
elif not isinstance(result_types, list):
raise TypeError('result_types must be a list of solution types')
else:
for item in result_types:
if item not in ELEMENT_INDEX_TABLE_KEYS:
raise ValueError('Invalid result type "%s" % item')
try:
from tqdm import tqdm
pbar = tqdm(total=len(rsets), desc='Saving to file')
except ImportError:
pbar = None
for i in rsets:
# Nodal results
_, val = resultf.nodal_solution(i)
grid.point_arrays['Nodal Solution'] = val #Removed Nodal Solution XX label
# Nodal results
for rtype in resultf.available_results:
if rtype in result_types:
_, values = resultf._nodal_result(i, rtype)
desc = element_index_table_info[rtype]
grid.point_arrays['{:s}'.format(desc)] = values #Removed Nodal Solution XX label
if pbar is not None:
pbar.update(1)
grid.save(filename)
if pbar is not None:
pbar.close()
def APDL_VTK():
rst = pyansys.read_binary('apdl/file.rst')
rsets = range(0, rst.nsets, 5)
for i in rsets:
save_as_vtk2(rst,'output/vtk/ansys_vtk_%d.vtk'%i, i)
Linking #362
Clearly there is a need for improving plotting capabilities. We probably need to think about the long term plan and the big picture.
We might want to consider pulling off the plotting components of pymapdl into a separate library as pyfluent did within pyfluent-visualization.
I think that is way to go forward. If we share the data model with pyfluent we might be able to reuse many of their functions. But I guess it is not possible.