Пример #1
0
    def __init__(self,
                 filename,
                 dataset_type='openPMD',
                 storage_filename=None,
                 units_override=None):
        # This defines which of the data sets are meshes (fields)
        self.fluid_types += ('openPMD', )
        # This defines which of the data sets are particles
        self.particle_types = ["electrons", "ions", "all"]
        self.particle_types = tuple(self.particle_types)
        self.particle_types_raw = self.particle_types

        # Opens a HDF5 file and stores its file handle in _handle
        # All _handle objects refers to the file
        self._handle = HDF5FileHandler(filename)
        Dataset.__init__(self,
                         filename,
                         dataset_type,
                         units_override=units_override)
        self.storage_filename = storage_filename
Пример #2
0
    def __init__(self,
                 filename,
                 dataset_type='flash_particle_hdf5',
                 storage_filename=None,
                 units_override=None,
                 index_order=None,
                 index_filename=None,
                 unit_system="cgs"):
        self.index_order = validate_index_order(index_order)
        self.index_filename = index_filename

        if self._handle is not None: return
        self._handle = HDF5FileHandler(filename)
        self.refine_by = 2
        Dataset.__init__(self,
                         filename,
                         dataset_type,
                         units_override=units_override,
                         unit_system=unit_system)
        self.storage_filename = storage_filename
Пример #3
0
 def __init__(
     self,
     filename,
     dataset_type="athena_pp",
     storage_filename=None,
     parameters=None,
     units_override=None,
     unit_system="code",
     default_species_fields=None,
     magnetic_normalization="gaussian",
 ):
     self.fluid_types += ("athena_pp", )
     if parameters is None:
         parameters = {}
     self.specified_parameters = parameters
     if units_override is None:
         units_override = {}
     self._handle = HDF5FileHandler(filename)
     xrat = self._handle.attrs["RootGridX1"][2]
     yrat = self._handle.attrs["RootGridX2"][2]
     zrat = self._handle.attrs["RootGridX3"][2]
     if xrat != 1.0 or yrat != 1.0 or zrat != 1.0:
         self._index_class = AthenaPPLogarithmicIndex
         self.logarithmic = True
     else:
         self._index_class = AthenaPPHierarchy
         self.logarithmic = False
     self._magnetic_factor = get_magnetic_normalization(
         magnetic_normalization)
     Dataset.__init__(
         self,
         filename,
         dataset_type,
         units_override=units_override,
         unit_system=unit_system,
         default_species_fields=default_species_fields,
     )
     if storage_filename is None:
         storage_filename = self.basename + ".yt"
     self.storage_filename = storage_filename
Пример #4
0
 def __init__(
     self,
     filename,
     dataset_type="athena_pp",
     storage_filename=None,
     parameters=None,
     units_override=None,
     unit_system="code",
     default_species_fields=None,
 ):
     self.fluid_types += ("athena_pp",)
     if parameters is None:
         parameters = {}
     self.specified_parameters = parameters
     if units_override is None:
         units_override = {}
     self._handle = HDF5FileHandler(filename)
     xrat = self._handle.attrs["RootGridX1"][2]
     yrat = self._handle.attrs["RootGridX2"][2]
     zrat = self._handle.attrs["RootGridX3"][2]
     if xrat != 1.0 or yrat != 1.0 or zrat != 1.0:
         self._index_class = AthenaPPLogarithmicIndex
         self.logarithmic = True
     else:
         self._index_class = AthenaPPHierarchy
         self.logarithmic = False
     Dataset.__init__(
         self,
         filename,
         dataset_type,
         units_override=units_override,
         unit_system=unit_system,
         default_species_fields=default_species_fields,
     )
     self.filename = filename
     if storage_filename is None:
         storage_filename = f"{filename.split('/')[-1]}.yt"
     self.storage_filename = storage_filename
     self.backup_filename = self.filename[:-4] + "_backup.gdf"
