Lattice3D

class Lattice3D.Lattice3D(x_min, x_max, y_min, y_max, z_min, z_max, num_points_x, num_points_y, num_points_z, n_sigma_x=None, n_sigma_y=None, n_sigma_z=None)[source]

Represents a 3D lattice with evenly spaced points.

Parameters:
x_minfloat

The minimum value along the x-axis.

x_maxfloat

The maximum value along the x-axis.

y_minfloat

The minimum value along the y-axis.

y_maxfloat

The maximum value along the y-axis.

z_minfloat

The minimum value along the z-axis.

z_maxfloat

The maximum value along the z-axis.

num_points_xint

The number of points along the x-axis.

num_points_yint

The number of points along the y-axis.

num_points_zint

The number of points along the z-axis.

Attributes:
x_min_float

The minimum value along the x-axis.

x_max_float

The maximum value along the x-axis.

y_min_float

The minimum value along the y-axis.

y_max_float

The maximum value along the y-axis.

z_min_float

The minimum value along the z-axis.

z_max_float

The maximum value along the z-axis.

num_points_x_int

The number of points along the x-axis.

num_points_y_int

The number of points along the y-axis.

num_points_z_int

The number of points along the z-axis.

cell_volume_float

The volume of each cell in the lattice.

x_values_numpy.ndarray

The array of x-axis values.

y_values_numpy.ndarray

The array of y-axis values.

z_values_numpy.ndarray

The array of z-axis values.

grid_numpy.ndarray

The 3D grid containing the values at each lattice point.

Methods

set_value_by_index:

Set the value at the specified indices in the grid.

get_value_by_index:

Get the value at the specified indices in the grid.

set_value:

Set the value at the specified coordinates in the lattice.

get_value:

Get the value at the specified coordinates in the lattice.

get_coordinates:

Get the coordinates corresponding to the given indices.

find_closest_indices:

Find the closest indices in the lattice for the given coordinates.

interpolate_value:

Interpolate the value at the specified position using trilinear interpolation.

average:

Compute the element-wise average of multiple Lattice3D objects.

rescale:

Rescale the values of the lattice by a specified factor.

save_to_csv:

Save the lattice data, including metadata, to a CSV file.

load_from_csv:

Load lattice data, including metadata, from a CSV file.

visualize:

Visualize the lattice data in a 3D plot.

extract_slice:

Extract a 2D slice from the lattice along the specified axis at the given index.

save_slice_to_csv:

Save a 2D slice from the lattice along the specified axis and index to a CSV file.

interpolate_to_lattice:

Interpolate the current lattice data to a new lattice with the specified number of points along each axis.

interpolate_to_lattice_new_extent:

Interpolate the current lattice data to a new lattice with the specified number of points and extent.

reset:

Reset the values of all grid points in the lattice to zero.

add_particle_data:

Add particle data to the lattice.

Lattice3D.set_value_by_index(i, j, k, value)[source]

Set the value at the specified indices (i, j, k) in the grid.

Parameters:
iint

The index along the x-axis.

jint

The index along the y-axis.

kint

The index along the z-axis.

valueint or float

The value to set at the specified indices.

Returns:
None
Lattice3D.get_value_by_index(i, j, k)[source]

Get the value at the specified indices (i, j, k) in the grid.

Parameters:
iint

The index along the x-axis.

jint

The index along the y-axis.

kint

The index along the z-axis.

Returns:
int or float or None

The value at the specified indices if the indices are valid, otherwise None.

Lattice3D.set_value(x, y, z, value)[source]

Set the value at the specified coordinates within the lattice.

Parameters:
xint or float

The x-coordinate where the value is to be set.

yint or float

The y-coordinate where the value is to be set.

zint or float

The z-coordinate where the value is to be set.

valueint or float

The value to be set.

Raises:
ValueError

If any of the coordinates are outside their specified ranges.

Lattice3D.get_value(x, y, z)[source]

Get the value at the specified coordinates within the lattice.

Parameters:
xint or float

The x-coordinate where the value is to be retrieved.

yint or float

The y-coordinate where the value is to be retrieved.

zint or float

The z-coordinate where the value is to be retrieved.

Returns:
int or float or None

The value at the specified coordinates. Returns None if any of the coordinates are outside their specified ranges.

Lattice3D.get_coordinates(i, j, k)[source]

Retrieve the coordinates associated with the given indices.

Parameters:
iint

The index along the x-axis.

jint

The index along the y-axis.

kint

The index along the z-axis.

Returns:
tuple

A tuple containing the x, y, and z coordinates corresponding to the given indices.

Raises:
ValueError

If any of the indices are outside the specified range.

Lattice3D.find_closest_indices(x, y, z)[source]

Find the closest indices in the lattice corresponding to the given coordinates.

Parameters:
xfloat

The x-coordinate.

yfloat

The y-coordinate.

zfloat

The z-coordinate.

Returns:
tuple

A tuple of three integers representing the closest indices in the lattice for the given coordinates (x, y, z).

Lattice3D.interpolate_value(x, y, z)[source]

Interpolate the value at the specified position using trilinear interpolation.

Parameters:
xfloat

The x-coordinate.

yfloat

The y-coordinate.

zfloat

The z-coordinate.

Returns:
float or None

The interpolated value at the specified position. If the provided position is outside the lattice range, None is returned.

