From 0619930cfac79a585d3b07a221c210c1c0d004e4 Mon Sep 17 00:00:00 2001 From: Michael Krayer Date: Thu, 27 May 2021 23:38:53 +0200 Subject: [PATCH] added particle visualization methods --- particle.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/particle.py b/particle.py index 9ed8299..a23f427 100644 --- a/particle.py +++ b/particle.py @@ -76,7 +76,7 @@ class Particles: attr = {} for key in self.attr: attr[key] = self.attr[key].copy() - return Particles(self.num,self.time,attr,period) + return Particles(self.num,self.time,attr,self.period) def add_attribute(self,key,val): import numpy if isinstance(val,(tuple,list,numpy.ndarray)): @@ -125,6 +125,22 @@ class Particles: key = ('x','y','z')[axis] self.attr[key] %= self.period[axis] return + def to_vtk(self,deep=False): + import pyvista as pv + import numpy as np + position = np.vstack([self.attr[key] for key in ('x','y','z')]).transpose() + mesh = pv.PolyData(position,deep=deep) + for key in self.attr: + mesh[key] = self.attr[key] + return mesh + + def glyph(self,theta_resolution=10,phi_resolution=10,deep=False): + import pyvista as pv + assert self.has_attribute('r'), "Attribute 'r' required." + geom = pv.Sphere(radius=1,theta_resolution=theta_resolution, + phi_resolution=phi_resolution) + return self.to_vtk(deep=deep).glyph(scale='r',factor=1,geom=geom) + class Trajectories: def __init__(self,part,unraveled=False,copy_particles=False): import numpy