aboutsummaryrefslogtreecommitdiff
path: root/Python/pywarpx/picmi.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Python/pywarpx/picmi.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/Python/pywarpx/picmi.py b/Python/pywarpx/picmi.py
index d5d00fb30..0417a260f 100644
--- a/Python/pywarpx/picmi.py
+++ b/Python/pywarpx/picmi.py
@@ -2161,6 +2161,7 @@ class ParticleDiagnostic(picmistandard.PICMI_ParticleDiagnostic, WarpXDiagnostic
variables = list(variables)
variables.sort()
+ # species list
if np.iterable(self.species):
species_list = self.species
else:
@@ -2342,6 +2343,46 @@ class LabFrameParticleDiagnostic(picmistandard.PICMI_LabFrameParticleDiagnostic,
self.set_write_dir()
+ # --- Use a set to ensure that fields don't get repeated.
+ variables = set()
+
+ if self.data_list is not None:
+ for dataname in self.data_list:
+ if dataname == 'position':
+ # --- The positions are alway written out anyway
+ pass
+ elif dataname == 'momentum':
+ variables.add('ux')
+ variables.add('uy')
+ variables.add('uz')
+ elif dataname == 'weighting':
+ variables.add('w')
+ elif dataname == 'fields':
+ variables.add('Ex')
+ variables.add('Ey')
+ variables.add('Ez')
+ variables.add('Bx')
+ variables.add('By')
+ variables.add('Bz')
+ elif dataname in ['ux', 'uy', 'uz', 'Ex', 'Ey', 'Ez', 'Bx', 'By', 'Bz', 'Er', 'Et', 'Br', 'Bt']:
+ variables.add(dataname)
+
+ # --- Convert the set to a sorted list so that the order
+ # --- is the same on all processors.
+ variables = list(variables)
+ variables.sort()
+
+ # species list
+ if np.iterable(self.species):
+ species_list = self.species
+ else:
+ species_list = [self.species]
+
+ for specie in species_list:
+ diag = pywarpx.Bucket.Bucket(self.name + '.' + specie.name,
+ variables = variables)
+ self.diagnostic._species_dict[specie.name] = diag
+
class ReducedDiagnostic(picmistandard.base._ClassWithInit, WarpXDiagnosticBase):
"""