Loading...
Searching...
No Matches
Cube Class Reference

Provide a data structure for regularly spaced 3D grids. More...

`#include <avogadro/core/cube.h>`

## Public Types

enum | Type { VdW , SolventAccessible , SolventExcluded , ESP , ElectronDensity , SpinDensity , MO , FromFile , None }

## Public Member Functions

Vector3 | min () const
Vector3 | max () const
Vector3 | spacing () const
Vector3i | dimensions () const
bool | setLimits (const Vector3 &min, const Vector3 &max, const Vector3i &points)
bool | setLimits (const Vector3 &min, const Vector3 &max, float spacing)
bool | setLimits (const Vector3 &min, const Vector3i &dim, float spacing)
bool | setLimits (const Vector3 &min, const Vector3i &dim, const Vector3 &spacing)
bool | setLimits (const Cube &cube)
bool | setLimits (const Molecule &mol, float spacing, float padding)
std::vector< float > * | data ()
const std::vector< float > * | data () const
bool | setData (const std::vector< float > &values)
bool | addData (const std::vector< float > &values)
std::vector< float >::const_iterator | getRowIter (int j, int k) const
unsigned int | closestIndex (const Vector3 &pos) const
Vector3i | indexVector (const Vector3 &pos) const
Vector3 | position (unsigned int index) const
float | value (int i, int j, int k) const
float | value (const Vector3i &pos) const
float | valuef (const Vector3f &pos) const
float | value (const Vector3 &pos) const
bool | setValue (unsigned int i, unsigned int j, unsigned int k, float value)
bool | setValue (unsigned int i, float value)
void | fill (float value)
bool | fillStripe (unsigned int i, unsigned int j, unsigned int kfirst, unsigned int klast, float value)
float | minValue () const
float | maxValue () const
void | setName (const std::string &name_)
std::string | name () const
void | setCubeType (Type type)
Type | cubeType () const
Mutex * | lock () const
std::array< float, 3 > | computeGradient (int i, int j, int k) const
std::array< float, 8 > | getValsCube (int i, int j, int k) const
std::array< std::array< float, 3 >, 8 > | getGradCube (int i, int j, int k) const
float | getData (int i, int j, int k) const
int | nx () const
int | ny () const
int | nz () const
unsigned int | linearIndex (int x, int y, int z) const
std::array< std::array< float, 3 >, 8 > | getPosCube (int i, int j, int k) const

## Protected Attributes

std::vector< float > | m_data
Vector3 | m_min
Vector3 | m_max
Vector3 | m_spacing
Vector3i | m_points
float | m_minValue
float | m_maxValue
std::string | m_name
Type | m_cubeType
Mutex * | m_lock

## Detailed Description

Author
  Marcus D. Hanwell
  Perminder Singh

## Member Enumeration Documentation

## Type

enum Type

Different Cube types relating to the data

## Member Function Documentation

## min()

Vector3 min | ( |  | ) | const

Returns
  The minimum point in the cube.

## max()

Vector3 max | ( |  | ) | const

Returns
  The maximum point in the cube.

## spacing()

Vector3 spacing | ( |  | ) | const

Returns
  The spacing of the grid.

## dimensions()

Vector3i dimensions | ( |  | ) | const

Returns
  The x, y and z dimensions of the cube.

## setLimits() [1/6]

bool setLimits | ( | const Vector3 & | min,
|  | const Vector3 & | max,
|  | const Vector3i & | points )

Set the limits of the cube.

Parameters

  min | The minimum point in the cube.
  max | The maximum point in the cube.
  points | The number of (integer) points in the cube.

## setLimits() [2/6]

bool setLimits | ( | const Vector3 & | min,
|  | const Vector3 & | max,
|  | float | spacing )

Set the limits of the cube.

Parameters

  min | The minimum point in the cube.
  max | The maximum point in the cube.
  spacing | The interval between points in the cube.

## setLimits() [3/6]

bool setLimits | ( | const Vector3 & | min,
|  | const Vector3i & | dim,
|  | float | spacing )

Set the limits of the cube.

Parameters

  min | The minimum point in the cube.
  dim | The integer dimensions of the cube in x, y and z.
  spacing | The interval between points in the cube.

## setLimits() [4/6]

bool setLimits | ( | const Vector3 & | min,
|  | const Vector3i & | dim,
|  | const Vector3 & | spacing )

Set the limits of the cube.

Parameters

  min | The minimum point in the cube.
  dim | The integer dimensions of the cube in x, y and z.
  spacing | The interval between points in the cube.

## setLimits() [5/6]

bool setLimits | ( | const Cube & | cube | ) |

Set the limits of the cube - copy the limits of an existing Cube.

Parameters

  cube | Existing Cube to copy the limits from.

## setLimits() [6/6]

bool setLimits | ( | const Molecule & | mol,
|  | float | spacing,
|  | float | padding )

Set the limits of the cube.

Parameters

  mol | Molecule to take limits from
  spacing | The spacing of the regular grid
  padding | Padding around the molecule

## data()

std::vector< float > * data | ( |  | ) |

