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.

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.

If mpi_comm is not passed or is set to None the local particles alone are dumped, otherwise only rank 0 dumps the output.

pysph.solver.utils.get_files(dirname=None, fname=None, endswith='.npz')[source]

Get all solution files in a given directory, dirname.

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.

fname : str
Name of the file.
>>> 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.

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

dest : str
name of the destination particle array
sources : list of str
names of the source particle arrays
initialize(d_idx, d_prop, d_number_density)[source]
loop(s_idx, d_idx, s_temp_prop, d_prop, d_number_density, WIJ)[source]
post_loop(d_idx, d_prop, d_number_density)[source]
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.

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.

prop: str
The name of the property to interpolate.
gradient: bool
Evaluate gradient and not function.

A numpy array suitably shaped with the property interpolated.

set_domain(bounds, shape)[source]

Set the domain to interpolate into.

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.

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.

pysph.tools.interpolator.get_nx_ny_nz(num_points, bounds)[source]

Given a number of points to use and the bounds, return a triplet of integers for a uniform mesh with approximately that many points.

pysph.tools.interpolator.main(fname, prop, npoint)[source]

Table Of Contents

Previous topic

Module solver_interfaces

Next topic

Module zoltan: A Python wrapper for Zoltan

This Page