Lattice3D.average(*lattices)[source]

Compute the average of multiple Lattice3D objects element-wise.

Parameters:
*latticesLattice3D

Multiple Lattice3D objects to compute the average.

Returns:
Lattice3D

A new Lattice3D object containing the element-wise average.

Raises:
TypeError

If any of the operands are not of type ‘Lattice3D’.

ValueError

If the lattices do not have the same shape.

Lattice3D.rescale(factor)[source]

Rescale the values of the lattice by a specified factor.

Parameters:
factornumeric

The rescaling factor.

Returns:
None
Lattice3D.save_to_csv(filename)[source]

Save the lattice data, including metadata, to a CSV file.

Parameters:
filenamestr

The filename of the CSV file to save.

Returns:
None
Lattice3D.load_from_csv()[source]

Load lattice data, including metadata, from a CSV file.

Parameters:
filenamestr

The filename of the CSV file to load.

Returns:
latticeLattice3D

The loaded Lattice3D object containing the data and metadata.

Lattice3D.visualize()[source]

Visualize the lattice data in a 3D plot.

The lattice values are represented as a scatter plot in a 3D space.

Lattice3D.extract_slice(axis, index)[source]

Extract a 2D slice from the lattice along the specified axis at the given index.

Parameters:
axisstr

The axis along which to extract the slice. Must be ‘x’, ‘y’, or ‘z’.

indexint

The index of the slice along the specified axis.

Returns:
A tuple containing the following:
slice_datandarray

The 2D slice data extracted from the lattice.

slice_valuesndarray

The values corresponding to the axis perpendicular to the slice.

slice_labelstr

The label describing the slice plane.

Raises:
ValueError

If the axis parameter is invalid or the index is out of range.

Lattice3D.save_slice_to_csv(axis, index, filename)[source]

Save a 2D slice from the lattice along the specified axis and index to a CSV file.

Parameters:
axisstr

The axis along which to extract the slice. Must be ‘x’, ‘y’, or ‘z’.

indexint

The index of the slice along the specified axis.

filenamestr

The name of the CSV file to save the slice data.

Raises:
ValueError

If the axis parameter is invalid or the index is out of range.

Lattice3D.interpolate_to_lattice(num_points_x, num_points_y, num_points_z)[source]

Interpolate the current lattice data to a new lattice with the specified number of points along each axis.

Parameters:
num_points_xint

The number of points along the X-axis of the new lattice.

num_points_yint

The number of points along the Y-axis of the new lattice.

num_points_zint

The number of points along the Z-axis of the new lattice.

Returns:
Lattice3D

A new Lattice3D object containing the interpolated data.

Notes

This method performs spline interpolation to generate the values for each grid point of the new lattice. The interpolation is based on the current lattice data and the desired number of points along each axis.

Lattice3D.interpolate_to_lattice_new_extent(num_points_x, num_points_y, num_points_z, x_min, x_max, y_min, y_max, z_min, z_max)[source]

Interpolate the current lattice data to a new lattice with the specified number of points and extent.

Parameters:
num_points_xint

The number of points along the X-axis of the new lattice.

num_points_yint

The number of points along the Y-axis of the new lattice.

num_points_zint

The number of points along the Z-axis of the new lattice.

x_minfloat

The minimum value of the X-axis for the new lattice extent.

x_maxfloat

The maximum value of the X-axis for the new lattice extent.

y_minfloat

The minimum value of the Y-axis for the new lattice extent.

y_maxfloat

The maximum value of the Y-axis for the new lattice extent.

z_minfloat

The minimum value of the Z-axis for the new lattice extent.

z_maxfloat

The maximum value of the Z-axis for the new lattice extent.

Returns:
Lattice3D

A new Lattice3D object containing the interpolated data.

Notes

This method performs spline interpolation to generate the values for each grid point of the new lattice. The interpolation is based on the current lattice data and the desired number of points and extent along each axis.

Lattice3D.reset()[source]

Reset the values of all grid points in the lattice to zero.

Notes

This method iterates over all grid points in the lattice and sets their values to zero.

Lattice3D.add_particle_data(particle_data, sigma, quantity, add=False)[source]

Add particle data to the lattice.

Parameters:
particle_datalist

A list of Particle objects containing the particle data.

sigmafloat

The standard deviation of the Gaussian kernel used for smearing the particle data.

quantitystr

The quantity of the particle data to be added. Supported values are ‘energy density’, ‘number’, ‘charge’, and ‘baryon number’.

addbool, optional

Specifies whether to add the particle data to the existing lattice values or replace them. If True, the particle data will be added to the existing lattice values. If False (default), the lattice values will be reset before adding the particle data.

Raises:
ValueError

If an unknown quantity is specified.

Notes

This method calculates the smearing of the particle data using a Gaussian kernel centered at each particle’s coordinates. The smeared values are added to the corresponding grid points in the lattice.

The Gaussian kernel is defined by the provided standard deviation sigma. The larger the sigma value, the smoother the smearing effect.

The supported quantities for particle data are as follows:

  • ‘energy density’: Uses the particle’s energy (E) as the value to be added to the lattice.

  • ‘number’: Adds a value of 1.0 to each grid point for each particle.

  • ‘charge’: Uses the particle’s charge as the value to be added to the lattice.

  • ‘baryon number’: Uses the particle’s baryon number as the value to be added to the lattice.