Пример #5
0
 def __init__(
     self,
     filename,
     dataset_type="openPMD",
     storage_filename=None,
     units_override=None,
     unit_system="mks",
     **kwargs,
 ):
     self._handle = HDF5FileHandler(filename)
     self.gridsize = kwargs.pop("open_pmd_virtual_gridsize", 10 ** 9)
     self.standard_version = StrictVersion(self._handle.attrs["openPMD"].decode())
     self.iteration = kwargs.pop("iteration", None)
     self._set_paths(self._handle, path.dirname(filename), self.iteration)
     Dataset.__init__(
         self,
         filename,
         dataset_type,
         units_override=units_override,
         unit_system=unit_system,
     )
     self.storage_filename = storage_filename
     self.fluid_types += ("openPMD",)
     try:
         particles = tuple(
             str(c)
             for c in self._handle[self.base_path + self.particles_path].keys()
         )
         if len(particles) > 1:
             # Only use on-disk particle names if there is more than one species
             self.particle_types = particles
         mylog.debug("self.particle_types: %s", self.particle_types)
         self.particle_types_raw = self.particle_types
         self.particle_types = tuple(self.particle_types)
     except (KeyError, TypeError, AttributeError):
         pass
Пример #6
0
    def __init__(self,
                 filename,
                 dataset_type='chombo_hdf5',
                 storage_filename=None,
                 ini_filename=None,
                 units_override=None):
        self.fluid_types += ("chombo", )
        self._handle = HDF5FileHandler(filename)
        self.dataset_type = dataset_type

        self.geometry = "cartesian"
        self.ini_filename = ini_filename
        self.fullplotdir = os.path.abspath(filename)
        Dataset.__init__(self,
                         filename,
                         self.dataset_type,
                         units_override=units_override)
        self.storage_filename = storage_filename
        self.cosmological_simulation = False

        # These are parameters that I very much wish to get rid of.
        self.parameters["HydroMethod"] = 'chombo'
        self.parameters["DualEnergyFormalism"] = 0
        self.parameters["EOSType"] = -1  # default
Пример #7
0
    def __init__(
        self,
        filename,
        dataset_type="flash_hdf5",
        storage_filename=None,
        particle_filename=None,
        units_override=None,
        unit_system="cgs",
        default_species_fields=None,
    ):

        self.fluid_types += ("flash", )
        if self._handle is not None:
            return
        self._handle = HDF5FileHandler(filename)

        self.particle_filename = particle_filename

        if self.particle_filename is None:
            # try to guess the particle filename
            try:
                self._particle_handle = HDF5FileHandler(
                    filename.replace("plt_cnt", "part"))
                self.particle_filename = filename.replace("plt_cnt", "part")
                mylog.info("Particle file found: %s",
                           self.particle_filename.split("/")[-1])
            except OSError:
                self._particle_handle = self._handle
        else:
            # particle_filename is specified by user
            self._particle_handle = HDF5FileHandler(self.particle_filename)

        # Check if the particle file has the same time
        if self._particle_handle != self._handle:
            part_time = self._particle_handle.handle.get("real scalars")[0][1]
            plot_time = self._handle.handle.get("real scalars")[0][1]
            if not np.isclose(part_time, plot_time):
                self._particle_handle = self._handle
                mylog.warning(
                    "%s and %s are not at the same time. "
                    "This particle file will not be used.",
                    self.particle_filename,
                    filename,
                )

        # These should be explicitly obtained from the file, but for now that
        # will wait until a reorganization of the source tree and better
        # generalization.
        self.refine_by = 2

        Dataset.__init__(
            self,
            filename,
            dataset_type,
            units_override=units_override,
            unit_system=unit_system,
            default_species_fields=default_species_fields,
        )
        self.storage_filename = storage_filename

        self.parameters["HydroMethod"] = "flash"  # always PPM DE
        self.parameters["Time"] = 1.0  # default unit is 1...