Returns
  Pointer to the vector containing all the data in a one-dimensional array.

## setData()

bool setData | ( | const std::vector< float > & | values | ) |

Set the values in the cube to those passed in the vector.

## addData()

bool addData | ( | const std::vector< float > & | values | ) |

Adds the values in the cube to those passed in the vector.

## getRowIter()

std::vector< float >::const_iterator getRowIter | ( | int | j,
|  | int | k ) const

Returns
  Const iterator to the beginning of a specific row in the cube data.

## closestIndex()

unsigned int closestIndex | ( | const Vector3 & | pos | ) | const

Returns
  Index of the point closest to the position supplied.

Parameters

  pos | Position to get closest index for.

## indexVector()

Vector3i indexVector | ( | const Vector3 & | pos | ) | const

Parameters

  pos | Position to get closest index for.

Returns
  The i, j, k index closest to the position supplied.

## position()

Vector3 position | ( | unsigned int | index | ) | const

Parameters

  index | Index to be translated to a position.

Returns
  Position of the given index.

## value() [1/3]

float value | ( | int | i,
|  | int | j,
|  | int | k ) const

This function is very quick as it just returns the value at the point.

Returns
  Cube value at the integer point i, j, k.

## value() [2/3]

float value | ( | const Vector3i & | pos | ) | const

This function is very quick as it just returns the value at the point.

Returns
  Cube value at the integer point pos.

## valuef()

float valuef | ( | const Vector3f & | pos | ) | const

This function uses trilinear interpolation to find the value at points between those specified in the cube.

Returns
  Cube value at the specified position.

Warning
  This function is quite computationally expensive and should be avoided where possible.

## value() [3/3]

float value | ( | const Vector3 & | pos | ) | const

This function uses trilinear interpolation to find the value at points between those specified in the cube.

Returns
  Cube value at the specified position.

Warning
  This function is quite computationally expensive and should be avoided where possible.

## setValue() [1/2]

bool setValue | ( | unsigned int | i,
|  | unsigned int | j,
|  | unsigned int | k,
|  | float | value )

Sets the value at the specified point in the cube.

Parameters

  i | x component of the position.
  j | y component of the position.
  k | z component of the position.
  value | Value at the specified position.

## setValue() [2/2]

bool setValue | ( | unsigned int | i,
|  | float | value )

Sets the value at the specified index in the cube.

Parameters

  i | 1-dimensional index of the point to set in the cube.

## fill()

void fill | ( | float | value | ) |

Sets all indices in the cube to the specified value.

Parameters

  value | Value to fill the cube with.

## fillStripe()

bool fillStripe | ( | unsigned int | i,
|  | unsigned int | j,
|  | unsigned int | kfirst,
|  | unsigned int | klast,
|  | float | value )

Sets all indices in a Z stripe of the cube to the specified value.

Parameters

  i | x component of the position.
  j | y component of the position.
  kfirst | first z position to fill.
  klast | last z position to fill.
  value | Value to fill the stripe with.

## minValue()

float minValue | ( |  | ) | const

Returns
  The minimum value at any point in the Cube.

## maxValue()

float maxValue | ( |  | ) | const

Returns
  The maximum value at any point in the Cube.

## lock()

Mutex * lock | ( |  | ) | const

Provides locking.

## computeGradient()

std::array< float, 3 > computeGradient | ( | int | i,
|  | int | j,
|  | int | k ) const

Compute the gradient at a specific point in the cube.

Parameters

  i | x index
  j | y index
  k | z index

Returns
  Gradient vector at the specified point.

## getValsCube()

std::array< float, 8 > getValsCube | ( | int | i,
|  | int | j,
|  | int | k ) const

Get the values of the eight corners of a cube defined by the indices (i, j, k).

Parameters

  i | x index
  j | y index
  k | z index

Returns
  Array of values at the eight corners.

## getGradCube()

std::array< std::array< float, 3 >, 8 > getGradCube | ( | int | i,
|  | int | j,
|  | int | k ) const

Get the gradients at the eight corners of the cube defined by the indices (i, j, k).

Parameters

  i | x index
  j | y index
  k | z index

Returns
  Array of gradients at the eight corners. Each gradient is a 3D vector.

## getData()

float getData | ( | int | i,
|  | int | j,
|  | int | k ) const

Get the data value at the specified indices.

Parameters

  i | x index
  j | y index
  k | z index

Returns
  Value at the specified indices.

## getPosCube()

std::array< std::array< float, 3 >, 8 > getPosCube | ( | int | i,
|  | int | j,
|  | int | k ) const

Retrieves the positions of the eight corners of a cube at grid indices (i, j, k).

The indices (i, j, k) are converted to real-space positions (xpos, ypos, zpos), mapping grid indices to physical coordinates. The method returns a cube that spans one step in each of the x, y, and z directions, with step sizes defined by m_spacing.

Parameters

  i | X-index.
  j | Y-index.
  k | Z-index.

Returns
  A std::array of eight (x, y, z) coordinates representing the cube's corners.

The documentation for this class was generated from the following file:

- cube.h