kwave.kgrid module

class kWaveGrid[source]

Bases: object

kWaveGrid is the grid class used across the k-Wave Toolbox. An object of the kWaveGrid class contains the grid coordinates and wavenumber matrices used within the simulation and reconstruction functions in k-Wave. The grid matrices are indexed as: (x, 1) in 1D; (x, y) in 2D; and (x, y, z) in 3D. The grid is assumed to be a regularly spaced Cartesian grid, with grid spacing given by dx, dy, dz (typically the grid spacing in each direction is constant).

CFL_DEFAULT = 0.3
MACHINE_PRECISION = 2.220446049250313e-14
N

grid size in each dimension [grid points]

Nt

number of time steps [s]

property Nx

grid size in x-direction [grid points]

property Ny

grid size in y-direction [grid points]

property Nz

grid size in z-direction [grid points]

__init__(N, spacing)[source]
Parameters:
  • N – grid size in each dimension [grid points]

  • spacing – grid point spacing in each direction [m]

dim

Number of dimensions (1, 2 or 3)

dt

size of time step [s]

dudn

transformation gradients between uniform and staggered grids

dudn_sg

transformation gradients between uniform and staggered grids

property dx

grid point spacing in x-direction [m]

property dy

grid point spacing in y-direction [m]

property dz

grid point spacing in z-direction [m]

highest_prime_factors(axisymmetric=None)[source]

calculate the highest prime factors

Parameters:

axisymmetric – Axisymmetric code or None

Returns:

Vector of three elements

Return type:

ndarray

k

scalar wavenumber

k_dtt(dtt_type)[source]

compute the individual wavenumber vectors, where dtt_type is the type of discrete trigonometric transform, which corresponds to the assumed input symmetry of the input function, where:

  1. DCT-I WSWS

  2. DCT-II HSHS

  3. DCT-III WSWA

  4. DCT-IV HSHA

  5. DST-I WAWA

  6. DST-II HAHA

  7. DST-III WAWS

  8. DST-IV HAHS

Parameters:

dtt_type

Returns:

property k_max

Maximum supported spatial frequency in the 3 directions [rad/m]

Returns:

Vector of 3 elements each in [rad/m]. Value for higher dimensions set to NaN

property k_max_all

Maximum supported spatial frequency in all directions [rad/m] Originally k_max in kWave.kWaveGrid!

Returns:

Scalar in [rad/m]

k_vec

Nx x 1 vector of wavenumber components in the x-direction [rad/m]

property kx

Nx x Ny x Nz grid containing repeated copies of the wavenumber components in the x-direction [rad/m]

Returns:

plaid xn matrix

kx_vec_dtt(dtt_type)[source]

Compute the DTT wavenumber vector in the x-direction

Parameters:

dtt_type

Returns:

property ky

Nx x Ny x Nz grid containing repeated copies of the wavenumber components in the y-direction [rad/m]

Returns:

plaid yn matrix

ky_vec_dtt(dtt_type)[source]

Compute the DTT wavenumber vector in the y-direction

Parameters:

dtt_type

Returns:

property kz

Nx x Ny x Nz grid containing repeated copies of the wavenumber components in the z-direction [rad/m]

Returns:

plaid zn matrix

kz_vec_dtt(dtt_type)[source]

Compute the DTT wavenumber vector in the z-direction

Parameters:

dtt_type

Returns:

static makeDTTDim(Nx, dx, dtt_type)[source]

Create the DTT grid parameters for a single spatial direction

Parameters:
  • Nx

  • dx

  • dtt_type

Returns:

static makeDim(num_points, spacing)[source]

Create the grid parameters for a single spatial direction

Parameters:
  • num_points

  • spacing

Returns:

makeTime(c, cfl=0.3, t_end=None)[source]

Compute Nt and dt based on the cfl number and grid size, where the number of time-steps is chosen based on the time it takes to travel from one corner of the grid to the geometrically opposite corner. Note, if c is given as a matrix, the calculation for dt is based on the maximum value, and the calculation for t_end based on the minimum value.

Parameters:
  • c – sound speed

  • cfl – convergence condition by Courant–Friedrichs–Lewy

  • t_end – final time step

Returns:

Nothing

n_vec

position vectors for the grid points in [0, 1]

n_vec_sg

position vectors for the staggered grid points in [0, 1]

nonuniform

flag that indicates grid non-uniformity

setNUGrid(dim, n_vec, dudn, n_vec_sg, dudn_sg)[source]

Function to set non-uniform grid parameters in specified dimension

Parameters:
  • dim

  • n_vec

  • dudn

  • n_vec_sg

  • dudn_sg

Returns:

setTime(Nt, dt)[source]

Set Nt and dt based on user input

Parameters:
  • Nt

  • dt

Return type:

None

Returns: None

property size

Size of grid in the all directions [m]

spacing

grid point spacing in each direction [m]

property t_array

time array [s]

property total_grid_points: ndarray

Total number of grid points (equal to Nx * Ny * Nz)

property x

Nx x Ny x Nz grid containing repeated copies of the grid coordinates in the x-direction [m]

property x_size

Size of grid in the x-direction [m]

property x_vec

Nx x 1 vector of the grid coordinates in the x-direction [m]

property xn

3D plaid non-uniform spatial grids

Returns:

plaid xn matrix

property y

Nx x Ny x Nz grid containing repeated copies of the grid coordinates in the y-direction [m]

property y_size

Size of grid in the y-direction [m]

property y_vec

Ny x 1 vector of the grid coordinates in the y-direction [m]

property yn

3D plaid non-uniform spatial grids

Returns:

plaid yn matrix

property z

Nx x Ny x Nz grid containing repeated copies of the grid coordinates in the z-direction [m]

property z_size

Size of grid in the z-direction [m]

property z_vec

Nz x 1 vector of the grid coordinates in the z-direction [m]

property zn

3D plaid non-uniform spatial grids :returns: plaid zn matrix