[yt-svn] commit/yt: 8 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Tue Mar 21 18:26:51 PDT 2017
8 new commits in yt:
https://bitbucket.org/yt_analysis/yt/commits/84ab33446894/
Changeset: 84ab33446894
Branch: yt
User: atmyers
Date: 2017-02-24 22:58:26+00:00
Summary: Adding an AMReX frontend to yt
Affected #: 1 file
diff -r 3eca2ae80ab14a48b643d3055d7d3c0933fa77ae -r 84ab334468941f35a6e3627de59766de030eeef4 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -139,8 +139,107 @@
startIndex[2]:endIndex[2]] = tofill
+class BoxLibParticleHeader(object):
+
+ def __init__(self, ds, directory_name, is_checkpoint,
+ extra_field_names=None):
+
+ self.species_name = directory_name
+ header_filename = ds.output_dir + "/" + directory_name + "/Header"
+ with open(header_filename, "r") as f:
+ self.version_string = f.readline().strip()
+
+ particle_real_type = self.version_string.split('_')[-1]
+ particle_real_type = self.version_string.split('_')[-1]
+ if particle_real_type == 'double':
+ self.real_type = np.float64
+ elif particle_real_type == 'single':
+ self.real_type = np.float32
+ else:
+ raise RuntimeError("yt did not recognize particle real type.")
+ self.int_type = np.int32
+
+ self.dim = int(f.readline().strip())
+ self.num_int_base = 2 + self.dim
+ self.num_real_base = self.dim
+ self.num_int_extra = 0 # this should be written by Boxlib, but isn't
+ self.num_real_extra = int(f.readline().strip())
+ self.num_int = self.num_int_base + self.num_int_extra
+ self.num_real = self.num_real_base + self.num_real_extra
+ self.num_particles = int(f.readline().strip())
+ self.max_next_id = int(f.readline().strip())
+ self.finest_level = int(f.readline().strip())
+ self.num_levels = self.finest_level + 1
+
+ # Boxlib particles can be written in checkpoint or plotfile mode
+ # The base integer fields are only there for checkpoints, but some
+ # codes use the checkpoint format for plotting
+ if not is_checkpoint:
+ self.num_int_base = 0
+ self.num_int_extra = 0
+ self.num_int = 0
+
+ self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
+ self.data_map = {}
+ for level_num in range(self.num_levels):
+ self.grids_per_level[level_num] = int(f.readline().strip())
+ self.data_map[level_num] = {}
+
+ pfd = namedtuple("ParticleFileDescriptor",
+ ["file_number", "num_particles", "offset"])
+
+ for level_num in range(self.num_levels):
+ for grid_num in range(self.grids_per_level[level_num]):
+ entry = [int(val) for val in f.readline().strip().split()]
+ self.data_map[level_num][grid_num] = pfd(*entry)
+
+ self._generate_particle_fields(extra_field_names)
+
+ def _generate_particle_fields(self, extra_field_names):
+
+ # these are the 'base' integer fields
+ self.known_int_fields = [(self.species_name, "particle_id"),
+ (self.species_name, "particle_cpu"),
+ (self.species_name, "particle_cell_x"),
+ (self.species_name, "particle_cell_y"),
+ (self.species_name, "particle_cell_z")]
+ self.known_int_fields = self.known_int_fields[0:self.num_int_base]
+
+ # these are extra integer fields
+ extra_int_fields = ["particle_int_comp%d" % i
+ for i in range(self.num_int_extra)]
+ self.known_int_fields.extend([(self.species_name, field)
+ for field in extra_int_fields])
+
+ # these are the base real fields
+ self.known_real_fields = [(self.species_name, "particle_position_x"),
+ (self.species_name, "particle_position_y"),
+ (self.species_name, "particle_position_z")]
+ self.known_real_fields = self.known_real_fields[0:self.num_real_base]
+
+ # these are the extras
+ if extra_field_names is not None:
+ assert(len(extra_field_names) == self.num_real_extra)
+ else:
+ extra_field_names = ["particle_real_comp%d" % i
+ for i in range(self.num_real_extra)]
+
+ self.known_real_fields.extend([(self.species_name, field)
+ for field in extra_field_names])
+
+ self.known_fields = self.known_int_fields + self.known_real_fields
+
+ self.particle_int_dtype = np.dtype([(t[1], self.int_type)
+ for t in self.known_int_fields])
+
+ self.particle_real_dtype = np.dtype([(t[1], self.real_type)
+ for t in self.known_real_fields])
+
+
class BoxlibHierarchy(GridIndex):
+
grid = BoxlibGrid
+ pheader = BoxLibParticleHeader
def __init__(self, ds, dataset_type='boxlib_native'):
self.dataset_type = dataset_type
@@ -367,10 +466,10 @@
def _read_particles(self, directory_name, is_checkpoint, extra_field_names=None):
- self.particle_headers[directory_name] = BoxLibParticleHeader(self.ds,
- directory_name,
- is_checkpoint,
- extra_field_names)
+ self.particle_headers[directory_name] = self.pheader(self.ds,
+ directory_name,
+ is_checkpoint,
+ extra_field_names)
base_particle_fn = self.ds.output_dir + '/' + directory_name + "/Level_%d/DATA_%.4d"
@@ -1137,102 +1236,6 @@
return vals
-class BoxLibParticleHeader(object):
-
- def __init__(self, ds, directory_name, is_checkpoint, extra_field_names=None):
-
- self.species_name = directory_name
- header_filename = ds.output_dir + "/" + directory_name + "/Header"
- with open(header_filename, "r") as f:
- self.version_string = f.readline().strip()
-
- particle_real_type = self.version_string.split('_')[-1]
- particle_real_type = self.version_string.split('_')[-1]
- if particle_real_type == 'double':
- self.real_type = np.float64
- elif particle_real_type == 'single':
- self.real_type = np.float32
- else:
- raise RuntimeError("yt did not recognize particle real type.")
- self.int_type = np.int32
-
- self.dim = int(f.readline().strip())
- self.num_int_base = 2 + self.dim
- self.num_real_base = self.dim
- self.num_int_extra = 0 # this should be written by Boxlib, but isn't
- self.num_real_extra = int(f.readline().strip())
- self.num_int = self.num_int_base + self.num_int_extra
- self.num_real = self.num_real_base + self.num_real_extra
- self.num_particles = int(f.readline().strip())
- self.max_next_id = int(f.readline().strip())
- self.finest_level = int(f.readline().strip())
- self.num_levels = self.finest_level + 1
-
- # Boxlib particles can be written in checkpoint or plotfile mode
- # The base integer fields are only there for checkpoints, but some
- # codes use the checkpoint format for plotting
- if not is_checkpoint:
- self.num_int_base = 0
- self.num_int_extra = 0
- self.num_int = 0
-
- self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
- self.data_map = {}
- for level_num in range(self.num_levels):
- self.grids_per_level[level_num] = int(f.readline().strip())
- self.data_map[level_num] = {}
-
- pfd = namedtuple("ParticleFileDescriptor",
- ["file_number", "num_particles", "offset"])
-
- for level_num in range(self.num_levels):
- for grid_num in range(self.grids_per_level[level_num]):
- entry = [int(val) for val in f.readline().strip().split()]
- self.data_map[level_num][grid_num] = pfd(*entry)
-
- self._generate_particle_fields(extra_field_names)
-
- def _generate_particle_fields(self, extra_field_names):
-
- # these are the 'base' integer fields
- self.known_int_fields = [(self.species_name, "particle_id"),
- (self.species_name, "particle_cpu"),
- (self.species_name, "particle_cell_x"),
- (self.species_name, "particle_cell_y"),
- (self.species_name, "particle_cell_z")]
- self.known_int_fields = self.known_int_fields[0:self.num_int_base]
-
- # these are extra integer fields
- extra_int_fields = ["particle_int_comp%d" % i
- for i in range(self.num_int_extra)]
- self.known_int_fields.extend([(self.species_name, field)
- for field in extra_int_fields])
-
- # these are the base real fields
- self.known_real_fields = [(self.species_name, "particle_position_x"),
- (self.species_name, "particle_position_y"),
- (self.species_name, "particle_position_z")]
- self.known_real_fields = self.known_real_fields[0:self.num_real_base]
-
- # these are the extras
- if extra_field_names is not None:
- assert(len(extra_field_names) == self.num_real_extra)
- else:
- extra_field_names = ["particle_real_comp%d" % i
- for i in range(self.num_real_extra)]
-
- self.known_real_fields.extend([(self.species_name, field)
- for field in extra_field_names])
-
- self.known_fields = self.known_int_fields + self.known_real_fields
-
- self.particle_int_dtype = np.dtype([(t[1], self.int_type)
- for t in self.known_int_fields])
-
- self.particle_real_dtype = np.dtype([(t[1], self.real_type)
- for t in self.known_real_fields])
-
-
class WarpXHierarchy(BoxlibHierarchy):
def __init__(self, ds, dataset_type="boxlib_native"):
@@ -1351,3 +1354,138 @@
setdefaultattr(self, 'mass_unit', self.quan(1.0, "kg"))
setdefaultattr(self, 'time_unit', self.quan(1.0, "s"))
setdefaultattr(self, 'velocity_unit', self.quan(1.0, "m/s"))
+
+
+class AMReXParticleHeader(object):
+
+ def __init__(self, ds, directory_name, is_checkpoint,
+ extra_field_names=None):
+
+ self.species_name = directory_name
+ header_filename = ds.output_dir + "/" + directory_name + "/Header"
+ self.real_component_names = []
+ self.int_component_names = []
+ with open(header_filename, "r") as f:
+ self.version_string = f.readline().strip()
+
+ particle_real_type = self.version_string.split('_')[-1]
+ particle_real_type = self.version_string.split('_')[-1]
+ if particle_real_type == 'double':
+ self.real_type = np.float64
+ elif particle_real_type == 'single':
+ self.real_type = np.float32
+ else:
+ raise RuntimeError("yt did not recognize particle real type.")
+ self.int_type = np.int32
+
+ self.dim = int(f.readline().strip())
+ self.num_int_base = 2
+ self.num_real_base = self.dim
+ self.num_real_extra = int(f.readline().strip())
+ for i in range(self.num_real_extra):
+ self.real_component_names.append(f.readline().strip())
+ self.num_int_extra = int(f.readline().strip())
+ for i in range(self.num_int_extra):
+ self.int_component_names.append(f.readline().strip())
+ self.num_int = self.num_int_base + self.num_int_extra
+ self.num_real = self.num_real_base + self.num_real_extra
+ self.is_checkpoint = bool(f.readline().strip())
+ self.num_particles = int(f.readline().strip())
+ self.max_next_id = int(f.readline().strip())
+ self.finest_level = int(f.readline().strip())
+ self.num_levels = self.finest_level + 1
+
+ if not self.is_checkpoint:
+ self.num_int_base = 0
+ self.num_int_extra = 0
+ self.num_int = 0
+
+ self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
+ self.data_map = {}
+ for level_num in range(self.num_levels):
+ self.grids_per_level[level_num] = int(f.readline().strip())
+ self.data_map[level_num] = {}
+
+ pfd = namedtuple("ParticleFileDescriptor",
+ ["file_number", "num_particles", "offset"])
+
+ for level_num in range(self.num_levels):
+ for grid_num in range(self.grids_per_level[level_num]):
+ entry = [int(val) for val in f.readline().strip().split()]
+ self.data_map[level_num][grid_num] = pfd(*entry)
+
+ self._generate_particle_fields()
+
+ def _generate_particle_fields(self):
+
+ # these are the 'base' integer fields
+ self.known_int_fields = [(self.species_name, "particle_id"),
+ (self.species_name, "particle_cpu")]
+ self.known_int_fields = self.known_int_fields[0:self.num_int_base]
+
+ self.known_int_fields.extend([(self.species_name, "particle_" + field)
+ for field in self.int_component_names])
+
+ # these are the base real fields
+ self.known_real_fields = [(self.species_name, "particle_position_x"),
+ (self.species_name, "particle_position_y"),
+ (self.species_name, "particle_position_z")]
+ self.known_real_fields = self.known_real_fields[0:self.num_real_base]
+
+ self.known_real_fields.extend([(self.species_name, "particle_" + field)
+ for field in self.real_component_names])
+
+ self.known_fields = self.known_int_fields + self.known_real_fields
+
+ self.particle_int_dtype = np.dtype([(t[1], self.int_type)
+ for t in self.known_int_fields])
+
+ self.particle_real_dtype = np.dtype([(t[1], self.real_type)
+ for t in self.known_real_fields])
+
+
+class AMReXHierarchy(BoxlibHierarchy):
+
+ pheader = AMReXParticleHeader
+
+ def __init__(self, ds, dataset_type="boxlib_native"):
+ super(AMReXHierarchy, self).__init__(ds, dataset_type)
+
+ if ("particles" in self.ds.parameters):
+ is_checkpoint = True
+ for ptype in self.ds.particle_types:
+ self._read_particles(ptype, is_checkpoint)
+
+
+class AMReXDataset(BoxlibDataset):
+
+ _index_class = AMReXHierarchy
+
+ def __init__(self, output_dir,
+ cparam_filename=None,
+ fparam_filename=None,
+ dataset_type='boxlib_native',
+ storage_filename=None,
+ units_override=None,
+ unit_system="cgs"):
+
+ super(AMReXDataset, self).__init__(output_dir,
+ cparam_filename,
+ fparam_filename,
+ dataset_type,
+ storage_filename,
+ units_override,
+ unit_system)
+
+ def _parse_parameter_file(self):
+ super(AMReXDataset, self)._parse_parameter_file()
+ particle_types = glob.glob(self.output_dir + "/*/Header")
+ particle_types = [cpt.split("/")[-2] for cpt in particle_types]
+ if len(particle_types) > 0:
+ self.parameters["particles"] = 1
+ self.particle_types = tuple(particle_types)
+ self.particle_types_raw = self.particle_types
+
+ @classmethod
+ def _is_valid(cls, *args, **kwargs):
+ return False
https://bitbucket.org/yt_analysis/yt/commits/ef140f6e82c2/
Changeset: ef140f6e82c2
Branch: yt
User: atmyers
Date: 2017-03-01 23:15:48+00:00
Summary: fix bug in reading is_checkpoint from file
Affected #: 1 file
diff -r 84ab334468941f35a6e3627de59766de030eeef4 -r ef140f6e82c2defa4971eb2ee708bd2dbb1b7ea5 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -1389,7 +1389,7 @@
self.int_component_names.append(f.readline().strip())
self.num_int = self.num_int_base + self.num_int_extra
self.num_real = self.num_real_base + self.num_real_extra
- self.is_checkpoint = bool(f.readline().strip())
+ self.is_checkpoint = bool(int(f.readline().strip()))
self.num_particles = int(f.readline().strip())
self.max_next_id = int(f.readline().strip())
self.finest_level = int(f.readline().strip())
https://bitbucket.org/yt_analysis/yt/commits/f2c7848cce15/
Changeset: f2c7848cce15
Branch: yt
User: atmyers
Date: 2017-03-08 00:07:38+00:00
Summary: Switch the WarpX frontend over to the AMReX particle format
Affected #: 1 file
diff -r ef140f6e82c2defa4971eb2ee708bd2dbb1b7ea5 -r f2c7848cce15a2cd40b4af2c0e97e747c9b1c37a yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -236,6 +236,94 @@
for t in self.known_real_fields])
+class AMReXParticleHeader(object):
+
+ def __init__(self, ds, directory_name, is_checkpoint,
+ extra_field_names=None):
+
+ self.species_name = directory_name
+ header_filename = ds.output_dir + "/" + directory_name + "/Header"
+ self.real_component_names = []
+ self.int_component_names = []
+ with open(header_filename, "r") as f:
+ self.version_string = f.readline().strip()
+
+ particle_real_type = self.version_string.split('_')[-1]
+ particle_real_type = self.version_string.split('_')[-1]
+ if particle_real_type == 'double':
+ self.real_type = np.float64
+ elif particle_real_type == 'single':
+ self.real_type = np.float32
+ else:
+ raise RuntimeError("yt did not recognize particle real type.")
+ self.int_type = np.int32
+
+ self.dim = int(f.readline().strip())
+ self.num_int_base = 2
+ self.num_real_base = self.dim
+ self.num_real_extra = int(f.readline().strip())
+ for i in range(self.num_real_extra):
+ self.real_component_names.append(f.readline().strip())
+ self.num_int_extra = int(f.readline().strip())
+ for i in range(self.num_int_extra):
+ self.int_component_names.append(f.readline().strip())
+ self.num_int = self.num_int_base + self.num_int_extra
+ self.num_real = self.num_real_base + self.num_real_extra
+ self.is_checkpoint = bool(int(f.readline().strip()))
+ self.num_particles = int(f.readline().strip())
+ self.max_next_id = int(f.readline().strip())
+ self.finest_level = int(f.readline().strip())
+ self.num_levels = self.finest_level + 1
+
+ if not self.is_checkpoint:
+ self.num_int_base = 0
+ self.num_int_extra = 0
+ self.num_int = 0
+
+ self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
+ self.data_map = {}
+ for level_num in range(self.num_levels):
+ self.grids_per_level[level_num] = int(f.readline().strip())
+ self.data_map[level_num] = {}
+
+ pfd = namedtuple("ParticleFileDescriptor",
+ ["file_number", "num_particles", "offset"])
+
+ for level_num in range(self.num_levels):
+ for grid_num in range(self.grids_per_level[level_num]):
+ entry = [int(val) for val in f.readline().strip().split()]
+ self.data_map[level_num][grid_num] = pfd(*entry)
+
+ self._generate_particle_fields()
+
+ def _generate_particle_fields(self):
+
+ # these are the 'base' integer fields
+ self.known_int_fields = [(self.species_name, "particle_id"),
+ (self.species_name, "particle_cpu")]
+ self.known_int_fields = self.known_int_fields[0:self.num_int_base]
+
+ self.known_int_fields.extend([(self.species_name, "particle_" + field)
+ for field in self.int_component_names])
+
+ # these are the base real fields
+ self.known_real_fields = [(self.species_name, "particle_position_x"),
+ (self.species_name, "particle_position_y"),
+ (self.species_name, "particle_position_z")]
+ self.known_real_fields = self.known_real_fields[0:self.num_real_base]
+
+ self.known_real_fields.extend([(self.species_name, "particle_" + field)
+ for field in self.real_component_names])
+
+ self.known_fields = self.known_int_fields + self.known_real_fields
+
+ self.particle_int_dtype = np.dtype([(t[1], self.int_type)
+ for t in self.known_int_fields])
+
+ self.particle_real_dtype = np.dtype([(t[1], self.real_type)
+ for t in self.known_real_fields])
+
+
class BoxlibHierarchy(GridIndex):
grid = BoxlibGrid
@@ -1238,20 +1326,14 @@
class WarpXHierarchy(BoxlibHierarchy):
+ pheader = AMReXParticleHeader
+
def __init__(self, ds, dataset_type="boxlib_native"):
super(WarpXHierarchy, self).__init__(ds, dataset_type)
- # extra beyond the base real fields that all Boxlib
- # particles have, i.e. the xyz positions
- warpx_extra_real_fields = ['particle_weight',
- 'particle_velocity_x',
- 'particle_velocity_y',
- 'particle_velocity_z']
-
- is_checkpoint = False
-
+ is_checkpoint = True
for ptype in self.ds.particle_types:
- self._read_particles(ptype, is_checkpoint, warpx_extra_real_fields)
+ self._read_particles(ptype, is_checkpoint)
# Additional WarpX particle information (used to set up species)
with open(self.ds.output_dir + "/WarpXHeader", 'r') as f:
@@ -1356,94 +1438,6 @@
setdefaultattr(self, 'velocity_unit', self.quan(1.0, "m/s"))
-class AMReXParticleHeader(object):
-
- def __init__(self, ds, directory_name, is_checkpoint,
- extra_field_names=None):
-
- self.species_name = directory_name
- header_filename = ds.output_dir + "/" + directory_name + "/Header"
- self.real_component_names = []
- self.int_component_names = []
- with open(header_filename, "r") as f:
- self.version_string = f.readline().strip()
-
- particle_real_type = self.version_string.split('_')[-1]
- particle_real_type = self.version_string.split('_')[-1]
- if particle_real_type == 'double':
- self.real_type = np.float64
- elif particle_real_type == 'single':
- self.real_type = np.float32
- else:
- raise RuntimeError("yt did not recognize particle real type.")
- self.int_type = np.int32
-
- self.dim = int(f.readline().strip())
- self.num_int_base = 2
- self.num_real_base = self.dim
- self.num_real_extra = int(f.readline().strip())
- for i in range(self.num_real_extra):
- self.real_component_names.append(f.readline().strip())
- self.num_int_extra = int(f.readline().strip())
- for i in range(self.num_int_extra):
- self.int_component_names.append(f.readline().strip())
- self.num_int = self.num_int_base + self.num_int_extra
- self.num_real = self.num_real_base + self.num_real_extra
- self.is_checkpoint = bool(int(f.readline().strip()))
- self.num_particles = int(f.readline().strip())
- self.max_next_id = int(f.readline().strip())
- self.finest_level = int(f.readline().strip())
- self.num_levels = self.finest_level + 1
-
- if not self.is_checkpoint:
- self.num_int_base = 0
- self.num_int_extra = 0
- self.num_int = 0
-
- self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
- self.data_map = {}
- for level_num in range(self.num_levels):
- self.grids_per_level[level_num] = int(f.readline().strip())
- self.data_map[level_num] = {}
-
- pfd = namedtuple("ParticleFileDescriptor",
- ["file_number", "num_particles", "offset"])
-
- for level_num in range(self.num_levels):
- for grid_num in range(self.grids_per_level[level_num]):
- entry = [int(val) for val in f.readline().strip().split()]
- self.data_map[level_num][grid_num] = pfd(*entry)
-
- self._generate_particle_fields()
-
- def _generate_particle_fields(self):
-
- # these are the 'base' integer fields
- self.known_int_fields = [(self.species_name, "particle_id"),
- (self.species_name, "particle_cpu")]
- self.known_int_fields = self.known_int_fields[0:self.num_int_base]
-
- self.known_int_fields.extend([(self.species_name, "particle_" + field)
- for field in self.int_component_names])
-
- # these are the base real fields
- self.known_real_fields = [(self.species_name, "particle_position_x"),
- (self.species_name, "particle_position_y"),
- (self.species_name, "particle_position_z")]
- self.known_real_fields = self.known_real_fields[0:self.num_real_base]
-
- self.known_real_fields.extend([(self.species_name, "particle_" + field)
- for field in self.real_component_names])
-
- self.known_fields = self.known_int_fields + self.known_real_fields
-
- self.particle_int_dtype = np.dtype([(t[1], self.int_type)
- for t in self.known_int_fields])
-
- self.particle_real_dtype = np.dtype([(t[1], self.real_type)
- for t in self.known_real_fields])
-
-
class AMReXHierarchy(BoxlibHierarchy):
pheader = AMReXParticleHeader
https://bitbucket.org/yt_analysis/yt/commits/39c1e1759380/
Changeset: 39c1e1759380
Branch: yt
User: atmyers
Date: 2017-03-15 20:25:06+00:00
Summary: be smarter about figuring out what data format we've been handed.
Affected #: 1 file
diff -r f2c7848cce15a2cd40b4af2c0e97e747c9b1c37a -r 39c1e1759380684b5605d9320d4c6313a3a52bb1 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -327,7 +327,6 @@
class BoxlibHierarchy(GridIndex):
grid = BoxlibGrid
- pheader = BoxLibParticleHeader
def __init__(self, ds, dataset_type='boxlib_native'):
self.dataset_type = dataset_type
@@ -552,12 +551,21 @@
def _setup_data_io(self):
self.io = io_registry[self.dataset_type](self.dataset)
- def _read_particles(self, directory_name, is_checkpoint, extra_field_names=None):
+ def _determine_particle_output_type(self, directory_name):
+ header_filename = self.ds.output_dir + "/" + directory_name + "/Header"
+ with open(header_filename, "r") as f:
+ version_string = f.readline().strip()
+ if version_string.startswith("Version_Two"):
+ return AMReXParticleHeader
+ else:
+ return BoxLibParticleHeader
- self.particle_headers[directory_name] = self.pheader(self.ds,
- directory_name,
- is_checkpoint,
- extra_field_names)
+ def _read_particles(self, directory_name, is_checkpoint, extra_field_names=None):
+ pheader = self._determine_particle_output_type(directory_name)
+ self.particle_headers[directory_name] = pheader(self.ds,
+ directory_name,
+ is_checkpoint,
+ extra_field_names)
base_particle_fn = self.ds.output_dir + '/' + directory_name + "/Level_%d/DATA_%.4d"
@@ -1326,8 +1334,6 @@
class WarpXHierarchy(BoxlibHierarchy):
- pheader = AMReXParticleHeader
-
def __init__(self, ds, dataset_type="boxlib_native"):
super(WarpXHierarchy, self).__init__(ds, dataset_type)
@@ -1440,8 +1446,6 @@
class AMReXHierarchy(BoxlibHierarchy):
- pheader = AMReXParticleHeader
-
def __init__(self, ds, dataset_type="boxlib_native"):
super(AMReXHierarchy, self).__init__(ds, dataset_type)
https://bitbucket.org/yt_analysis/yt/commits/e876467b71b9/
Changeset: e876467b71b9
Branch: yt
User: atmyers
Date: 2017-03-15 20:26:14+00:00
Summary: update datasets used by the answer tests.
Affected #: 1 file
diff -r 39c1e1759380684b5605d9320d4c6313a3a52bb1 -r e876467b71b9a4c2c8ba27a910b8ec8af78abbce yt/frontends/boxlib/tests/test_outputs.py
--- a/yt/frontends/boxlib/tests/test_outputs.py
+++ b/yt/frontends/boxlib/tests/test_outputs.py
@@ -144,22 +144,22 @@
assert(np.all(np.logical_and(reg['particle_position_y'] <= right_edge[1],
reg['particle_position_y'] >= left_edge[1])))
-langmuir = "LangmuirWave/plt00020"
+langmuir = "LangmuirWave/plt00020_v2"
@requires_ds(langmuir)
def test_langmuir():
ds = data_dir_load(langmuir)
- yield assert_equal, str(ds), "plt00020"
+ yield assert_equal, str(ds), "plt00020_v2"
for test in small_patch_amr(ds, _warpx_fields,
input_center="c",
input_weight="Ex"):
test_langmuir.__name__ = test.description
yield test
-plasma = "PlasmaAcceleration/plt00030"
+plasma = "PlasmaAcceleration/plt00030_v2"
@requires_ds(plasma)
def test_plasma():
ds = data_dir_load(plasma)
- yield assert_equal, str(ds), "plt00030"
+ yield assert_equal, str(ds), "plt00030_v2"
for test in small_patch_amr(ds, _warpx_fields,
input_center="c",
input_weight="Ex"):
https://bitbucket.org/yt_analysis/yt/commits/f3a309875840/
Changeset: f3a309875840
Branch: yt
User: atmyers
Date: 2017-03-15 21:27:05+00:00
Summary: increment the test number on the WarpX tests.
Affected #: 1 file
diff -r e876467b71b9a4c2c8ba27a910b8ec8af78abbce -r f3a30987584064eaf53d9839ac43b3d57e3e6b24 tests/tests.yaml
--- a/tests/tests.yaml
+++ b/tests/tests.yaml
@@ -77,7 +77,7 @@
- yt/frontends/boxlib/tests/test_outputs.py:test_RT_particles
- yt/frontends/boxlib/tests/test_outputs.py:test_units_override
- local_boxlib_particles_002:
+ local_boxlib_particles_003:
- yt/frontends/boxlib/tests/test_outputs.py:test_LyA
- yt/frontends/boxlib/tests/test_outputs.py:test_nyx_particle_io
- yt/frontends/boxlib/tests/test_outputs.py:test_castro_particle_io
https://bitbucket.org/yt_analysis/yt/commits/ad0c501e00a7/
Changeset: ad0c501e00a7
Branch: yt
User: atmyers
Date: 2017-03-22 00:14:57+00:00
Summary: species_name -> particle_type
Affected #: 1 file
diff -r f3a30987584064eaf53d9839ac43b3d57e3e6b24 -r ad0c501e00a7a890875646ee1a31063d1d0edfb9 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -144,7 +144,7 @@
def __init__(self, ds, directory_name, is_checkpoint,
extra_field_names=None):
- self.species_name = directory_name
+ self.particle_type = directory_name
header_filename = ds.output_dir + "/" + directory_name + "/Header"
with open(header_filename, "r") as f:
self.version_string = f.readline().strip()
@@ -198,23 +198,23 @@
def _generate_particle_fields(self, extra_field_names):
# these are the 'base' integer fields
- self.known_int_fields = [(self.species_name, "particle_id"),
- (self.species_name, "particle_cpu"),
- (self.species_name, "particle_cell_x"),
- (self.species_name, "particle_cell_y"),
- (self.species_name, "particle_cell_z")]
+ self.known_int_fields = [(self.particle_type, "particle_id"),
+ (self.particle_type, "particle_cpu"),
+ (self.particle_type, "particle_cell_x"),
+ (self.particle_type, "particle_cell_y"),
+ (self.particle_type, "particle_cell_z")]
self.known_int_fields = self.known_int_fields[0:self.num_int_base]
# these are extra integer fields
extra_int_fields = ["particle_int_comp%d" % i
for i in range(self.num_int_extra)]
- self.known_int_fields.extend([(self.species_name, field)
+ self.known_int_fields.extend([(self.particle_type, field)
for field in extra_int_fields])
# these are the base real fields
- self.known_real_fields = [(self.species_name, "particle_position_x"),
- (self.species_name, "particle_position_y"),
- (self.species_name, "particle_position_z")]
+ self.known_real_fields = [(self.particle_type, "particle_position_x"),
+ (self.particle_type, "particle_position_y"),
+ (self.particle_type, "particle_position_z")]
self.known_real_fields = self.known_real_fields[0:self.num_real_base]
# these are the extras
@@ -224,7 +224,7 @@
extra_field_names = ["particle_real_comp%d" % i
for i in range(self.num_real_extra)]
- self.known_real_fields.extend([(self.species_name, field)
+ self.known_real_fields.extend([(self.particle_type, field)
for field in extra_field_names])
self.known_fields = self.known_int_fields + self.known_real_fields
@@ -241,7 +241,7 @@
def __init__(self, ds, directory_name, is_checkpoint,
extra_field_names=None):
- self.species_name = directory_name
+ self.particle_type = directory_name
header_filename = ds.output_dir + "/" + directory_name + "/Header"
self.real_component_names = []
self.int_component_names = []
@@ -299,20 +299,20 @@
def _generate_particle_fields(self):
# these are the 'base' integer fields
- self.known_int_fields = [(self.species_name, "particle_id"),
- (self.species_name, "particle_cpu")]
+ self.known_int_fields = [(self.particle_type, "particle_id"),
+ (self.particle_type, "particle_cpu")]
self.known_int_fields = self.known_int_fields[0:self.num_int_base]
- self.known_int_fields.extend([(self.species_name, "particle_" + field)
+ self.known_int_fields.extend([(self.particle_type, "particle_" + field)
for field in self.int_component_names])
# these are the base real fields
- self.known_real_fields = [(self.species_name, "particle_position_x"),
- (self.species_name, "particle_position_y"),
- (self.species_name, "particle_position_z")]
+ self.known_real_fields = [(self.particle_type, "particle_position_x"),
+ (self.particle_type, "particle_position_y"),
+ (self.particle_type, "particle_position_z")]
self.known_real_fields = self.known_real_fields[0:self.num_real_base]
- self.known_real_fields.extend([(self.species_name, "particle_" + field)
+ self.known_real_fields.extend([(self.particle_type, "particle_" + field)
for field in self.real_component_names])
self.known_fields = self.known_int_fields + self.known_real_fields
https://bitbucket.org/yt_analysis/yt/commits/a267f7bd5a3e/
Changeset: a267f7bd5a3e
Branch: yt
User: ngoldbaum
Date: 2017-03-22 01:26:44+00:00
Summary: Merged in atmyers/yt (pull request #2530)
Adding an AMReX frontend to yt
Approved-by: Nathan Goldbaum <ngoldbau at illinois.edu>
Approved-by: Michael Zingale <michael.zingale at stonybrook.edu>
Affected #: 3 files
diff -r 7da11fc9df2882b7734468109391971747aa3f34 -r a267f7bd5a3e9a4add99045a8055ab375948c865 tests/tests.yaml
--- a/tests/tests.yaml
+++ b/tests/tests.yaml
@@ -78,7 +78,7 @@
- yt/frontends/boxlib/tests/test_outputs.py:test_RT_particles
- yt/frontends/boxlib/tests/test_outputs.py:test_units_override
- local_boxlib_particles_002:
+ local_boxlib_particles_003:
- yt/frontends/boxlib/tests/test_outputs.py:test_LyA
- yt/frontends/boxlib/tests/test_outputs.py:test_nyx_particle_io
- yt/frontends/boxlib/tests/test_outputs.py:test_castro_particle_io
diff -r 7da11fc9df2882b7734468109391971747aa3f34 -r a267f7bd5a3e9a4add99045a8055ab375948c865 yt/frontends/boxlib/data_structures.py
--- a/yt/frontends/boxlib/data_structures.py
+++ b/yt/frontends/boxlib/data_structures.py
@@ -139,7 +139,193 @@
startIndex[2]:endIndex[2]] = tofill
+class BoxLibParticleHeader(object):
+
+ def __init__(self, ds, directory_name, is_checkpoint,
+ extra_field_names=None):
+
+ self.particle_type = directory_name
+ header_filename = ds.output_dir + "/" + directory_name + "/Header"
+ with open(header_filename, "r") as f:
+ self.version_string = f.readline().strip()
+
+ particle_real_type = self.version_string.split('_')[-1]
+ particle_real_type = self.version_string.split('_')[-1]
+ if particle_real_type == 'double':
+ self.real_type = np.float64
+ elif particle_real_type == 'single':
+ self.real_type = np.float32
+ else:
+ raise RuntimeError("yt did not recognize particle real type.")
+ self.int_type = np.int32
+
+ self.dim = int(f.readline().strip())
+ self.num_int_base = 2 + self.dim
+ self.num_real_base = self.dim
+ self.num_int_extra = 0 # this should be written by Boxlib, but isn't
+ self.num_real_extra = int(f.readline().strip())
+ self.num_int = self.num_int_base + self.num_int_extra
+ self.num_real = self.num_real_base + self.num_real_extra
+ self.num_particles = int(f.readline().strip())
+ self.max_next_id = int(f.readline().strip())
+ self.finest_level = int(f.readline().strip())
+ self.num_levels = self.finest_level + 1
+
+ # Boxlib particles can be written in checkpoint or plotfile mode
+ # The base integer fields are only there for checkpoints, but some
+ # codes use the checkpoint format for plotting
+ if not is_checkpoint:
+ self.num_int_base = 0
+ self.num_int_extra = 0
+ self.num_int = 0
+
+ self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
+ self.data_map = {}
+ for level_num in range(self.num_levels):
+ self.grids_per_level[level_num] = int(f.readline().strip())
+ self.data_map[level_num] = {}
+
+ pfd = namedtuple("ParticleFileDescriptor",
+ ["file_number", "num_particles", "offset"])
+
+ for level_num in range(self.num_levels):
+ for grid_num in range(self.grids_per_level[level_num]):
+ entry = [int(val) for val in f.readline().strip().split()]
+ self.data_map[level_num][grid_num] = pfd(*entry)
+
+ self._generate_particle_fields(extra_field_names)
+
+ def _generate_particle_fields(self, extra_field_names):
+
+ # these are the 'base' integer fields
+ self.known_int_fields = [(self.particle_type, "particle_id"),
+ (self.particle_type, "particle_cpu"),
+ (self.particle_type, "particle_cell_x"),
+ (self.particle_type, "particle_cell_y"),
+ (self.particle_type, "particle_cell_z")]
+ self.known_int_fields = self.known_int_fields[0:self.num_int_base]
+
+ # these are extra integer fields
+ extra_int_fields = ["particle_int_comp%d" % i
+ for i in range(self.num_int_extra)]
+ self.known_int_fields.extend([(self.particle_type, field)
+ for field in extra_int_fields])
+
+ # these are the base real fields
+ self.known_real_fields = [(self.particle_type, "particle_position_x"),
+ (self.particle_type, "particle_position_y"),
+ (self.particle_type, "particle_position_z")]
+ self.known_real_fields = self.known_real_fields[0:self.num_real_base]
+
+ # these are the extras
+ if extra_field_names is not None:
+ assert(len(extra_field_names) == self.num_real_extra)
+ else:
+ extra_field_names = ["particle_real_comp%d" % i
+ for i in range(self.num_real_extra)]
+
+ self.known_real_fields.extend([(self.particle_type, field)
+ for field in extra_field_names])
+
+ self.known_fields = self.known_int_fields + self.known_real_fields
+
+ self.particle_int_dtype = np.dtype([(t[1], self.int_type)
+ for t in self.known_int_fields])
+
+ self.particle_real_dtype = np.dtype([(t[1], self.real_type)
+ for t in self.known_real_fields])
+
+
+class AMReXParticleHeader(object):
+
+ def __init__(self, ds, directory_name, is_checkpoint,
+ extra_field_names=None):
+
+ self.particle_type = directory_name
+ header_filename = ds.output_dir + "/" + directory_name + "/Header"
+ self.real_component_names = []
+ self.int_component_names = []
+ with open(header_filename, "r") as f:
+ self.version_string = f.readline().strip()
+
+ particle_real_type = self.version_string.split('_')[-1]
+ particle_real_type = self.version_string.split('_')[-1]
+ if particle_real_type == 'double':
+ self.real_type = np.float64
+ elif particle_real_type == 'single':
+ self.real_type = np.float32
+ else:
+ raise RuntimeError("yt did not recognize particle real type.")
+ self.int_type = np.int32
+
+ self.dim = int(f.readline().strip())
+ self.num_int_base = 2
+ self.num_real_base = self.dim
+ self.num_real_extra = int(f.readline().strip())
+ for i in range(self.num_real_extra):
+ self.real_component_names.append(f.readline().strip())
+ self.num_int_extra = int(f.readline().strip())
+ for i in range(self.num_int_extra):
+ self.int_component_names.append(f.readline().strip())
+ self.num_int = self.num_int_base + self.num_int_extra
+ self.num_real = self.num_real_base + self.num_real_extra
+ self.is_checkpoint = bool(int(f.readline().strip()))
+ self.num_particles = int(f.readline().strip())
+ self.max_next_id = int(f.readline().strip())
+ self.finest_level = int(f.readline().strip())
+ self.num_levels = self.finest_level + 1
+
+ if not self.is_checkpoint:
+ self.num_int_base = 0
+ self.num_int_extra = 0
+ self.num_int = 0
+
+ self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
+ self.data_map = {}
+ for level_num in range(self.num_levels):
+ self.grids_per_level[level_num] = int(f.readline().strip())
+ self.data_map[level_num] = {}
+
+ pfd = namedtuple("ParticleFileDescriptor",
+ ["file_number", "num_particles", "offset"])
+
+ for level_num in range(self.num_levels):
+ for grid_num in range(self.grids_per_level[level_num]):
+ entry = [int(val) for val in f.readline().strip().split()]
+ self.data_map[level_num][grid_num] = pfd(*entry)
+
+ self._generate_particle_fields()
+
+ def _generate_particle_fields(self):
+
+ # these are the 'base' integer fields
+ self.known_int_fields = [(self.particle_type, "particle_id"),
+ (self.particle_type, "particle_cpu")]
+ self.known_int_fields = self.known_int_fields[0:self.num_int_base]
+
+ self.known_int_fields.extend([(self.particle_type, "particle_" + field)
+ for field in self.int_component_names])
+
+ # these are the base real fields
+ self.known_real_fields = [(self.particle_type, "particle_position_x"),
+ (self.particle_type, "particle_position_y"),
+ (self.particle_type, "particle_position_z")]
+ self.known_real_fields = self.known_real_fields[0:self.num_real_base]
+
+ self.known_real_fields.extend([(self.particle_type, "particle_" + field)
+ for field in self.real_component_names])
+
+ self.known_fields = self.known_int_fields + self.known_real_fields
+
+ self.particle_int_dtype = np.dtype([(t[1], self.int_type)
+ for t in self.known_int_fields])
+
+ self.particle_real_dtype = np.dtype([(t[1], self.real_type)
+ for t in self.known_real_fields])
+
+
class BoxlibHierarchy(GridIndex):
+
grid = BoxlibGrid
def __init__(self, ds, dataset_type='boxlib_native'):
@@ -365,12 +551,21 @@
def _setup_data_io(self):
self.io = io_registry[self.dataset_type](self.dataset)
- def _read_particles(self, directory_name, is_checkpoint, extra_field_names=None):
+ def _determine_particle_output_type(self, directory_name):
+ header_filename = self.ds.output_dir + "/" + directory_name + "/Header"
+ with open(header_filename, "r") as f:
+ version_string = f.readline().strip()
+ if version_string.startswith("Version_Two"):
+ return AMReXParticleHeader
+ else:
+ return BoxLibParticleHeader
- self.particle_headers[directory_name] = BoxLibParticleHeader(self.ds,
- directory_name,
- is_checkpoint,
- extra_field_names)
+ def _read_particles(self, directory_name, is_checkpoint, extra_field_names=None):
+ pheader = self._determine_particle_output_type(directory_name)
+ self.particle_headers[directory_name] = pheader(self.ds,
+ directory_name,
+ is_checkpoint,
+ extra_field_names)
base_particle_fn = self.ds.output_dir + '/' + directory_name + "/Level_%d/DATA_%.4d"
@@ -1137,118 +1332,14 @@
return vals
-class BoxLibParticleHeader(object):
-
- def __init__(self, ds, directory_name, is_checkpoint, extra_field_names=None):
-
- self.species_name = directory_name
- header_filename = ds.output_dir + "/" + directory_name + "/Header"
- with open(header_filename, "r") as f:
- self.version_string = f.readline().strip()
-
- particle_real_type = self.version_string.split('_')[-1]
- particle_real_type = self.version_string.split('_')[-1]
- if particle_real_type == 'double':
- self.real_type = np.float64
- elif particle_real_type == 'single':
- self.real_type = np.float32
- else:
- raise RuntimeError("yt did not recognize particle real type.")
- self.int_type = np.int32
-
- self.dim = int(f.readline().strip())
- self.num_int_base = 2 + self.dim
- self.num_real_base = self.dim
- self.num_int_extra = 0 # this should be written by Boxlib, but isn't
- self.num_real_extra = int(f.readline().strip())
- self.num_int = self.num_int_base + self.num_int_extra
- self.num_real = self.num_real_base + self.num_real_extra
- self.num_particles = int(f.readline().strip())
- self.max_next_id = int(f.readline().strip())
- self.finest_level = int(f.readline().strip())
- self.num_levels = self.finest_level + 1
-
- # Boxlib particles can be written in checkpoint or plotfile mode
- # The base integer fields are only there for checkpoints, but some
- # codes use the checkpoint format for plotting
- if not is_checkpoint:
- self.num_int_base = 0
- self.num_int_extra = 0
- self.num_int = 0
-
- self.grids_per_level = np.zeros(self.num_levels, dtype='int64')
- self.data_map = {}
- for level_num in range(self.num_levels):
- self.grids_per_level[level_num] = int(f.readline().strip())
- self.data_map[level_num] = {}
-
- pfd = namedtuple("ParticleFileDescriptor",
- ["file_number", "num_particles", "offset"])
-
- for level_num in range(self.num_levels):
- for grid_num in range(self.grids_per_level[level_num]):
- entry = [int(val) for val in f.readline().strip().split()]
- self.data_map[level_num][grid_num] = pfd(*entry)
-
- self._generate_particle_fields(extra_field_names)
-
- def _generate_particle_fields(self, extra_field_names):
-
- # these are the 'base' integer fields
- self.known_int_fields = [(self.species_name, "particle_id"),
- (self.species_name, "particle_cpu"),
- (self.species_name, "particle_cell_x"),
- (self.species_name, "particle_cell_y"),
- (self.species_name, "particle_cell_z")]
- self.known_int_fields = self.known_int_fields[0:self.num_int_base]
-
- # these are extra integer fields
- extra_int_fields = ["particle_int_comp%d" % i
- for i in range(self.num_int_extra)]
- self.known_int_fields.extend([(self.species_name, field)
- for field in extra_int_fields])
-
- # these are the base real fields
- self.known_real_fields = [(self.species_name, "particle_position_x"),
- (self.species_name, "particle_position_y"),
- (self.species_name, "particle_position_z")]
- self.known_real_fields = self.known_real_fields[0:self.num_real_base]
-
- # these are the extras
- if extra_field_names is not None:
- assert(len(extra_field_names) == self.num_real_extra)
- else:
- extra_field_names = ["particle_real_comp%d" % i
- for i in range(self.num_real_extra)]
-
- self.known_real_fields.extend([(self.species_name, field)
- for field in extra_field_names])
-
- self.known_fields = self.known_int_fields + self.known_real_fields
-
- self.particle_int_dtype = np.dtype([(t[1], self.int_type)
- for t in self.known_int_fields])
-
- self.particle_real_dtype = np.dtype([(t[1], self.real_type)
- for t in self.known_real_fields])
-
-
class WarpXHierarchy(BoxlibHierarchy):
def __init__(self, ds, dataset_type="boxlib_native"):
super(WarpXHierarchy, self).__init__(ds, dataset_type)
- # extra beyond the base real fields that all Boxlib
- # particles have, i.e. the xyz positions
- warpx_extra_real_fields = ['particle_weight',
- 'particle_velocity_x',
- 'particle_velocity_y',
- 'particle_velocity_z']
-
- is_checkpoint = False
-
+ is_checkpoint = True
for ptype in self.ds.particle_types:
- self._read_particles(ptype, is_checkpoint, warpx_extra_real_fields)
+ self._read_particles(ptype, is_checkpoint)
# Additional WarpX particle information (used to set up species)
with open(self.ds.output_dir + "/WarpXHeader", 'r') as f:
@@ -1351,3 +1442,48 @@
setdefaultattr(self, 'mass_unit', self.quan(1.0, "kg"))
setdefaultattr(self, 'time_unit', self.quan(1.0, "s"))
setdefaultattr(self, 'velocity_unit', self.quan(1.0, "m/s"))
+
+
+class AMReXHierarchy(BoxlibHierarchy):
+
+ def __init__(self, ds, dataset_type="boxlib_native"):
+ super(AMReXHierarchy, self).__init__(ds, dataset_type)
+
+ if ("particles" in self.ds.parameters):
+ is_checkpoint = True
+ for ptype in self.ds.particle_types:
+ self._read_particles(ptype, is_checkpoint)
+
+
+class AMReXDataset(BoxlibDataset):
+
+ _index_class = AMReXHierarchy
+
+ def __init__(self, output_dir,
+ cparam_filename=None,
+ fparam_filename=None,
+ dataset_type='boxlib_native',
+ storage_filename=None,
+ units_override=None,
+ unit_system="cgs"):
+
+ super(AMReXDataset, self).__init__(output_dir,
+ cparam_filename,
+ fparam_filename,
+ dataset_type,
+ storage_filename,
+ units_override,
+ unit_system)
+
+ def _parse_parameter_file(self):
+ super(AMReXDataset, self)._parse_parameter_file()
+ particle_types = glob.glob(self.output_dir + "/*/Header")
+ particle_types = [cpt.split("/")[-2] for cpt in particle_types]
+ if len(particle_types) > 0:
+ self.parameters["particles"] = 1
+ self.particle_types = tuple(particle_types)
+ self.particle_types_raw = self.particle_types
+
+ @classmethod
+ def _is_valid(cls, *args, **kwargs):
+ return False
diff -r 7da11fc9df2882b7734468109391971747aa3f34 -r a267f7bd5a3e9a4add99045a8055ab375948c865 yt/frontends/boxlib/tests/test_outputs.py
--- a/yt/frontends/boxlib/tests/test_outputs.py
+++ b/yt/frontends/boxlib/tests/test_outputs.py
@@ -144,22 +144,22 @@
assert(np.all(np.logical_and(reg['particle_position_y'] <= right_edge[1],
reg['particle_position_y'] >= left_edge[1])))
-langmuir = "LangmuirWave/plt00020"
+langmuir = "LangmuirWave/plt00020_v2"
@requires_ds(langmuir)
def test_langmuir():
ds = data_dir_load(langmuir)
- yield assert_equal, str(ds), "plt00020"
+ yield assert_equal, str(ds), "plt00020_v2"
for test in small_patch_amr(ds, _warpx_fields,
input_center="c",
input_weight="Ex"):
test_langmuir.__name__ = test.description
yield test
-plasma = "PlasmaAcceleration/plt00030"
+plasma = "PlasmaAcceleration/plt00030_v2"
@requires_ds(plasma)
def test_plasma():
ds = data_dir_load(plasma)
- yield assert_equal, str(ds), "plt00030"
+ yield assert_equal, str(ds), "plt00030_v2"
for test in small_patch_amr(ds, _warpx_fields,
input_center="c",
input_weight="Ex"):
Repository URL: https://bitbucket.org/yt_analysis/yt/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the yt-svn
mailing list