desc.grid.Grid

class desc.grid.Grid(nodes, spacing=None, weights=None, coordinates='rtz', period=None, NFP=1, source_grid=None, sort=False, is_meshgrid=False, jitable=False, **kwargs)Source

Collocation grid with custom node placement.

Unlike subclasses LinearGrid and ConcentricGrid, the base Grid allows the user to pass in a custom set of collocation nodes.

Parameters:
  • nodes (ndarray of float, size(num_nodes,3)) – Node coordinates, in (rho,theta,zeta)

  • spacing (ndarray of float, size(num_nodes, 3)) – Spacing between nodes in each direction.

  • weights (ndarray of float, size(num_nodes, )) – Quadrature weights for each node.

  • coordinates (str) – Coordinates that are specified by the nodes. raz : rho, alpha, zeta rvp : rho, theta_PEST, phi rtz : rho, theta, zeta

  • period (tuple of float) – Assumed periodicity for each coordinate. Use np.inf to denote no periodicity.

  • NFP (int) – Number of field periods (Default = 1). Change this only if your nodes are placed within one field period.

  • source_grid (Grid) – Grid from which coordinates were mapped from.

  • sort (bool) – Whether to sort the nodes for use with FFT method.

  • is_meshgrid (bool) – Whether this grid is a tensor-product grid. Let the tuple (r, p, t) ∈ R³ denote a radial, poloidal, and toroidal coordinate value. The is_meshgrid flag denotes whether any coordinate can be iterated over along the relevant axis of the reshaped grid: nodes.reshape((num_poloidal, num_radial, num_toroidal, 3), order=”F”).

  • jitable (bool) – Whether to skip certain checks and conditionals that don’t work under jit. Allows grid to be created on the fly with custom nodes, but weights, symmetry etc. may be wrong if grid contains duplicate nodes.

Methods

compress(x[, surface_label])

Return elements of x at indices of unique surface label values.

copy([deepcopy])

Return a (deep)copy of this object.

copy_data_from_other(x, other_grid[, ...])

Copy data x from other_grid to this grid at matching surface label.

create_meshgrid(nodes[, spacing, ...])

Create a tensor-product grid from the given coordinates in a jitable manner.

equiv(other)

Compare equivalence between DESC objects.

expand(x[, surface_label])

Expand x by duplicating elements to match the grid's pattern.

get_label(label)

Get general label that specifies direction given label.

load(load_from[, file_format])

Initialize from file.

meshgrid_flatten(x, order)

Flatten data to match standard ordering.

meshgrid_reshape(x, order)

Reshape data to match grid coordinates.

replace_at_axis(x, y[, copy])

Replace elements of x with elements of y at the axis of grid.

save(file_name[, file_format, file_mode])

Save the object.

Attributes

L

Radial grid resolution.

M

Poloidal grid resolution.

N

Toroidal grid resolution.

NFP

Number of (toroidal) field periods.

axis

Indices of nodes at magnetic axis.

can_fft2

Whether this grid is compatible with 2D FFT.

coordinates

Coordinates specified by the nodes.

fft_poloidal

whether this grid is compatible with fft in the poloidal direction.

fft_toroidal

whether this grid is compatible with fft in the toroidal direction.

inverse_alpha_idx

Indices that recover field line poloidal angles.

inverse_poloidal_idx

Indices that recover the unique poloidal coordinates.

inverse_rho_idx

Indices of unique_rho_idx that recover the rho coordinates.

inverse_theta_PEST_idx

Indices that recover unique straight field line poloidal angles.

inverse_theta_idx

Indices that recover unique theta coordinates.

inverse_zeta_idx

Indices of unique_zeta_idx that recover the zeta coordinates.

is_meshgrid

Whether this grid is a tensor-product grid.

node_pattern

Pattern for placement of nodes in (rho,theta,zeta).

nodes

Node coordinates, in (rho,theta,zeta).

num_alpha

Number of unique field line poloidal angles.

num_nodes

Total number of nodes.

num_poloidal

Number of unique poloidal angle coordinates.

num_rho

Number of unique rho coordinates.

num_theta

Number of unique theta coordinates.

num_theta_PEST

Number of unique straight field line poloidal angles.

num_zeta

Number of unique zeta coordinates.

period

Periodicity of coordinates.

source_grid

Coordinates from which this grid was mapped from.

spacing

Quadrature weights for integration over surfaces.

sym

True for poloidal up/down symmetry, False otherwise.

unique_alpha_idx

Indices of unique field line poloidal angles.

unique_poloidal_idx

Indices of unique poloidal angle coordinates.

unique_rho_idx

Indices of unique rho coordinates.

unique_theta_PEST_idx

Indices of unique straight field line poloidal angles.

unique_theta_idx

Indices of unique theta coordinates.

unique_zeta_idx

Indices of unique zeta coordinates.

weights

Weight for each node, either exact quadrature or volume based.