Miscellaneous Tools for PySPH¶
Input/Output of data files¶
The following functions are handy functions when processing output generated by PySPH or to generate new files.
-
pysph.solver.utils.
dump
(filename, particles, solver_data, detailed_output=False, only_real=True, mpi_comm=None)[source]¶ Dump the given particles and solver data to the given filename.
Parameters: - filename (str) – Filename to dump to.
- particles (sequence(ParticleArray)) – Sequence of particle arrays to dump.
- solver_data (dict) – Additional information to dump about solver state.
- detailed_output (bool) – Specifies if all arrays should be dumped.
- only_real (bool) – Only dump the real particles.
- mpi_comm (mpi4pi.MPI.Intracomm) – An MPI communicator to use for parallel commmunications.
- mpi_comm is not passed or is set to None the local particles alone (If) –
- dumped, otherwise only rank 0 dumps the output. (are) –
-
pysph.solver.utils.
get_files
(dirname=None, fname=None, endswith='.npz')[source]¶ Get all solution files in a given directory, dirname.
Parameters: - dirname (str) – Name of directory.
- fname (str) – An initial part of the filename, if not specified use the first part of the dirname.
- endswith (str) – The extension of the file to load.
-
pysph.solver.utils.
load
(fname)[source]¶ Load and return data from an output (.npz) file dumped by PySPH.
For output file version 1, the function returns a dictionary with the keys:
"solver_data"
: Solver constants at the time of output like time, time step and iteration count."arrays"
: ParticleArrays keyed on names with the ParticleArray object as value.Parameters: fname (str) – Name of the file. Examples
>>> data = load('elliptical_drop_100.npz') >>> data.keys() ['arrays', 'solver_data'] >>> arrays = data['arrays'] >>> arrays.keys() ['fluid'] >>> fluid = arrays['fluid'] >>> type(fluid) pysph.base.particle_array.ParticleArray >>> data['solver_data'] {'count': 100, 'dt': 4.6416394784204199e-05, 't': 0.0039955855395528766}
-
pysph.solver.utils.
load_and_concatenate
(prefix, nprocs=1, directory='.', count=None)[source]¶ Load the results from multiple files.
Given a filename prefix and the number of processors, return a concatenated version of the dictionary returned via load.
Parameters: - prefix (str) – A filename prefix for the output file.
- nprocs (int) – The number of processors (files) to read
- directory (str) – The directory for the files
- count (int) – The file iteration count to read. If None, the last available one is read
Interpolator¶
This module provides a convenient class called
interpolator.Interpolator
which can be used to interpolate any
scalar values from the points onto either a mesh or a collection of other
points. SPH interpolation is performed with a simple Shepard filtering.
-
class
pysph.tools.interpolator.
InterpolateFunction
(dest, sources=None)[source]¶ Bases:
pysph.sph.equation.Equation
Parameters: - dest (str) – name of the destination particle array
- sources (list of str) – names of the source particle arrays
-
class
pysph.tools.interpolator.
Interpolator
(particle_arrays, num_points=125000, kernel=None, x=None, y=None, z=None, domain_manager=None)[source]¶ Bases:
object
Convenient class to interpolate particle properties onto a uniform grid. This is particularly handy for visualization.
The x, y, z coordinates need not be specified, and if they are not, the bounds of the interpolated domain is automatically computed and num_points number of points are used in this domain uniformly placed.
Parameters: - particle_arrays (list) – A list of particle arrays.
- num_points (int) – the number of points to interpolate on to.
- kernel (Kernel) – the kernel to use for interpolation.
- x (ndarray) – the x-coordinate of points on which to interpolate.
- y (ndarray) – the y-coordinate of points on which to interpolate.
- z (ndarray) – the z-coordinate of points on which to interpolate.
- domain_manager (DomainManager) – An optional Domain manager for periodic domains.
-
interpolate
(prop, gradient=False)[source]¶ Interpolate given property.
Parameters: - prop (str) – The name of the property to interpolate.
- gradient (bool) – Evaluate gradient and not function.
Returns: Return type: A numpy array suitably shaped with the property interpolated.
-
set_domain
(bounds, shape)[source]¶ Set the domain to interpolate into.
Parameters: - bounds (tuple) – (xmin, xmax, ymin, ymax, zmin, zmax)
- shape (tuple) – (nx, ny, nz)
-
set_interpolation_points
(x=None, y=None, z=None)[source]¶ Set the points on which we must interpolate the arrays.
If any of x, y, z is not passed it is assumed to be 0.0 and shaped like the other non-None arrays.
Parameters: - x (ndarray) – the x-coordinate of points on which to interpolate.
- y (ndarray) – the y-coordinate of points on which to interpolate.
- z (ndarray) – the z-coordinate of points on which to interpolate.
-
update_particle_arrays
(particle_arrays)[source]¶ Call this for a new set of particle arrays which have the same properties as before.
For example, if you are reading the particle array data from files, each time you load a new file a new particle array is read with the same properties. Call this function to reset the arrays.
-
pysph.tools.interpolator.
get_bounding_box
(particle_arrays, tight=False, stretch=0.05)[source]¶ Find the size of the domain given a sequence of particle arrays.
If tight is True, the bounds are tight, if not the domain is stretched along each dimension by an amount stretch specified as a percentage of the length along that dimension is added in each dimension.